Nginx 可以用來作為反向代理伺服器,來提供負載均衡的能力,使我們的 Web 伺服器,能夠水平擴容,進而處理更多的使用者請求。
但是反向代理伺服器又變成了一個單點,當反向代理伺服器掛了,整合 Web 伺服器就不能被外界存取到,所以我們必須要保證反向代理伺服器的高可用。
而 Keepalived 是一種高效能的伺服器高可用或熱備解決方案,可以用來防止伺服器單點故障的發生,透過配合 Nginx 可以實現 Web 前端服務的高可用。
注:VIP 為虛擬 IP ,不被佔用前提下可自訂。
兩個伺服器上安裝配置 Nginx 。具體步驟請參見:Linux系統安裝配置Nginx
兩個伺服器上安裝 Keepalived 。
執行命令:
yum -y install keepalived
兩個伺服器都需要執行下面語句。語句如下所示:
chkconfig keepalived on
路徑為:/etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {## keepalived 自帶的郵件提醒需要開啟 sendmail 服務。 建議用獨立的監視或第三方 SMTP router_id ethan3 ## 標識本節點的字條串,通常為 hostname} ## keepalived 會定時執行腳本並對腳本執行的結果進行分析,動態調整 vrrp_instance 的優先。如果腳本執行結果為 0,並且 weight 配置的值大於 0,則優先相應的增加。如果腳本執行結果非 0,並且 weight配置的值小於 0,則優先相應的減少。其他情況,維持原本配置的優先,即配置檔案中 priority 對應的值。vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" ## 檢查 nginx 狀態的腳本路徑 interval 2 ## 檢查時間間隔 weight -20 ## 如果條件成立,權重-20}## 定義虛擬路由, VI_1 為虛擬路由的標示符,自己定義名稱vrrp_instance VI_1 { state MASTER ## 主節點為 MASTER, 對應的備份節點為 BACKUP interface eno16777736 ## 綁定虛擬 IP 的網路API,與本機 IP 地址所在的網路API相同。 virtual_router_id 33 ## 虛擬路由的 ID 號, 兩個節點設定必須一樣, 可選 IP 最後一段使用, 相同的 VRID 為一個組,他將決定多播的 MAC 地址 mcast_src_ip 192.168.5.249 ## 本機 IP 地址 priority 200 ## 節點優先, 值範圍 0-254, MASTER 要比 BACKUP 高 advert_int 1 ## 組播資訊傳送間隔,兩個節點設定必須一樣, 預設 1s ## 設定驗證資訊,兩個節點必須一致 authentication { auth_type PASS auth_pass 1111 ## 真實生產,按需求對應該過來 } ## 將 track_script 塊加入 instance 配置塊 track_script { chk_nginx ## 執行 Nginx 監視的服務 } # # 虛擬 IP 池, 兩個節點設定必須一樣 virtual_ipaddress { 192.168.5.200 ## 虛擬 ip,可以定義多個 }}
! Configuration File for keepalivedglobal_defs { router_id localhost.localdomain}vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20}vrrp_instance VI_1 { state BACKUP interface ens192 virtual_router_id 33 mcast_src_ip 192.168.5.103 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 192.168.5.200 }}
需要注意的配置說明:
1)router_id ethan3 ## 標識本節點的字條串,通常為 hostname 。
在伺服器中使用語句hostname可得出。如下圖所示:
2)script "/etc/keepalived/nginx_check.sh" ## 檢查 nginx 狀態的腳本路徑,無需修改,參考本文 3.5 節。
3)state MASTER/BACKUP ##說明主備。
4)interface eno16777736 ## 綁定虛擬 IP 的網路API,與本機 IP 地址所在的網路API相同。
使用ip a可得出。如下圖所示:
注:主節點配置檔案中該值為主節點網卡號;備節點配置檔案中該值為備節點網卡號。
5)mcast_src_ip 192.168.5.249 ## 本機 IP 地址。
6)priority 200 ## 節點優先, 值範圍 0-254, MASTER 要比 BACKUP 高。
7)virtual_ipaddress ##虛擬 ip,即VIP,可自訂,可定義多個。
兩個伺服器上都需要編寫下面檔案,根據實際情況修改 nginx 路徑。
編寫 Nginx 狀態檢查腳本 /etc/keepalived/nginx_check.sh (已在 Keepalived.conf 中配置)腳本要求。
#!/bin/bashA=`ps -C nginx --no-header |wc -l`if [ $A -eq 0 ];then/usr/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalivedfifi
賦予檔案權限:chmod +x /etc/keepalived/nginx_check.sh
兩個伺服器都執行下面語句:
systemctl start keepalived
注:節點上有虛擬 IP 時,可透過虛擬 IP 存取相應的 nginx 及下面相應的檔案。
1)使用ip addr語句,可以看到虛擬 IP 192.168.5.200 綁定在了 MASTER 伺服器上面。如下圖所示:
而 BACKUP 節點上沒有虛擬 IP 。如下圖所示:
2)使用systemctl stop keepalived停掉主節點的 keepalived 服務,備節點上有虛擬 IP 。如下圖所示:
內網使用者無法線上安裝 Keepalived ,與外網使用者方案不同點在於 3.2 節,其他步驟相同。
兩個伺服器都需要做下面步驟。
1)下載安裝包。存取地址:https://www.keepalived.org/download.html 並下載 Keepalived 的安裝包。
2)解壓安裝。
將安裝包上傳到伺服器某個資料夾下(文檔範例為:/wendy),進入安裝包所在資料夾後,進行下面操作:
cd /wendytar -zxvf keepalived-2.0.18.tar.gz # 解壓
cd /wendy/keepalived-2.0.18 # 路徑根據實際情況修改
./configure --prefix=/usr/local/keepalived # 編譯
make && make install # 安裝
1)複製keepalived.conf檔案到/etc/keepalived/下。
mkdir /etc/keepalivedcp /wendy/keepalived-2.0.18/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
2)複製 keepalived 服務腳本到預設地址:
cp /wendy/keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/cp /wendy/keepalived-2.0.18/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙