基于nginx+keepalived 的主從熱備負載均衡的反向代理實作
一、操作環境介紹
公司內部網路環境,臺式主機上的兩臺虛擬機使用橋接網路,無法連接互聯網,
(1)虛擬機ip :192.168.13.172 192.168.13.173
主機ip :192.168.13.148
(2)VMware 安裝CentOS 7 操作環境
(3)keepalived 版本 2.1.5
(4)nginx 版本 1.10.0
二、離線安裝
離線安裝keepalived+nginx 安裝包點擊超鏈接獲取,也可從官網直接下載,在安裝軟體之前我們需要先安裝gcc 依賴、nginx依賴以及網路測驗telnet 相關依賴(已經安裝可忽略),安裝完成之后,我們的linux環境已經具備安裝keepalived + nginx 實作主從熱備負載均衡的反向代理功能了,
1、安裝gcc、nginx、telnet相關依賴
將下載好的安裝包上傳到172和173 服務器上/usr/tmp/repo/gcc 目錄中(目錄可自定義,截圖僅供參考),執行命令:
rpm -Uvh *.rpm --nodeps --force
,等待全部安裝完成,進行下一步,安裝nginx,

2、安裝nginx
(1)上傳nginx-1.10.0.tar.gz 到/opt/nginx/目錄下,執行
tar -zxvf nginx-1.10.0.tar.gz
,當前目錄下會生成 nginx-1.10.0 解壓目錄,
(2)配置nginx安裝選項 ,我這里只配置安裝到/opt目錄下,其它選項可執行./configuration –help查看,
cd nginx安裝目錄,執行如下命令:
./configure --prefix=/opt/nginx/nginx-1.10.0/install --sbin-path=/usr/bin/nginx
官網引數配置說明:http://nginx.org/en/docs/configure.html
(3)編譯并安裝,執行如下命令:
make && make install
(4)進入sbin目錄,啟動、停止、重啟nginx
#進入nginx的sbin 目錄
cd /opt/nginx/nginx-1.10.0/install/sbin
#啟動nginx
./nginx
#停止nginx
./nginx -s stop
#重啟nginx
./nginx -s reload
#查看nginx 運行情況
ps -ef | grep nginx
截圖中為nginx 的work行程和master 行程,nginx默認配置啟動成功后,會有兩個行程,一個主行程(master守護行程),一個作業(work)行程,主行程負責管理作業行程,作業行程負責處理用戶的http請求,

(5)配置nginx 開機啟動
如果在(2)中 配置了 --sbin-path=/usr/bin/nginx ,那么把/usr/bin/nginx 命令添加到/etc/rc.d/rc.local 檔案中,rc.local 檔案會在系統啟動的時候執行,但CentOS 建議將開機啟服務寫成服務描述檔案添加到系統服務中,所以rc.local默認沒有執行權限,需要給他添加執行權限
#添加開機啟動配置
vim /etc/rc.d/rc.local
#添加如下引數
/usr/bin/nginx
#保存退出之后給rc.local檔案添加執行權限
chmod +x /etc/rc.d/rc.local
如果在(2)中沒有配置 --sbin-path=/usr/bin/nginx,那么把 nginx安裝目錄下的執行檔案路徑添加到/etc/rc.d/rc.local檔案中
#添加開機啟動配置
vim /etc/rc.d/rc.local
#添加如下引數
/opt/nginx/nginx-1.10.0/install/sbin/nginx
#保存退出之后給rc.local檔案添加執行權限
chmod +x /etc/rc.d/rc.local
(6)修改nginx.conf組態檔
#進入nginx配置路徑
cd /opt/nginx/nginx-1.10.0/install/conf
vim nginx.conf
兩個代理服務器都添加服務端 配置,如果不通過代理,我的訪問地址是http://192.168.13.148:7211/quartz和http://192.168.13.148:7210/quartz,


3、安裝keepalived
(1) 上傳keepalived-2.1.5.tar.gz 到/opt/nginx/目錄下(我都上傳到了這里),執行
tar -zxvf keepalived-2.1.5.tar.gz
在當前路徑下生成keepalived-2.1.5 目錄
(2)切入到keepalived 生成目錄,執行編譯配置操作:
#
./configure --prefix=/opt/nginx/keepalived-2.1.5/keepalived
(3) 再安裝 :
make && make install
#執行成功之后會在/opt/nginx/keepalived-2.1.5 路徑下生成keepalived 目錄,keepalived 就安裝到了這里
(4)設定keepalived 開機啟動
cp /opt/nginx/keepalived-2.15/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
#創建keepalived 檔案夾
mkdir /etc/keepalived
#復制組態檔
cp /opt/nginx/keepalived-2.15/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
#添加keepalived 服務
chkconfig -add keepalived
# 設定開機啟動
chkconfig keepalived on
#查看開機啟動串列
chkconfig --list
#啟動、停止keepalived 服務
service keepalived start/stop
(5)修改組態檔,啟動主從熱備,掛上虛擬ip,監聽nginx運行情況等
#切入到keepalived 組態檔路徑
cd /opt/nginx/keepalived-2.1.5/keepalived/etc/keepalived
#修改keepalived.conf
vim keepalived.conf
我們對配置檔案簡單介紹一下:

紅色部分是需要我們自己添加的部分,主要負責keepalived 對nginx的監控,藍色部分需要我們去修改
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
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
# 添加監控nginx 的腳本,主從都要有
vrrp_script chk_http_port {
script "/opt/nginx/chk_nginx.sh" #監控nginx 運行狀態的腳本
interval 2 #每兩秒鐘監控一次
weight -5 #nginx掛機,keepalived 權重值下降5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER #主機為MASTER,從機為BACKUP
interface ens33 #服務器聯網網卡
virtual_router_id 51 #keepalived 組id,一組主從keepalived ,值一致
priority 101 #權重,越大就會優先分配訪問
advert_int 1
authentication { #主從熱備通訊方式和密碼,主從必須一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #VIP,對外虛擬ip,可根據keepalived 和nginx的運行 狀態而漂移,主從一致
192.168.13.16
192.168.13.17
192.168.13.18
}
#添加keepalived 監控nginx 模塊,參考上面的chk_http_port 模塊
track_script {
chk_http_port
}
}
4、訪問
上面我們通過keepalived設定了虛擬ip,并且我們代理的地址是http://192.168.13.148:7210/quartz 和 http://192.168.13.148:7211/quartz兩個服務
訪問方式,在瀏覽器中輸入 http://192.168.13.16,直接就會跳轉到我們上面的兩個地址:

6、測驗是否為主從熱備和負載均衡,可以自行關閉服務端程式,自行關閉nginx行程,自行關閉keepalived行程,去測驗觀察,我這邊都做過測驗,沒有問題,希望你順利,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/230373.html
標籤:其他
上一篇:Linux系統安全與應用
