默认分类

keepalived+LVS负载均衡配置及注意事项

1、配置/etc/keepalived/keepalived.conf文件
配置IP地址、负载方式、过期时间等

2、real server配置lo(通过脚本)
real server 配置lo为VIP的脚本

#!/bin/bash 
SNS_VIP=10.151.1.199
case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_VIP dev lo:0
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

3、主备LVS需要在防火墙上配置开放VRRP协议,命令如下

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

firewall-cmd --reload

此配置为在正式环境下开启防火墙后,需要开通主备服务器间通讯,防止脑裂现象发送,如果已经发生,配置生效后脑裂现象会消失

4、lvs需要开放realserver对提供服务的端口,开放端口后执行reload重新加载防火墙配置,keepalived服务重启一下
防火墙开放端口命令

firewall-cmd --zone=public --add-port=80/tcp --permanent

5、可以通过ip a命令,查看LVS端ip漂移情况

ip a

6、可以通过tcpdump命令查看数据包访问及答复情况

tcpdump -i ens160 port 80

LVS服务器只有接受包,无对应的应答包进行答复

master01-lvs01,对80只有接收包,无应答.png

后方的RS服务器能看到接收到了客户的访问以及答复情况,在RS服务器上体现了握手情况
master03-rs接收及应答.png

7、通过ipvsadm -ln命令查看88服务器服务在线情况
master01-lvs01,有VIP,正常工作.png

8、LVS与real-server在同一网段,内部通过vrrp广播来实现ip的漂移通讯,查看89服务器在线情况,能监控到负载,无VIP,为备用机
master02-lvs02没有VIP,但能监视RS.png
9、多端口统一调度

首先使用iptables给某几个端口的服务打上同一个标签,大标签的命令

iptables -t mangle -A PREROUTING -i eth2 -p tcp --dport 80 -j MARK --set-mark 20

iptables -t mangle -A PREROUTING -i eth2 -p tcp --dport 443 -j MARK --set-mark 20

然后再编辑keepalived配置文件
这里不使用ip加port直接使用如下配置

virtual_server fwmark 20 {
...
}

This is just a placeholder img.