Keepalived+Nginx部署方案

1. 概述

Nginx 可以用來作為反向代理伺服器,來提供負載均衡的能力,使我們的 Web 伺服器,能夠水平擴容,進而處理更多的使用者請求。

但是反向代理伺服器又變成了一個單點,當反向代理伺服器掛了,整合 Web 伺服器就不能被外界存取到,所以我們必須要保證反向代理伺服器的高可用。

而 Keepalived 是一種高效能的伺服器高可用或熱備解決方案,可以用來防止伺服器單點故障的發生,透過配合 Nginx 可以實現 Web 前端服務的高可用。

2. 方案規劃

注:VIP 為虛擬 IP ,不被佔用前提下可自訂。

VIP伺服器 IP主機名nginx 埠預設主從
192.168.5.200192.168.5.249
ethan380MASTER
192.168.5.200192.168.5.103
localhost.localdomain80BACKUP

3. 外網使用者方案

3.1 安裝 Nginx

兩個伺服器上安裝配置 Nginx 。具體步驟請參見:Linux系統安裝配置Nginx 

3.2 安裝 Keepalived

兩個伺服器上安裝 Keepalived 。

執行命令:

yum -y install keepalived

3.3 設定 keepalived 服務開機啟動

兩個伺服器都需要執行下面語句。語句如下所示:

chkconfig keepalived on

4.png

3.4 修改 Keepalived 的配置檔案

路徑為:/etc/keepalived/keepalived.conf

3.4.1 MASTER 節點配置檔案

! Configuration File for keepalived
global_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,可以定義多個
 }
}
显示代码

3.4.2 BACKUP 節點配置檔案

! Configuration File for keepalived
global_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可得出。如下圖所示:

1641974851329444.png

2)script "/etc/keepalived/nginx_check.sh" ## 檢查 nginx 狀態的腳本路徑,無需修改,參考本文 3.5 節。

3)state MASTER/BACKUP ##說明主備。

4)interface eno16777736 ## 綁定虛擬 IP 的網路API,與本機 IP 地址所在的網路API相同。

使用ip a可得出。如下圖所示:

注:主節點配置檔案中該值為主節點網卡號;備節點配置檔案中該值為備節點網卡號。

1641974942332551.png

5)mcast_src_ip 192.168.5.249 ## 本機 IP 地址。

6)priority 200 ## 節點優先, 值範圍 0-254, MASTER 要比 BACKUP 高。

7)virtual_ipaddress ##虛擬 ip,即VIP,可自訂,可定義多個。

3.5 編寫 Nginx 狀態啟動腳本

兩個伺服器上都需要編寫下面檔案,根據實際情況修改 nginx 路徑。

編寫 Nginx 狀態檢查腳本 /etc/keepalived/nginx_check.sh (已在 Keepalived.conf 中配置)腳本要求。

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/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.6 啟動 Keepalived

兩個伺服器都執行下面語句:

systemctl start keepalived

3.7 效果查看

注:節點上有虛擬 IP 時,可透過虛擬 IP 存取相應的 nginx 及下面相應的檔案。

1)使用ip addr語句,可以看到虛擬 IP 192.168.5.200 綁定在了 MASTER 伺服器上面。如下圖所示:

1641973992565967.png

而 BACKUP 節點上沒有虛擬 IP 。如下圖所示:

1641974146900091.png

2)使用systemctl stop keepalived停掉主節點的 keepalived 服務,備節點上有虛擬 IP 。如下圖所示:

1641974581124305.png

4. 內網使用者方案

4.1 步驟說明

內網使用者無法線上安裝 Keepalived ,與外網使用者方案不同點在於 3.2 節,其他步驟相同。

4.2 離線安裝 Keepalived

兩個伺服器都需要做下面步驟。

4.2.1 安裝步驟

1)下載安裝包。存取地址:https://www.keepalived.org/download.html 並下載 Keepalived 的安裝包。

2)解壓安裝。

將安裝包上傳到伺服器某個資料夾下(文檔範例為:/wendy),進入安裝包所在資料夾後,進行下面操作:

cd /wendy
tar -zxvf keepalived-2.0.18.tar.gz   # 解壓
cd /wendy/keepalived-2.0.18  # 路徑根據實際情況修改
./configure --prefix=/usr/local/keepalived   # 編譯
make && make install   # 安裝

4.2.2 將 Keepalived 安裝成 Linux 系統服務

1)複製keepalived.conf檔案到/etc/keepalived/下。

mkdir /etc/keepalived
cp /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/


附件列表


主题: 部署整合
  • 有帮助
  • 没帮助
  • 只是浏览
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

6s后關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙