我正在设计一个新的服务器结构,计划使用两台 Apache 主力机,并在它们后面安装一个 SQL 数据库。我想知道在 Apache 服务器之间镜像数据的最佳方法是什么。这些服务器上的用户数据应该受到限制,因为大多数数据将存储在 S3 中。
从我迄今为止所做的初步研究来看,我已经阅读了有关 GlusterFS 和 DRBD 的信息,但是一个简单的 rsync 脚本能解决问题吗?
答案1
老实说,我不建议在 Apache 机器之间进行实时复制。让它们拥有自己的代码,或者时不时地从“主”服务器进行 rsync。实时(或接近实时)需要进行大量文件检查,但在 99% 的时间内,这些检查都是不必要的。
我个人建议采用三层。
负载平衡/Web 服务器(你的 http/php 进程)
文件服务器(需要在所有网络节点上共享的代码/文件)
数据库服务器(您的后端数据库)
比在服务器之间进行完全复制简单得多。
如果您没有能力拥有专用的文件服务器(NFS/ect),让“Web2”挂载“Web1 的用户上传”,两个网络服务器都能够读取和写入共享区域,除非您更新网站代码,否则不需要同步等。
Web1
/var/www/website/www
/var/www/website/_files
web2
/var/www/website/www
/var/www/website/_files (NFS mouned to Web1)
/var/www/website/_files.bak (rsync copy from web1 incase web1 explodes)
就存储而言,这两台服务器都接近实时,它们是冗余的,并且您不必添加任何复杂的同步废话。
编辑:
http://www.migrate2cloud.com/blog/how-to-setup-nfs-server-on-aws-ec2
有一个关于如何在 EC2 实例上使用 NFS 的指南。