Keepalived安裝部署
- 下載地址:點擊下載:https://www.keepalived.org/download.html
- 把壓縮包上傳到服務器,再對keepalived進行解壓 :
tar -zxvf keepalived-2.0.18.tar.gz得到源檔案要解壓編譯和安裝, - 解壓后進入到解壓出來的目錄,看到會有 configure檔案 ,那么就可以做配置了(配置安裝和nginx一模一樣)

- 配置keepalived 的安裝目錄和核心配置目錄
./configure --prefix=/var/temp/keepalived --sysconf=/etcprefix 為 安裝目錄地址 sysconf 為核心配置目錄,我們keepalived的配置就到etc下,注意一定要配置到etc下,不然后期配置時可能會出現組態檔找不到等情況, - 配置好后,使用
make && make install來編譯和安裝, - 看到/var/temp/keepalived/有bin、sbin、share 和/etc/keepalived下有 keepalived.conf、samples 表示安裝成功!


主從配置 Keepalived
配置主從時特別注意
- vrrp_instance 下的state 只有一個主為MASTER ,其他都是 BACKUP
- global_defs 下的 router_id 相當于這臺機器的唯一標志,不能重復
- vrrp_instance 下的interface 網卡名稱必須檢查是否和自己網卡一樣(ip addr 檢查)

- vrrp_instance 下的 priority 權重必須小于MASTER 的權重,選舉誰高選誰
- vrrp_instance 下的 authentication 和 virtual_router_id 所有節點都保持一致即可
- vrrp_instance 下的 virtual_ipaddress 是虛擬ip地址,設定一個即可,它會出現在MASTER 上運行,當MASTER 宕機則會轉移到權重高的BACKUP上,來維持高可用,當MASTER 恢復,虛擬ip網關轉移到MASTER節點上,
下面為 主Keepalived配置
通過命令 vim keepalived.conf 打開組態檔
! Configuration File for keepalived
global_defs {
#其他都是郵件警告發郵件的
#notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
#}
#notification_email_from Alexandre.Cassen@firewall.loc
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
# 路由id:當前安裝keepalived的節點主機識別符號,保證全域唯一 246可以為你的公網ip結尾來區分
router_id keepa_master_246
# vrrp_skip_check_adv_addr
# vrrp_strict
# vrrp_garp_interval 0
# vrrp_gna_interval 0
}
#實體組
vrrp_instance VI_1 {
## 表示狀態是MASTER主機還是備用機BACKUP
state MASTER
# 該實體系結的網卡 (查詢你的網卡資訊 ip addr)
interface eth0
# 保證主備節點一致即可
virtual_router_id 51
# 權重,master權重一般高于backup,如果有多個,那就是選舉,誰的權重高,誰就當選
priority 100
# 主備之間同步檢查時間間隔,單位秒 心跳
advert_int 1
# 認證權限密碼,防止非法節點進入
authentication {
auth_type PASS
auth_pass 1111
}
# 虛擬出來的ip,可以有多個(vip)
virtual_ipaddress {
# 注意:主備兩臺的vip都是一樣的,系結到同一個vip
192.168.1.180
}
}
#默認配置中下面還有配置洗掉即可
# .....
下面為 從Keepalived配置 (一般為另一臺服務器中重新上面的操作)
通過命令 vim keepalived.conf 打開組態檔
! Configuration File for keepalived
global_defs {
#其他都是郵件警告發郵件的
#notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
#}
#notification_email_from Alexandre.Cassen@firewall.loc
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
# 路由id:當前安裝keepalived的節點主機識別符號,保證全域唯一 246可以為你的公網ip結尾來區分
router_id keepa_backup_293
# vrrp_skip_check_adv_addr
# vrrp_strict
# vrrp_garp_interval 0
# vrrp_gna_interval 0
}
vrrp_instance VI_1 {
## 表示狀態是MASTER主機還是備用機BACKUP
state BACKUP
# 該實體系結的網卡 (查詢你的網卡資訊 ip addr)
interface ens33
# 保證主備節點一致即可
virtual_router_id 51
# 權重,master權重一般高于backup,如果有多個,那就是選舉,誰的權重高,誰就當選
priority 80
# 主備之間同步檢查時間間隔,單位秒 心跳
advert_int 1
# 認證權限密碼,防止非法節點進入
authentication {
auth_type PASS
auth_pass 1111
}
# 虛擬出來的ip,可以有多個(vip)
virtual_ipaddress {
# 注意:主備兩臺的vip都是一樣的,系結到同一個vip
192.168.1.180
}
}
#默認配置中下面還有配置洗掉即可
# .....
雙機主備Keepalived組態檔完成后實作高可用
1.分別啟動Keepalived
進入你的安裝目錄 /var/temp/keepalived/sbin 下 ./keepalived 來啟動
2.檢查啟動成功沒有
到你的MASTER服務器上輸入ip addr 你會發現多了你的虛擬ip的網關,網卡也是你設定的,這說明已經成功了!,到這里已經可以完成Keepalived高可用保證,

開始使用Keepalived追蹤nginx實作高可用
我們先要寫一個shell腳本重啟nginx 先創建vim restart_nginx.sh檔案
#/var/temp/nginx/sbin/nginx 為nginx啟動地址
A=`ps -C nginx --no-header |wc -l`
#判斷nginx是的宕機,如果宕機了,重試重啟
if [ $A -eq 0 ];then
/var/temp/nginx/sbin/nginx
#等待一會時間再檢查是否重啟了,nginx如果還沒還有重啟這停止keepalived,開啟備用機
sleep 3
if [ $A -eq 0 ];then
killall keepalived
fi
fi
保存之后可能會出現權限不夠 -bash: ./restart_nginx.sh: Permission denied
我們通過chmod +x restart_nginx.sh 賦予權限后運行試試,可以先把nginx關閉再使用腳本運行,前后測驗一下是否可以啟動nginx,
設定重啟腳本到keepalived.conf
到keepalived添加vrrp_script 設定腳本
#vrrp_script 設定腳本
vrrp_script restart_nginx_alive{
#要運行腳本地址
script "/etc/keepalived/restart_nginx.sh"
interval 2 #每隔兩秒運行上一行腳本
weight 10 #如果腳本運行成功,則升權 +10
#weight -10 #如果腳本運行失敗,則升權 -10
}
#vrrp_instance 中添加呼叫 track_script
vrrp_instance VI_1 {
#追蹤script中腳本
track_script{
restart_nginx_alive
}
}
添加到配置

重啟Keepalived使得組態檔生效
systemctl restart keepalived
你可以去主動嘗試關閉nginx, keepalived它會自動幫你重新啟動nginx.
雙主熱備方案更加節約資源
結構圖:
通過云決議dns 把虛擬ip 配置到dns上,配置二個一樣的決議規則,來搭建dns輪訓,
第一臺服務器
! Configuration File for keepalived
global_defs {
# 路由id:當前安裝keepalived的節點主機識別符號,保證全域唯一 246可以為你的公網ip結尾來區分
router_id keepa_293
}
#一組實體
vrrp_instance VI_1 {
## 表示狀態是MASTER主機還是備用機BACKUP
state BACKUP
# 該實體系結的網卡 (查詢你的網卡資訊 ip addr)
interface ens33
# 保證主備節點一致即可
virtual_router_id 51
# 權重,master權重一般高于backup,如果有多個,那就是選舉,誰的權重高,誰就當選
priority 80
# 主備之間同步檢查時間間隔,單位秒 心跳
advert_int 1
# 認證權限密碼,防止非法節點進入
authentication {
auth_type PASS
auth_pass 1111
}
# 虛擬出來的ip,可以有多個(vip)
virtual_ipaddress {
# 注意:主備兩臺的vip都是一樣的,系結到同一個vip
192.168.1.180
}
}
#二組實體
vrrp_instance VI_2 {
## 表示狀態是MASTER主機還是備用機BACKUP
state MASTER #改變
# 該實體系結的網卡 (查詢你的網卡資訊 ip addr)
interface ens33
# 保證主備節點一致即可
virtual_router_id 52 #改變
# 權重,master權重一般高于backup,如果有多個,那就是選舉,誰的權重高,誰就當選
priority 100 #改變
# 主備之間同步檢查時間間隔,單位秒 心跳
advert_int 1
# 認證權限密碼,防止非法節點進入
authentication {
auth_type PASS
auth_pass 1111
}
# 虛擬出來的ip,可以有多個(vip)
virtual_ipaddress {
# 注意:主備兩臺的vip都是一樣的,系結到同一個vip
192.168.1.181 #改變
}
}
第二臺服務器
! Configuration File for keepalived
global_defs {
# 路由id:當前安裝keepalived的節點主機識別符號,保證全域唯一 246可以為你的公網ip結尾來區分
router_id keepa_252
}
#一組實體
vrrp_instance VI_1 {
## 表示狀態是MASTER主機還是備用機BACKUP
state MASTER
# 該實體系結的網卡 (查詢你的網卡資訊 ip addr)
interface ens33
# 保證主備節點一致即可
virtual_router_id 51
# 權重,master權重一般高于backup,如果有多個,那就是選舉,誰的權重高,誰就當選
priority 100
# 主備之間同步檢查時間間隔,單位秒 心跳
advert_int 1
# 認證權限密碼,防止非法節點進入
authentication {
auth_type PASS
auth_pass 1111
}
# 虛擬出來的ip,可以有多個(vip)
virtual_ipaddress {
# 注意:主備兩臺的vip都是一樣的,系結到同一個vip
192.168.1.180
}
}
#二組實體
vrrp_instance VI_2 {
## 表示狀態是MASTER主機還是備用機BACKUP
state BACKUP #改變
# 該實體系結的網卡 (查詢你的網卡資訊 ip addr)
interface ens33
# 保證主備節點一致即可
virtual_router_id 52 #改變
# 權重,master權重一般高于backup,如果有多個,那就是選舉,誰的權重高,誰就當選
priority 80 #改變
# 主備之間同步檢查時間間隔,單位秒 心跳
advert_int 1
# 認證權限密碼,防止非法節點進入
authentication {
auth_type PASS
auth_pass 1111
}
# 虛擬出來的ip,可以有多個(vip)
virtual_ipaddress {
# 注意:主備兩臺的vip都是一樣的,系結到同一個vip
192.168.1.181 #改變
}
}
其實就是多出來一個vrrp_instance 實體配置 二個機器實體相互互為主備關系,
如 171機器VI_1為主 ,VI_2 為備,195機器VI_1為備,VI_2 為主,dns決議配置的是這二臺機器的虛擬vip進行輪訓減少資源的浪費
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/243945.html
標籤:其他
上一篇:初識Linux作業系統
