架构
LVS服务器将来自的ens33的HTTP数据包(客户请求)通过NAT转发到的Backend01和Backend02服务器。
将两个后端Web服务器的默认网关更改为LVS的内部IP地址。 (示例中为10.0.0.100)
LVS的内部IP地址(示例中为10.0.0.100)不需要设置网关。
+----------------+-----------------+
| |
192.168.1.10|ens33 --- VIP:192.168.1.5 --- ens33|192.168.1.11
+-------+--------+ +--------+-------+
| LVS+Keepalived | | LVS+Keepalived |
+-------+--------+ +--------+-------+
10.0.0.10|ens37 ----- VIP:10.0.0.100 ---- ens37|10.0.0.11
| |
+----------------+-----------------+
|
+------------+ | +------------+
| Backend01 |10.0.0.71 | 10.0.0.72| Backend02 |
| Web Server +------------+-------------+ Web Server |
| |ens33 ens33| |
+------------+ +------------+
lvs 服务器安装配置
1 |
|
防火墙
## 配置vrrp广播
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" destination address="224.0.0.18" protocol value="vrrp" accept' --permanent
firewall-cmd --reload
## 配置防火墙,使外部网络的接口(ens33)与内部网络的接口(ens37)位于不同的区域。
firewall-cmd --get-active-zones
firewall-cmd --zone=public --remove-interface=ens37
firewall-cmd --zone=internal --add-interface=ens37
firewall-cmd --permanent --zone=public --remove-interface=ens37
firewall-cmd --permanent --zone=internal --add-interface=ens37
firewall-cmd --get-active-zones
## 在外部网络接口上配置NAT模式(伪装),区域为public
firewall-cmd --zone=public --add-masquerade
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --zone=public --query-masquerade
firewall-cmd --zone=internal --query-masquerade
## 如果尚未为防火墙启用,请在外部和内部网络接口之间配置转发规则,例如:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens33 -o ens37 -m state --state RELATED,ESTABLISHED -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens37 -o ens33 -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -j REJECT --reject-with icmp-host-prohibited
firewall-cmd --reload
## 开放访问端口
firewall-cmd --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=http
后端服务器路由配置
## 配置Keepalived NAT模式负载均衡的后端服务器路由
## 在您打算与Keepalived负载平衡器一起使用的每个后端真实服务器上,确保路由表包含负载平衡器内部网络接口的虚拟IP地址的默认路由。
例如,如果是虚拟IP地址 10.0.0.100,则可以使用 ip命令检查路由表并设置默认路由:
# ip route show
10.0.0.0/24 dev enp0s8 proto kernel scope link src 10.0.0.71
#ip route add default via 10.0.0.100 dev enp0s8
#ip route show
默认通过10.0.0.100 dev enp0s8
10.0.0.0/24 dev enp0s8 proto kernel scope link src 10.0.0.71
要使enp0s8重新启动时保持默认路由,请创建该文件 /etc/sysconfig/network-scripts/route-enp0s8:
# echo "default via 10.0.0.100 dev enp0s8" > /etc/sysconfig/network-scripts/route-enp0s8
keepalive 配置
1 |
|
lvs-nat说明
NAT方式配置
这种方式需要Director和各Real Server在同一IP网络内(172.16.100.0/24),具体配置如下示例:
Director: ens33 --VIP:192.168.0.146 gateway:局域网网关(路由器地址)
ens37 --DIP:172.16.100.10 gateway:为空,不需要填
Real Server1(RS1): ens33 --RIP: 172.16.100.2 gateway:172.16.100.10
Real Server2(RS2): ens33 --RIP: 172.16.100.3 gateway:172.16.100.10
配置director打开网卡间的转发功能,echo '1' >/proc/sys/net/ipv4/ip_forward
1 |
|
LVS
该/etc/keepalived/keepalived.conf 配置文件被分成以下部分:
global_defs
定义全局设置,例如发送通知消息的电子邮件地址,SMTP服务器的IP地址,SMTP连接的超时值(秒),标识主机的字符串,VRRP IPv4和IPv6多播地址以及SNMP陷阱应该启用。
static_ipaddress , static_routes
定义静态IP地址和路由,VRRP无法更改。如果已在服务器上定义了地址和路由,并且这些服务器已具有网络连接,则不需要这些部分。
vrrp_sync_group
定义一起故障转移的VRRP备份VRRP同步组。
vrrp_instance
为VRRP同步组的内部或外部网络接口的成员定义可移动的虚拟IP地址,该状态在状态转换期间与其他组成员一起提供。每个VRRP实例必须具有唯一值virtual_router_id,该值标识主服务器和备份服务器上的哪些接口可以分配给定的虚拟IP地址。您还可以指定要在状态转换运行脚本BACKUP,MASTER以及FAULT,以及是否触发SMTP警报状态转换。
vrrp_script
定义跟踪脚本,Keepalived可以定期运行以执行来自a vrrp_instance或 vrrp_sync_groupsection的监视操作 。
virtual_server_group
定义虚拟服务器组,允许真实服务器成为多个虚拟服务器组的成员。
virtual_server
定义用于负载平衡的虚拟服务器,该服务器由多个真实服务器组成。
参考
https://www.server-world.info/en/note?os=CentOS_7&p=lvs&f=2
https://docs.oracle.com/cd/E52668_01/E54669/html/section_xsx_wl2_4r.html