第 3 章 为 Keepalived 设置负载均衡器先决条件
使用
keepalived
的 Load Balancer 由两个基本组组成: LVS 路由器和真实服务器。为防止单点故障,每个组应至少有两个成员。
LVS 路由器组应当包含两个运行 Red Hat Enterprise Linux 的相同或非常类似的系统。个用作活动的 LVS 路由器,而另一个则保持热备用模式,因此它们需要尽可能接近相同的功能。
在为实际服务器组选择和配置硬件之前,请确定要使用的三种负载平衡器拓扑中的哪一种。
3.1. NAT 负载平衡器网络
NAT 拓扑允许在使用现有硬件时有很大的灵活性,但处理大型负载的能力有限,因为所有数据包都通过负载平衡器路由器进入和传出池。
- 网络布局
- 从网络布局视角配置使用 NAT 路由的 Load Balancer 拓扑最为简便,因为只需要一个访问点即可访问公共网络。实际的服务器位于专用网络上,并通过 LVS 路由器响应所有请求。
- 硬件
- 在 NAT 拓扑中,每个实际服务器只需要一个 NIC,因为它将仅响应 LVS 路由器。另一方面,LVS 路由器需要两个 NIC 来路由两个网络之间的流量。由于此拓扑在 LVS 路由器上创建网络瓶颈,因此可在每个 LVS 路由器上利用千兆位以太网 NIC 来增加 LVS 路由器可以处理的带宽。如果 LVS 路由器上使用了千兆位以太网,任何将实际服务器连接到 LVS 路由器的交换机都必须至少具有两个千兆位以太网端口才能有效地处理负载。
- 软件
- 由于 NAT 拓扑需要将 iptables 用于某些配置,所以 Keepalived 之外可能存在大量软件配置。特别是,FTP 服务和使用防火墙标记需要额外手动配置 LVS 路由器以正确路由请求。
3.1.1. 使用 NAT 为负载平衡器配置网络接口
要使用 NAT 设置负载平衡器,您必须首先为公共网络和 LVS 路由器上的专用网络配置网络接口。在本例中,LVS 路由器的公共接口(
eth0
)将位于 203.0.113.0/24 网络上,并且链接到实际服务器(eth
1)的私有接口将位于 10.11.12.0/24 网络中。
重要
编写本文时,NetworkManager 服务与 Load Balancer 不兼容。特别是,当 SLAAC 分配了 IPv6 地址时,IPv6 VIP 将无法正常工作。因此,这里显示的示例使用配置文件和 网络服务。
在 active 或 primary LVS 路由器节点上,公共接口的网络配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
类似如下:
DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=203.0.113.9 NETMASK=255.255.255.0 GATEWAY=203.0.113.254
LVS 路由器上的专用 NAT 接口的配置文件
/etc/sysconfig/network-scripts/ifcfg-eth1
类似如下:
DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=10.11.12.9 NETMASK=255.255.255.0
VIP 地址必须与静态地址不同,但在同一范围内。在本例中,LVS 路由器的公共接口的 VIP 可以配置为 203.0.113.10,私有接口的 VIP 可以是 10.11.12.10。VIP 地址由
/etc/keepalived/keepalived.conf
文件中的 virtual_ipaddress
选项设置。如需更多信息,请参阅 第 4.1 节 “基本 Keepalived 配置”。
另外,请确保真实服务器将请求路由回 NAT 接口的 VIP。
重要
本节中的示例以太网接口配置设置用于 LVS 路由器的实际 IP 地址,而非浮动 IP 地址。
在配置主 LVS 路由器节点的网络接口后,配置备份 LVS 路由器的实际网络接口(请注意,IP 地址都不与网络上的任何其他 IP 地址冲突)。
重要
确保备份节点上的每个接口服务与主节点上的接口相同的网络。例如,如果 eth0 连接到主节点上的公共网络,它还必须连接到备份节点上的公共网络。
3.1.2. 实时服务器上的路由
在 NAT 拓扑中配置实际服务器网络接口时,要记住最重要的事项是为 LVS 路由器的 NAT 浮动 IP 地址设置网关。在本例中,该地址为 10.11.12.10。
注意
网络接口在实际服务器上启动后,计算机将无法以其他方式 ping 或连接到公共网络。这是正常的。但是,您将能够 ping LVS 路由器专用接口的实际 IP,本例中为 10.11.12.9。
实际服务器的配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
文件可能类似如下:
DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=10.11.12.1 NETMASK=255.255.255.0 GATEWAY=10.11.12.10
警告
如果一个真实服务器配置了
GATEWAY=
行,则第一个网络接口将获得网关。因此,如果同时配置了 eth0
和 eth1
,并且 eth1
用于 Load Balancer,则实际服务器可能无法正确路由请求。
最好在
/etc/sysconfig/network-scripts/
目录中设置 ONBOOT=no
来关闭额外的网络接口,或者确保在接口中正确设置了网关。
3.1.3. 在 LVS 路由器中启用 NAT 路由
在简单的 NAT 负载平衡器配置中,每个集群服务仅使用一个端口,如 HTTP 在端口 80 上,管理员只需要启用 LVS 路由器上的数据包转发,以便在外部世界和实际服务器之间正确路由请求。但是,当集群服务需要多个端口在用户会话期间进入同一实际服务器时,需要进行更多的配置。
在 LVS 路由器上启用转发并且设置了实际服务器并设置了集群服务后,请使用
keepalived
配置 IP 信息。
警告
不要手动编辑网络配置文件或使用网络配置工具,为
eth0
或 eth1
配置浮动 IP。反之,使用 keepalived.conf
文件配置它们。
完成后,启动
keepalived
服务。启动并运行后,活动 LVS 路由器将开始将请求路由到实际服务器的池。