哪种高可用性模式可供网站select(nginx / mysql)

我们有5台物理服务器。 全部完全相同。 突击search16克,4×146×10克。

所以,我们需要高可用性。 目前的计划如下:

2个带心跳的盒子用于负载平衡。 此时nginx被configuration为平衡器。

那么问题是networking和MySQL。 我打算设置2个运行mysql和nginx的框。 在这些框之间在master < – > master中设置mysql复制。 然后添加已复制mysql的最新的框。 对于这个模型,每个web服务器连接到它的本地mysql服务器。 (以最小化networking延迟)。

我的模型的架构

其他模式是把两个盒子(nginx)放在HA中,另外两个盒子放在mysql master / slave中。 但在这个模型负载平衡器是孤独的…. –

或者我需要另一个设置。 基本上我不需要怎么做,但select哪种模型。 我们需要处理大量的stream量(约20k /秒)。

三个build议。

1.)考虑通过nginx使用HA代理来实现负载均衡。

[编辑]
考虑通过HttpUpstream进行HA代理时需要考虑的事项:

HttpUpstream

  • “这个模块在后端服务器上提供了简单的负载平衡(循环和客户端IP)。”

HA代理:

  • TCP负载平衡
  • 热重新加载
  • 连接队列
  • 综合统计页面
  • 套接字通信包括将服务器标记为closures的能力
  • ACL的
  • “粘滞”负载平衡
  • 等等
  • 等等
  • 等等

HA代理是真正的免费负载平衡器IMO。
[编辑/]

2)研究caching。 针对生产(或类似)数据的样本进行configuration生产查询。 每秒钟敲击数据库20k次可能会破坏数据库服务器。 假设每个请求只产生一笔交易,那么这是每天17亿笔交易。 好多啊。 如果可以caching的话,Squid,memcached,redis等可以把你的培根保存在这里。

3.)我提到了分析?

不知道您的应用程序资源使用模式,很难build议采取行动。 例如,你可能会发现你必须把MySQL放在两个专用的盒子上才能满足查询需求。 另一方面,高可用性代理是非常有效的内存和CPU。 您可能会放弃让您的HA代理安装共享您的两个网站头上的资源。