lvs keepalived 負載均衡器
阿新 • • 發佈:2018-05-08
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
TCP 172.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
-
停止主機
nginx02
Nginx 服務觀察主機
lvs01
keepalived日誌lvs01keepalived[10879]: TCP connection to [172.16.50.112]:80 failed. Keepalived_healthcheckers[10879]: TCP connection to [172.16.50.112]:80 failed. Keepalived_healthcheckers[10879]: Check on service [172.16.50.112]:80 failed after 1 retry. Keepalived_healthcheckers[10879]: Removing service [172.16.50.112]:80 from VS [172.16.50.230]:80
curl 172.16.50.230 124
-
停止主機
lvs01
Keepalived 服務觀察主機
lvs02
Keepalived 日誌Keepalived_vrrp[10774]: VRRP_Instance(VI_1) Transition to MASTER STATE Keepalived_vrrp[10774]: VRRP_Instance(VI_1) Entering MASTER STATE Keepalived_vrrp[10774]: VRRP_Instance(VI_1) setting protocol VIPs. Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230 Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
Vip地址漂移到了主機
lvs02
lvs keepalived 負載均衡器