我有 3 台服务器,其中 1 台用作负载均衡器,另外 2 台用作托管一些 jsp 页面的 Web 服务器 (apache tomcat)。我想在主动/被动模式下添加一个负载均衡器以避免 SPOF,以下是预期的设置。
lb1--> eth0=123.123.123.123, eth1=192.168.1.5
web1--> eth1=192.168.1.6
web2--> eth1=192.168.1.7
lb2--> eth0=123.123.123.124, eth1=192.168.1.8
我见过许多heartbeat
配置可以做到这一点,但我不确定在虚拟 IP 共享的情况下,我是否试图在没有任何 IP 或 IP 共享请求(Rackspace)的情况下实现这一点。一般来说,浮动/虚拟 IP 是文件public
中在 lbs 之间共享的 IP haresource
,我想问是否有可能使用虚拟private
IP 来做到这一点,以避免产生额外的公共 IP 成本。但最终的输出应该是,lb2
应该代表lb1
lb1 是否关闭进行回答。
还有一件事需要考虑,所有注册的 DNS 域名(站点名称)都指向公共 IP(123.123.123.123),然后lb1
重定向到后端 Web 服务器(当然我知道 lb2 上维护了相同的配置)。如果可能的话,有人能提供一些提示,使用上述最小设置来实现这一点,而无需请求另一个公共 IP。我是 heartbeat 的新手!
提前致谢!
答案1
将两个 LB 配置为侦听同一个公共 IP 地址。被动 LB 将监视主动 LB 是否发生故障,并在主动 LB 发生故障时开始处理请求。
需要记住的要点:
- 上游链路和路由器仍将存在单点故障。
- 如果两个 LB 都处于活动状态,您可能会遇到访问问题。
编辑:如果每个 LB 都有一个公共 IP 地址,那么您确实需要一个主动/主动配置。否则,您很可能无法响应一半的请求。主动/被动应该使用单个 IP 地址来处理传入流量。当主动节点死亡时,被动节点会进行地址接管。
在主动/主动模式下,两个 LB 将具有不同的公共 IP。通常,会有一个或多个 DNS 名称在其条目中列出两个 IP。较简单的系统将在两个 LB 之间使用正常的 DNS 轮询平衡。更复杂的系统将在 DNS 条目上使用短 TTL,并尝试通过将最不繁忙的 LB 的地址作为第一个 DNS 条目来平衡负载。
在主动/被动模式下,两个 LB 处理相同的公共 IP 地址(只有当前主动节点会传递该地址的流量)。被动节点可以使用多种心跳监控技术来监控主动节点。