注意:
1.某個keepalived服務所在的機器作爲當前master時,是無法訪問VIP的(crul VIP)
2.出現腦裂會導致無法ping通VIP,腦裂是一種主被互相不能通信導致各自爲政的情況
1.環境配置:
keepalived-master:192.168.8.8
keepalived-backup:192.168.8.9
nginx1:192.168.8.10
nginx2:192.168.8.11
配置VIP:192.168.8.6
# 系統均爲CentOS Linux release 7.7.1908 (Core) 5.6.6-1.el7.elrepo.x86_64
2.部署軟件:
都是用yum安裝,比較方便
部署nginx0,192.168.8.10
# 關閉防火牆,也可以配置允許端口訪問
systemctl stop firewalld && systemctl disable firewalld
yum install epel-release -y
yum install nginx net-tools -y
systemctl start nginx && systemctl enable nginx
ps aux | grep "nginx"
echo "nginx0 192.168.8.10" > /usr/share/nginx/html/index.html
# ifconfig命令由上面net-tools安裝包內所帶,設置虛擬ip比較方便容易。
# 應該也可以使用最新的ip命令
# 增加VIP,路由
ifconfig lo:0 192.168.8.6 netmask 255.255.255.255 broadcast 192.168.8.6
/sbin/route add -host 192.168.8.6 dev lo:0
# 查看lo設備商有沒有設置的VIP
ip a
# 抑制ARP
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
部署nginx1,192.168.8.11
# 關閉防火牆,也可以配置允許端口訪問
systemctl stop firewalld && systemctl disable firewalld
yum install epel-release -y
yum install nginx net-tools -y
systemctl start nginx && systemctl enable nginx
ps aux | grep "nginx"
echo "nginx1 192.168.8.11" > /usr/share/nginx/html/index.html
# ifconfig命令由上面net-tools安裝包內所帶,設置虛擬ip比較方便容易。
# 應該也可以使用最新的ip命令
# 增加VIP,路由
ifconfig lo:0 192.168.8.6 netmask 255.255.255.255 broadcast 192.168.8.6
/sbin/route add -host 192.168.8.6 dev lo:0
# 查看lo設備商有沒有設置的VIP
ip a
# 抑制ARP
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
部署keepalived0+ipvsadm,192.168.8.8
systemctl stop firewalld && systemctl disable firewalld
yum install keepalived ipvsadm -y
修改keepalived配置文件
vi /etc/keepalived/keepalived.conf
配置文件如下:
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.8.1
smtp_connection_timeout 30
router_id LVS_DEVEL # 設置lvs的id,在一個網絡內應該是唯一的
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER爲主,BACKUP爲備 記得大寫
interface ens32 #網卡id 不同的電腦網卡id會有區別 可以使用:ip a查看
virtual_router_id 51 #虛擬路由編號,主備要一致
priority 100 #定義優先級,數字越大,優先級越高,主DR必須大於備用DR
advert_int 1 #檢查間隔,默認爲1s
authentication { #這裏配置的密碼最多爲8位,主備要一致,否則無法正常通訊
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.6 #定義虛擬IP(VIP)爲192.168.7.6,可多設,每行一個
}
}
# 定義對外提供服務的LVS的VIP以及port
virtual_server 192.168.8.6 80 {
delay_loop 6 # 設置健康檢查時間,單位是秒
lb_algo rr # 設置負載調度的算法爲rr
lb_kind DR # 設置LVS實現負載的機制,有NAT、TUN、DR三個模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.8.10 80 { # 指定real server0的IP地址
weight 3 # 配置節點權值,數字越大權重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.8.11 80 { # 指定real server1的IP地址
weight 3 # 配置節點權值,數字越大權重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
部署keepalived1+ipvsadm,192.168.8.9
systemctl stop firewalld && systemctl disable firewalld
yum install keepalived ipvsadm -y
修改keepalived配置文件
vi /etc/keepalived/keepalived.conf
配置文件如下:
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.8.1
smtp_connection_timeout 30
router_id LVS_DEVEL # 設置lvs的id,在一個網絡內應該是唯一的
}
vrrp_instance VI_1 {
state BACKUP #指定Keepalived的角色,MASTER爲主,BACKUP爲備 記得大寫
interface ens32 #網卡id 不同的電腦網卡id會有區別 可以使用:ip a查看
virtual_router_id 51 #虛擬路由編號,主備要一致
priority 50 #定義優先級,數字越大,優先級越高,主DR必須大於備用DR
advert_int 1 #檢查間隔,默認爲1s
authentication { #這裏配置的密碼最多爲8位,主備要一致,否則無法正常通訊
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.6 #定義虛擬IP(VIP)爲192.168.1.200,可多設,每行一個
}
}
# 定義對外提供服務的LVS的VIP以及port
virtual_server 192.168.8.6 80 {
delay_loop 6 # 設置健康檢查時間,單位是秒
lb_algo rr # 設置負載調度的算法爲rr
lb_kind DR # 設置LVS實現負載的機制,有NAT、TUN、DR三個模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.8.10 80 { # 指定real server0的IP地址
weight 3 # 配置節點權值,數字越大權重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.8.11 80 { # 指定real server1的IP地址
weight 3 # 配置節點權值,數字越大權重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
啓動兩個keepalived服務
systemctl start keepalived && systemctl enable keepalived
查看VIP狀態和LVS轉發狀態
#查看兩臺keepalived服務器上的VIP情況
# 當前MASTER節點網卡上會出現VIP,BACKUP上沒有VIP
# 關閉MASTER節點keepalived服務後,VIP會漂移到BACKUP節點網卡上
ip a
# 查看轉發狀態
# 會看到設置的VIP轉發到後端的nginx上
ipvsadm -Ln
測試服務成功與否
在宿主機瀏覽器地址欄鍵入VIP進行瀏覽
#chrome可能需要瀏覽一次清除緩存,火狐可以強制刷新。可以看到出現的結果不一樣