系統整體設計是採用Nginx做負載均衡,若出現Nginx單機故障,則導致整個系統無法正常運行。針對系統架構設計的高可用要求,我們需要解決Nginx負載均衡出現單機故障時,系統正常運行的需求。所以系統架構引入Keepalived組件,實現系統高可用。
一、Keepalived介紹
Keepalived是分佈式部署系統解決系統高可用的軟件,結合LVS(Linux Virtual Server)使用,其功能類似於heartbeat,解決單機宕機的問題。
二、Keepalived技術原理
keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。通過VRRP協議結合LVS,對組群服務器監控情況,若master出現宕機情況,則將VIP漂移到backup機上。實現了分佈式系統高可用。可以理解為:keepalived是LVS的管理軟件,根據監控情況,將宕機服務器從ipvsadm移除掉。
三、Keepalived+LVS+Nginx實現系統高可用
| 服務器 | IP地址 | 說明 |
| 虛擬IP | 192.168.1.120:80 | |
| 主機 | 192.168.1.104:80 | |
| 備機 | 192.168.1.103:80 | |
| Web站點A | 192.168.1.101:8081 | 不同端口 |
| Web站點B | 192.168.1.101:8082 | 不同端口 |
1、安裝ipvsadm,CentOS7自帶安裝包,通過yum進行安裝。實現系統支持LVS
| 1 | yum install ipvsadm |
2、安裝Keepalived軟件,並將keepalived設置開機啟動
| 1 | yum install Keepalived |
| 1 | systemctl enable keepalived |
3、進行Keepalived.conf配置,如果是MASTER機,將state BACKUP改為state MASTER。
| 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
vim /etc/keepalived/keepalived.conf
#配置的內容 ! Configuration File for keepalived
global_defs { notification_email { xxx@126.com #收到通知的郵件地址 } notification_email_from XX@126.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL }
vrrp_script monitor_nginx{ script “/usr/local/etc/keepalived/script/monitor_nginx.sh” interval 1 weight -15 }
vrrp_instance VI_1 { state BACKUP interface eno16777736 virtual_router_id 51 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.120 } track_script { monitor_nginx } }
virtual_server 192.168.1.120 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 50 protocol TCP
real_server 192.168.1.103 80 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }
real_server 192.168.1.104 80 { weight 5 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } |
4、配置監控shell腳本
| 1
2 3 4 5 6 7 8 9 10 |
(1)創建:vim /usr/local/etc/keepalived/script/monitor_nginx.sh<br><br>(2)SHELL文件內容<br>#!/bin/bash
if [ “$(ps -ef | grep “nginx: master process”| grep -v grep )” == “” ] then systemclt start nginx.service sleep 5 if [ “$(ps -ef | grep “nginx: master process”| grep -v grep )” == “” ] then killall keepalived fi fi |
以上完成相關配置,nginx和web服務以上一篇博客內容一致。如下對功能進行驗證測試。
四、實現測試展示
1、訪問系統情況:通過VIP(192.168.1.120)訪問系統頁面。因為設置了輪詢調度,所以刷新頁面訪問不同站點。
2、將 MASTER(192.168.1.104)關機前後,查看相關VLS情況:
(1)關機前:
(2)關機後:
我們看到將104服務器從 LVS移除掉。此時則將後續請求轉發到103服務器。
3、關機後,BACKUP服務器 keepalived日誌顯示無法連接104,並移除掉
5、開機後,將自動檢測到服務器正常,並加入LVS中。
以下文章點擊率最高
Loading…