keepalived高可用+keepalived的部署
阿新 • • 發佈:2021-11-02
一.keepalived高可用(私網)
1.什麼是高可用
一般是指2臺機器啟動著完全相同的業務系統,當有一臺機器down機了,另外一臺伺服器就能快速的接管,對於訪問的使用者是無感知的。
2.什麼是keepalived
部署在整個叢集中的一個高可用軟體,作用是建立一個VIP(虛擬IP),在整個叢集中有且只有一個機器上生成VIP,當這臺機器出現問題時,keepalived將自動將VIP切換至其他的某一臺伺服器上。
3.常用的工具
1.硬體通常使用 F5
2.軟體通常使用 keepalived
4.keepalived涉及名詞
keepalived軟體是基於VRRP協議實現的,VRRP虛擬路由冗餘協議,主要用於解決單點故障問題
ARP廣播
VRRP協議
vip負責IP漂移
vmac負責通知ARP廣播修改mac地址
5.高可用keepalived核心概念
1.如何確定誰是主節點誰是備節點(選舉投票,優先順序)
2.如果Master故障,Backup自動接管,那麼Master恢復後會奪權嗎(搶佔試、非搶佔式)
3.如果兩臺伺服器都認為自己是Master會出現什麼問題(腦裂)
6.keepalived的部署
實現VIP,解決web伺服器的單點故障
1、伺服器準備
主機 | ip | 身份 |
---|---|---|
lb01 | 192.168.15.5 | 負載均衡 |
lb02 | 192.168.15.6 | 負載均衡 |
web01 | 192.168.15.7 | web伺服器 |
web02 | 192.168.15.8 | web伺服器 |
web03 | 192.168.15.9 | web伺服器 |
2、保證七層負載均衡完全一致
前提:保證七層負載均衡完全一致
把lb01相關配置傳到lb02
[root@lb01 ~]# cd /etc/nginx/conf.d
[root@lb01 conf.d]# ll
total 8
-rw-r--r-- 1 root root 440 Nov 1 19:52 game.conf
-rw-r--r-- 1 root root 212 Oct 31 22:21 pysession.conf
[root@lb01 conf.d]# scp game.conf 172.16.1.6:/etc/nginx/conf.d
[root@lb01 conf.d]# scp ../nginx.conf 172.16.1.6:/etc/nginx/
[root@lb01 conf.d]# scp ../proxy_params 172.16.1.6:/etc/nginx/
[root@lb01 conf.d]# scp -r ../ssl_key 172.16.1.6:/etc/nginx/
重啟nginx
[root@lb02 conf.d]# nginx -t
[root@lb02 conf.d]# systemctl restart nginx
1)安裝keepalived(lb01和lb02)
在所有的需要流量的機器上部署keepalived。
yum install keepalived -y
2) 新增VIP配置
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
#全域性配置
global_defs {
[root@lb01 ~]# #身份識別(全域性唯一)
router_id lb01
}
# 配置VRRP協議
vrrp_instance VI_1 {
# 狀態,MASTER和BACKUP(這裡僅僅是一個標記,正真確認VIP的是權重)
state MASTER
# 繫結網絡卡
interface eth0
# 虛擬路由標示,可以理解為分組
virtual_router_id 50
# 優先順序(數字越大,權重越大)
priority 100
# 監測心跳間隔時間
advert_int 1
# 配置認證
authentication {
# 認證型別
auth_type PASS
# 認證的密碼
auth_pass 1111
}
# 設定VIP
virtual_ipaddress {
# 虛擬的VIP地址
192.168.15.200
}
}
[root@lb02 ~]# vim /etc/keepalived/keepalived.conf
#全域性配置
global_defs {
#身份識別(全域性唯一)
router_id lb02
}
# 配置VRRP協議
vrrp_instance VI_1 {
# 狀態,MASTER和BACKUP(這裡僅僅是一個標記,正真確認VIP的是權重)
state BACKUP
# 繫結網絡卡
interface eth0
# 虛擬路由標示,可以理解為分組
virtual_router_id 50
# 優先順序(數字越大,權重越大)
priority 90
# 監測心跳間隔時間
advert_int 1
# 配置認證
authentication {
# 認證型別
auth_type PASS
# 認證的密碼
auth_pass 1111
}
# 設定VIP
virtual_ipaddress {
# 虛擬的VIP地址
192.168.15.200
}
}
3)、web伺服器
啟動nginx:
systemctl start nginx
4)修改Windows的hosts
5)啟動keepalived服務(lb01和lb02)
systemctl start keepalived
6)測試
7)訪問https:game.test.com
關閉lb01的keepalived
注意:
虛擬VIP無法在雲伺服器上使用,因為雲伺服器不支援虛擬IP。