原理為:
調度器 利用 keepalived 保持高可用性,實現對系統的監控和VIP 的floating
NGINX 利用upstream模塊進行調度
關鍵點:
keepalived 對NGINX 狀態的監控: //利用配置文件中設定的腳本對調度器的nginx 進程的監控
實驗步驟:
基于上一篇LVS-DR架構來做,具體LVS-DR架構請參考上一篇
-
先設置主備單VIP 式LVS架構
-
調度器分別安裝nginx
#yum install nginx -y
-
修改配置文件,填加反代設置 /etc/nginx/nginx.conf
upstream websrvs{
server 172.18.48.63:80 ;
server 172.18.48.64:80 ;
server 127.0.0.1:80 backup;
}
注:這里是最基本的配置
location / {
proxy_pass http://websrvs;
}
-
配置keepalived 配置文件
訂制監控腳本:
vrrp_script nginxstatus {
script “kill -0 nginx && exit 0 || exit 1”
interval 1
weight -5
}
調用腳本:
track_script {
nginxstatus
}
-
啟動 nginx 和 keepalived 服務
service nginx start
service keepalived start
-
測試鏈接:
-
-
循環鏈接測試
-
-
-
現在構建雙主模型 // 即再次配置一套keepalived
- 備調度器設置
從調度器設置
重新啟動keepalived
#service keepalived restart
VIP分布:
測試鏈接:
-
現在停掉一個調度器中的nginx服務:
- VIP地址 已經轉移;再次鏈接實驗
-
- 再次鏈接: //成功
-
-
現在測驗nginx 的調度算法為ip_hash 時,VIP Floating 會不會帶來影響:
預想應該不會受影響,nginx 的哈希算法不變的話就不會變
-
- 注: ip_hash 不能于backup 共存,
-
官方說明:
If one of the servers needs to be temporarily removed, it should be marked with the down parameter in order to preserve the current hashing of client IP addresses.
-
重啟服務:
service nginx restart
-
鏈接測試:
雙調度器都在線時:
-
停掉149 的nginx 服務時:
測試鏈接:
-
149 nginx 服務重啟后:
-
-
測試鏈接:
- 148測試也沒有變化:
-
思考題
nginx使用ip_hash或hash $request_uri算法時,故障切換后,同一個客戶端是否依然能關聯至此前綁定的upstream server;
答:由于hash 時nginx 根據預定的算法進行的計算,所以只要IP和請求資源不變,被調度的地址就不會變
原創文章,作者:zhoulz,如若轉載,請注明出處:http://www.www58058.com/75428