天天看點

keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔

keepalived實作nginx的高可用

注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔

1、修改 Keepalived 配置檔案(keepalived.conf)

(1) MASTER 節點配置檔案(192.168.44.71)
 vim /etc/keepalived/keepalived.conf
先查一下本機 IP 位址所在的網絡接口相同, 我的是 eth0,後面用得着
           
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
以下兩張圖檔分開截的

! Configuration File for keepalived

global_defs {
router_id 192.168.44.71  ## 辨別本節點的字條串,通常為 hostname
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀态的腳本路徑
interval 2 ## 檢測時間間隔
weight -20 ## 如果條件成立,權重-20
}


vrrp_instance VI_1 {
state MASTER   ## 主節點為 MASTER, 對應的備份節點為 BACKUP
interface eth0  ## 綁定虛拟 IP 的網絡接口,與本機 IP 位址所在的網絡接口相同, 我的是 eth0
virtual_router_id 71  ## 虛拟路由的 ID 号, 兩個節點設定必須一樣, 可選 IP 最後一段使用, 相同的 VRID 為一個組,他将決定多點傳播的 MAC 位址
mcast_src_ip 192.168.44.71 ## 本機 IP 位址
priority 100  ## 節點優先級, 值範圍 0-254, MASTER 要比 BACKUP 高
nopreempt ## 優先級高的設定 nopreempt 解決異常恢複後再次搶占的問題
advert_int 1  ## 多點傳播資訊發送間隔,兩個節點設定必須一樣, 預設 1s


authentication {
    auth_type PASS
	
    auth_pass 1111
}

track_script {
	chk_nginx ## 執行 Nginx 監控的服務
} 

virtual_ipaddress {
    192.168.44.70  ## 虛拟 ip,可以定義多個
}
           

}

keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
(2)BACKUP 節點配置檔案(192.168.44.73) 
vim /etc/keepalived/keepalived.conf
先查一下本機 IP 位址所在的網絡接口相同, 我的是 eth0,後面用得着
           
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
! Configuration File for keepalived

global_defs {
router_id 192.168.44.73  ## 辨別本節點的字條串,通常為 hostname
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}

vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 71
mcast_src_ip 192.168.44.73 ## 本機 IP 位址
priority 90
advert_int 1
authentication {
    auth_type PASS
    auth_pass 1111
}

## 将 track_script 塊加入 instance 配置塊
track_script {
	chk_nginx ## 執行 Nginx 監控的服務
} 

# 虛拟 IP 池, 兩個節點設定必須一樣
virtual_ipaddress {
    192.168.44.70
  }
}
           
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔

2、編寫 Nginx 狀态檢測腳本 主從伺服器上都要,是以兩份

編寫 Nginx 狀态檢測腳本 /etc/keepalived/nginx_check.sh (已在 keepalived.conf 中配置)腳本要求:如果 nginx 停止運作,嘗試啟動,如果無法啟動則殺死本機的 keepalived 程序, keepalied将虛拟 ip 綁定到 BACKUP 機器上。 内容如下:

vim /etc/keepalived/nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi


儲存後,給腳本賦執行權限: 
chmod +x /etc/keepalived/nginx_check.sh
           

3、啟動 Keepalived nginx

/usr/local/nginx/sbin/nginx -s reload
service keepalived start
           

4、Keepalived+Nginx 的高可用測試

同時啟動192.168.44.71和192.168.44.73上的Nginx和Keepalived,我們通過VIP(192.168.44.70)來通路Nginx,如下:
注意:我這裡由于網絡原因配置隧道轉發,是以用127.0.0.1分别配置了端口号!!!

1)啟動192.168.44.71來通路Nginx
           
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
2)啟動192.168.44.73來通路Nginx
           
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
3)啟動192.168.44.70來通路Nginx
           
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔

5、開始測試

我們關閉192.168.44.71(主)上的Keepalived和Nginx
cd /usr/local/nginx/sbin/
./nginx -s stop
pkill keepalived



此時,我們再通過VIP(192.168.44.70)來通路Nginx,如下
           
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
我們再開啟192.168.44.71上的Keepalived和Nginx

在192.168.44.71執行如下指令:
./nginx -s reload
service keepalived start
           
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔
因為我們寫了腳本nginx_check.sh,這個腳本會為我們自動自動Nginx。
此時,我們再通過VIP(192.168.44.70)來通路Nginx,如下
           
keepalived實作nginx的負載均衡和高可用keepalived實作nginx的高可用注意:這裡nginx以及keepalived已經裝好了,如果沒有裝好請參考我的安裝部署文檔

6、至此,Keepalived + Nginx 實作高可用 Web 負載均衡搭建完畢 ##。