网站选择哪种高可用性模型(nginx/mysql)

网站选择哪种高可用性模型(nginx/mysql)

我们有 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 头上共享资源来解决问题。

相关内容