我正在考虑通过服务器集群进行扩展的最佳策略。我知道没有硬性规定,但我很好奇人们对这些场景的看法:
组合应用程序/数据库服务器集群,使用 dnsmadeeasy 进行循环(具有故障转移)平衡。数据库使用复制进行同步。优点是可以通过向集群添加另一台服务器来轻松增加容量,并且自然具有故障安全性。
应用程序服务器集群,再次使用 dnsmadeeasy 进行循环负载平衡(具有故障转移),所有报告都向后面的大型数据库服务器报告。添加应用程序服务器很容易,但单个数据库服务器会产生单个故障点。可以添加具有复制功能的热备用。
使用两个数据库的应用服务器集群(如上所述),一个只处理读取,一个只处理写入。
此外,如果您有其他想法,请提出建议。数据大多是非规范化和非关系型的,数据库是 50/50 读写。
最佳答案
拿2台物理机,制作Xen服务器
- A. Xen Base 阿尔法
- B. Xen Base 测试版
每个虚拟机中包含三个虚拟机:
- 用于静态的“Web”服务器(css、jpg、js...)+用于动态请求的负载平衡代理(apache+mod-proxy-balancer、nginx+fair)
- 用于动态请求的“app”服务器(mongrel、thin、passenger)
- “数据库”服务器(mySQL、PostgreSQL...)
那么你的函数分布可以是这样的:
- A1 拥有您的公共(public) IP 并处理对 A2 和 B2 的请求
- B1 对 A1 执行 ping 操作,并在 ping 失败时接管
- A2和B2采取动态请求查询A3数据
- A3 是您的专用数据服务器
- B3 每秒备份 A3,并提供只读访问权限以进行复制、备份等。 如果 A3 无法访问,B3 会 ping A3 并成为主设备
希望这能对您有所帮助,或者至少给您一些想法。
关于ruby-on-rails - 使用集群扩展——最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837847/