nginx+keepalive實現高可用負載均衡詳解
一、什么是keepalived?
Keepalived軟件起初是專為LVS負載均衡軟件設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,后來又加入了可以實現高可用的VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗余協議)功能。因此,Keepalived除了能夠管理LVS軟件外,還可以作為其他服務(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟件
二、如何實現故障轉移?
Keepalived高可用服務對之間的故障切換轉移,是通過 VRRP 來實現的。在 Keepalived服務正常工作時,主 Master節點會不斷地向備節點發送(多播的方式)心跳消息,用以告訴備Backup節點自己還活着,當主 Master節點發生故障時,就無法發送心跳消息,備節點也就因此無法繼續檢測到來自主 Master節點的心跳了,於是調用自身的接管程序,接管主Master節點的 IP資源及服務。而當主 Master節點恢復時,備Backup節點又會釋放主節點故障時自身接管的IP資源及服務,恢復到原來的備用角色。
實驗環境配置如下:
192.168.1.110:nginx + keepalived master 主
192.168.1.111:nginx + keepalived backup 從
192.168.1.111:tomcat_8080
192.168.1.111:tomcat_8081
虛擬ip(VIP):192.168.1.200,對外提供服務的ip,也可稱作浮動ip,各個組件之間的關系圖如下:
三、安裝及配置
1. 下載地址:https://pan.baidu.com/s/1G7sLL-YkZGSMu8G76yz1Rw 密碼:adbw。
2. keepalived安裝步驟:192.168.1.110:nginx + keepalived master節點:
2.1 ./configure --prefix=/data/program/keepalived --sysconf=/etc
##因為keepalive啟動時候會默認讀取/etc/keepalived/keepalived.conf
2.2. make && make install
3. 修改/etc/keepalived/keepalived.conf配置文件信息
-
global_defs { #全局配置
-
-
notification_email {
-
-
james@qq.com #設置報警郵件地址,可以設置多個,每行一個。需要開啟sendmail服務。
-
-
}
-
-
notification_email_from sns-lvs@gmail.com
-
-
smtp_server smtp.hysec.com #設置SMTP Server地址
-
-
smtp_connection_timeout 30 #設置SMTP Server的超時時間
-
-
router_id nginx_master #表示運行Keepalived服務器的一個標識,唯一的
-
-
}
-
-
vrrp_script chk_http_port {
-
-
script "/usr/local/src/check_nginx_pid.sh" #心跳執行的腳本
-
-
interval 2 #(檢測腳本執行的間隔,單位是秒)
-
-
weight 2
-
-
}
-
-
vrrp_instance VI_1 { #vrrp 實例定義部分
-
-
state MASTER # 指定keepalived的角色,MASTER為主,BACKUP為備
-
-
interface ens33 # 當前進行vrrp通訊的網絡接口卡(當前centos的網卡)
-
-
virtual_router_id 66 # 虛擬路由編號,主從要一直
-
-
priority 100 # 優先級,數值越大,獲取處理請求的優先級越高
-
-
advert_int 1 # 檢查間隔,默認為1s(vrrp組播周期秒數)
-
-
authentication {
-
-
auth_type PASS #設置驗證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通信
-
-
auth_pass 1111
-
-
}
-
-
track_script {
-
-
chk_http_port #(調用檢測腳本)
-
-
}
-
-
virtual_ipaddress {
-
-
192.168.1.200 # 定義虛擬ip(VIP),可多設,每行一個
-
-
}
-
-
}
以上主節點的配置, 從節點backup配置和主節點一樣,只是state要改成backup, priority 值要比master小點即可
四、啟動keepalived
/data/program/keepalived/sbin/keepalived
啟動順序:
1. 啟動192.168.1.111服務器上的tomcat8080和tomcat8081
2. 啟動Master 192.168.1.110的Keepalived節點,sh腳本也會被執行並自動啟動Nginx
3. 啟動Backup 192.168.1.111的Keepalived節點,sh腳本也會被執行並自動啟動Nginx
注:不需要手動啟動Nginx
4,查看keepalived日志: tail -f /var/log/messages
五、KEEPLIVED主從故障測試
1. 兩組Keepalied+Nginx應用都啟動成功后,使用VIP以負載均衡方式訪問兩個Tomcat
2. 停止192.168.1.110主節點的Nginx應用,觀察Nginx狀態,並訪問Tomcat;
3. 停止192.168.1.110主節點的Keepalived應用,觀察日志/var/log/messages,並訪問tomcat
4. 觀察1.111從節點的日志,角色變更情況。