您好,登錄后才能下訂單哦!
一、keepalived
Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,并將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常后Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。
安裝keepalived
yum方式直接安裝即可,該方式會自動安裝依賴:
Copy
yum -y install keepalived
修改主機(192.168.30.21)keepalived配置文件
yum方式安裝的會生產配置文件在/etc/keepalived下:
Copy
vi keepalived.conf
keepalived.conf:
Copy
#檢測腳本
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" #心跳執行的腳本,檢測nginx是否啟動
interval 2 #(檢測腳本執行的間隔,單位是秒)
weight 2 #權重
}
#vrrp 實例定義部分
vrrp_instance VI_1 {
state MASTER # 指定keepalived的角色,MASTER為主,BACKUP為備
interface eth0 # 當前進行vrrp通訊的網絡接口卡(當前centos的網卡) 用ifconfig查看你具體的網卡
virtual_router_id 66 # 虛擬路由編號,主從要一致
priority 100 # 優先級,數值越大,獲取處理請求的優先級越高
advert_int 1 # 檢查間隔,默認為1s(vrrp組播周期秒數)
#授權訪問
authentication {
auth_type PASS #設置驗證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通信
auth_pass 1111
}
track_script {
chk_http_port #(調用檢測腳本)
}
virtual_ipaddress {
192.168.30.20 # 定義虛擬ip(VIP),可多設,每行一個
}
}
virtual_ipaddress 里面可以配置vip,在線上通過vip來訪問服務。
interface需要根據服務器網卡進行設置通常查看方式ip addr
authentication配置授權訪問后備機也需要相同配置
修改備機(192.168.30.22)keepalived配置文件
keepalived.conf:
Copy
#檢測腳本
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" #心跳執行的腳本,檢測nginx是否啟動
interval 2 #(檢測腳本執行的間隔)
weight 2 #權重
}
#vrrp 實例定義部分
vrrp_instance VI_1 {
state BACKUP # 指定keepalived的角色,MASTER為主,BACKUP為備
interface eth0 # 當前進行vrrp通訊的網絡接口卡(當前centos的網卡) 用ifconfig查看你具體的網卡
virtual_router_id 66 # 虛擬路由編號,主從要一直
priority 99 # 優先級,數值越大,獲取處理請求的優先級越高
advert_int 1 # 檢查間隔,默認為1s(vrrp組播周期秒數)
#授權訪問
authentication {
auth_type PASS #設置驗證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通信
auth_pass 1111
}
track_script {
chk_http_port #(調用檢測腳本)
}
virtual_ipaddress {
192.168.30.20 # 定義虛擬ip(VIP),可多設,每行一個
}
}
檢測腳本:
Copy
#!/bin/bash
#檢測nginx是否啟動了
A=ps -C nginx --no-header |wc -l
if [ $A -eq 0 ];then #如果nginx沒有啟動就啟動nginx
service nginx start #啟動nginx
if [ ps -C nginx --no-header |wc -l
-eq 0 ];then #nginx重啟失敗,則停掉keepalived服務,進行VIP轉移
killall keepalived
fi
fi
腳本授權:chmod 775 check_nginx_pid.sh
說明:腳本必須通過授權,不然沒權限訪問啊,在這里我們兩條服務器執行、VIP(virtual_ipaddress:192.168.30.20),我們在生產環境是直接通過vip來訪問服務。
模擬nginx故障:
修改兩個服務器默認訪問的Nginx的html頁面作為區別。
首先訪問192.168.30.20,通過vip進行訪問,頁面顯示192.168.30.21;說明當前是主服務器提供的服務。
這個時候192.168.30.21主服務器執行命令:
Copy
systemctl stop nginx; #停止nginx
再次訪問vip(192.168.30.20)發現這個時候頁面顯示的還是:192.168.30.21,這是腳本里面自動重啟。
現在直接將192.168.30.21服務器關閉,在此訪問vip(192.168.30.20)現在發現頁面顯示192.168.30.22這個時候keepalived就自動故障轉移了,一套企業級生產環境的高可用方案就搭建好了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。