ruby-on-rails - 使用集群扩展——最佳策略

标签 ruby-on-rails database scalability cluster-computing

我正在考虑通过服务器集群进行扩展的最佳策略。我知道没有硬性规定,但我很好奇人们对这些场景的看法:

  1. 组合应用程序/数据库服务器集群,使用 dnsmadeeasy 进行循环(具有故障转移)平衡。数据库使用复制进行同步。优点是可以通过向集群添加另一台服务器来轻松增加容量,并且自然具有故障安全性。

  2. 应用程序服务器集群,再次使用 dnsmadeeasy 进行循环负载平衡(具有故障转移),所有报告都向后面的大型数据库服务器报告。添加应用程序服务器很容易,但单个数据库服务器会产生单个故障点。可以添加具有复制功能的热备用。

  3. 使用两个数据库的应用服务器集群(如上所述),一个只处理读取,一个只处理写入。

此外,如果您有其他想法,请提出建议。数据大多是非规范化和非关系型的,数据库是 50/50 读写。

最佳答案

拿2台物理机,制作Xen服务器

  • A. Xen Base 阿尔法
  • B. Xen Base 测试版

每个虚拟机中包含三个虚拟机:

  1. 用于静态的“Web”服务器(css​​、jpg、js...)+用于动态请求的负载平衡代理(apache+mod-proxy-balancer、nginx+fair)
  2. 用于动态请求的“app”服务器(mongrel、thin、passenger)
  3. “数据库”服务器(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/

相关文章:

ios - 在具有关系的实体中添加数据

php - Ajax:从数据库中获取最后一行

database - 访问远程数据库的最佳方式 : via webservice or direct DB-access?

amazon-ec2 - 您可以创建自己的 EC2 自动扩展触发器吗?

PHP Mysql 跟踪访问者的可扩展性

javascript - 通过 AJAX 更改 link_to 参数

ruby-on-rails - RubyMine 中禁用所有运行/调试选项

ruby-on-rails - 更新哈希中的哈希的最佳方法是什么?

search - IMDB 搜索为何如此快速?

ruby-on-rails - 获取 mongoid 生成的原始 mongo 数据库查询表达式