我们有 5 台物理服务器。全部相同。16 GB RAM,4x146 10k sas,raid 10。
因此,我们需要高可用性。目前的计划如下:
2 个带有 Heartbeat 的盒子用于负载平衡。此时 nginx 配置为平衡器。
那么问题就是 web 和 mysql。我计划设置 2 个运行 mysql 和 nginx 的机器。在这些机器之间设置 master <-> master 中的 mysql 复制。然后添加已复制 mysql 的最新机器。对于此模型,每个 web 服务器都连接到其本地 mysql 服务器。(以最小化网络延迟)。
另一种模型是将两个盒子(nginx)放在 HA 中,将另外两个盒子放在 mysql 主/从中。但在这个模型中,负载均衡器是单独的......
或者我需要另一种设置。基本上我不需要知道如何做,而是需要选择哪种模型。我们需要处理大量流量(大约 20k 个请求/秒)。
答案1
三条建议。
1.)考虑使用 nginx 上的 HA Proxy 来实现负载平衡。
[编辑]
考虑使用 HttpUpstream 上的 HA Proxy 时需要考虑的事项:
HttpUpstream:
- “该模块在后端服务器之间提供简单的负载平衡(循环和客户端 IP)。”
HA 代理:
- TCP 负载均衡
- 热重载
- 连接队列
- 综合统计页面
- 套接字通信,包括将服务器标记为关闭的能力
- ACL
- “粘性”负载平衡
- ETC
- ETC
- ETC
我认为 HA Proxy 确实是可用的免费负载均衡器。
[编辑/]
2.) 查看缓存。针对生产数据样本(或类似数据)分析生产查询。每秒 20000 次访问数据库可能会破坏您的数据库服务器。假设每个请求仅产生一个事务,则每天有 17 亿个事务。这可是个大数目。如果可以使用缓存,Squid、memcached、redis 等可以帮您解决此问题。
3.) 我有没有提过分析?
如果不知道应用程序的资源使用模式,就很难提出行动方案。例如,您可能会发现必须将 MySQL 放在两个专用盒子上才能满足查询需求。另一方面,HA 代理的内存和 CPU 效率极高。您可能可以通过让 HA 代理设置在两个 Web 头上共享资源来解决问题。