lvs keepalived 负载均衡器
lvs keepalived 实现负载均衡环境
主机名
IP地址
os
软件
lvs01
172.16.50.104
CentOS 7.4.1708
ipvsadm keepalived
master
lvs02
172.16.50.111
CentOS 7.4.1708
ipvsadm keepalived
backup
nginx01
172.16.50.124
CentOS 7.4.1708
nginx
nginx02
172.16.50.112
CentOS 7.4.1708
nginx
Vip地址 172.16.50.230
部署
Nginx 部署
主机nginx01,nginx02
yum install nginx -y
启动
systemctl enable nginx && systemctl start nginx
主机nginx01
echo "124" > /usr/share/nginx/html/index.html
主机nginx02
echo "112" > /usr/share/nginx/html/index.html
创建realserver.sh脚本,内容如下:
#!/bin/bash
#description: Config realserver
VIP=172.16.50.230
. /etc/rc.d/init.d/functions
case "$1" in
start)
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $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)
/sbin/ifconfig lo:0 down
/sbin/route del $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
添加执行权限及运行脚本
chmod +x realserver.sh && ./realserver.sh start
lvs,keepalived 部署
开启路由转发
临时生效
echo "1" > /proc/sys/net/ipv4/ip_forward
永久生效,编辑配置文件/etc/sysctl.conf添加
net.ipv4.ip_forward= 1
sysctl -p #生效
主机 lvs01,lvs02
yum install ipvsadm keepalived -y
主机lvs01编辑配置文件/etc/keepalived/keepalived.conf
! Configuration File for keepalived
! 全局配置
global_defs {
! 标识
router_id keep-50.104
}
! VRRPD配置
vrrp_instance VI_1 {
! 指定该keepalived节点的初始状态:MASTER|BACKUP
state MASTER
! vrrp实例绑定的接口,用于发送VRRP包
interface eth0
! 指定VRRP实例ID,范围是0-255,主备的virtual_router_id 必须相同
virtual_router_id 51
! 指定优先级,优先级高的将成为MASTER
priority 100
! 指定发送VRRP通告的间隔,单位秒
advert_int 1
authentication {
! 指定认证方式:PASS|AH
auth_type PASS
! 指定认证所使用的密码,最多8位
auth_pass 1111
}
virtual_ipaddress {
! 指定VIP地址
172.16.50.230
}
}
virtual_server 172.16.50.230 80 {
! 健康检查的时间间隔
delay_loop 6
! LVS调度算法:rr|wrr|lc|wlc|lblc|sh|dh
lb_algo rr
! LVS模式:NAT|DR|TUN
lb_kind DR
! 持久化超时时间,单位秒
persistence_timeout 50
! 协议: TCP|UDP|SCTP
protocol TCP
! 后端服务器
real_server 172.16.50.124 80 {
! 权重
weight 1
! 健康检查方式
TCP_CHECK {
! 超时时间,单位秒
connect_timeout 3
! 尝试次数
nb_get_retry 3
! 在尝试之前延迟多少秒
delay_before_retry 10
! 尝试间隔
delay_before_retry 2
}
}
real_server 172.16.50.112 80 {
! 权重
weight 1
! 健康检查方式
TCP_CHECK {
! 超时时间,单位秒
connect_timeout 3
! 尝试次数
nb_get_retry 3
! 在尝试之前延迟多少秒
delay_before_retry 10
! 尝试间隔
delay_before_retry 2
}
}
}
主机lvs02 参考主机lvs01配置文件
修改部分
router_id keep-50.111
state BACKUP
priority 90
启动
systemctl enable keepalived && systemctl start keepalived
测试
ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP172.16.50.230:80 rr persistent 50
-> 172.16.50.112:80 Route 1 0 0
-> 172.16.50.124:80 Route 1 0 0
curl 172.16.50.230
112
[*] 停止主机nginx02Nginx 服务
观察主机lvs01 keepalived日志
lvs01keepalived: TCP connection to :80 failed.
Keepalived_healthcheckers: TCP connection to :80 failed.
Keepalived_healthcheckers: Check on service :80 failed after 1 retry.
Keepalived_healthcheckers: Removing service :80 from VS :80
curl 172.16.50.230
124
[*] 停止主机lvs01 Keepalived 服务
观察主机lvs02 Keepalived 日志
Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Keepalived_vrrp: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 172.16.50.230
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Keepalived_vrrp: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 172.16.50.230
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Keepalived_vrrp: Sending gratuitous ARP on eth0 for 172.16.50.230
Vip地址漂移到了主机 lvs02
页:
[1]