创建仅具有 2 台服务器的冗余环境(因此无需第三台服务器来处理负载平衡)

创建仅具有 2 台服务器的冗余环境(因此无需第三台服务器来处理负载平衡)

首先,如果这个问题之前已经回答过,我很抱歉,但我已经搜索了一段时间,似乎找不到(或理解)答案。

我有两台安装了 centOS 的物理服务器。其中一台已经托管了一些网站和数据库。现在我想通过使用带故障转移的负载平衡来创建一个冗余环境。基本上,我想让两台服务器都运行,根据当时打开的连接数量来分配工作,当其中一台服务器崩溃时,让另一台服务器接管所有工作。

我遇到的每个示例都在 2 个 Web 服务器前面安装了第 3 个 haproxy 服务器。但是只使用 2 个服务器是否可行(例如,在两个 Web 服务器上都安装 haproxy)?或者有更好的方法来处理这个问题吗?

提前致谢。

答案1

对此有多种解决方案。

最简单的设置可能是这样的:

  • 使用 DRBD 在服务器之间同步网站数据

  • 在两台服务器之间运行 MySQL 主从设置。这意味着所有数据库连接都将转到一台服务器。如果该服务器发生故障,您必须切换到从服务器(并将其提升为主服务器)。您可以自动执行此操作。主主复制可能工作量太大,除非您也是所有网站的开发人员。

  • 进行循环 DNS 负载平衡(适用于大多数新浏览器,它会不断尝试,直到找到可用的 IP)。另一种解决方案是使用 HAProxy。在这种情况下,一台服务器还将充当两台服务器的负载平衡器。当主服务器发生故障时,您可以使用 keepalived 自动切换到第二个 HAProxy 实例(在服务器 2 上)。

答案2

我不确定我是否会将 DRBD 称为简单,也许很棒但并不容易。正如 Jeroen 所建议的:可以使用循环 DNS 或 HAProxy 将流量路由到两个节点,但您的实际问题是您的数据库只在一个地方。因此,同时访问两个服务器可能不是您想要的。DRBD 将确保存储在服务器之间复制(解决问题)。或者标准架构是在 N+1 Web 服务器前面的 2*HAProxy,数据库位于单独的高可用性平台上(可能是主/从,可能是共享存储,可能是 DRBD,也可能是 memched)。

相关内容