快连VPN:速度和安全性最佳的VPN服务
在進行負載均衡時,一般都會部署一個健康檢查工具,確保後端real server是正常的,可以提供服務的,避免出現後端real server 已經宕機或服務不可用時,負載均衡器扔將請求分發到real server,影響整體業務訪問。健康檢查的方式有很多,可以自行部署腳本,當然當前用的比較多的就是keepalived服務了。keepalived的健康檢查方式有三種,tcp_check、http_check、misc_check。
keepalived配置簡述
keepalived主要有三個模塊,分別是core、check和vrrp。core模塊爲keepalived的核心,負責主進程的啓動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現VRRP協議的keepalived只有一個配置文件keepalived.conf,裏面主要包括以下幾個配置區域,分別是global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance和virtual_server。
yum install keepalived -y登錄後複製
配置文件:
! Configuration File for keepalived# vi /etc/keepalived/keepalived.conf# 全局配置 主要是配置故障發生時的通知對象以及機器標識global_defs {notification_email {r_xl@xl.com# 設置報警郵件接收地址,需要開啓 sendmail 服務}notification_email_from s_xl@xl.com# 設置郵件的發送地址smtp_server 192.168.2.241# 設置通知的 SMTP Server 地址smtp_connect_timeout 30# 設置通知的 SMTP Server 的超時時間router_id LVS_DEVEL_1# 路由ID,標識本節點的字符串,郵件通知時會用到}# 自定義VRRP實例健康檢查腳本 keepalived只能做到對自身問題和網絡故障的監控,Script可以增加其他的監控來判定是否需要切換主備vrrp_script chk_sshd {script "killall -0 sshd"# 示例爲檢查sshd服務是否運行中interval 2 # 檢查間隔時間weight -4# 檢查失敗降低的權重}# VRRP實例 定義對外提供服務的VIP區域及其相關屬性vrrp_instance VI_1 {state MASTER # 狀態只有 MASTER 和 BACKUP 兩種,並且要大寫,MASTER 爲工作狀態,BACKUP 是備用狀態interface eth0 # 節點固有IP(非VIP)的網卡,用來發VRRP包virtual_router_id 51 # 虛擬路由標識,同一個 vrrp_instance 的 MASTER 和 BACKUP 的 vitrual_router_id 需要一致priority 100 # 優先級,同一個 vrrp_instance 的 MASTER 優先級必須比 BACKUP 高advert_int 1 # MASTER 與 BACKUP 負載均衡器之間同步檢查的時間間隔,單位爲秒authentication { # 設置認證auth_type PASS # 認證方式,支持 PASS 和 HAauth_pass 1111 # 證密碼爲明文,同一 vrrp 實例 MASTER 與 BACKUP 使用相同的密碼才能正常通信}virtual_ipaddress {# 虛擬IP地址(VIP),可以有多個地址,每個地址佔一行192.168.12.200}track_script { # 自定義健康檢查腳本chk_sshd # 配置上面自定義的vrrp腳本調用名}}# 設置虛擬服務器virtual_server 192.168.12.200 6500 { # 指定虛擬IP地址和服務端口delay_loop 6 # 服務健康檢查週期,6秒lb_algo rr # 負載均衡調度算法,一般用wrr、rr、wlclb_kind DR # 負載均衡轉發規則。一般包括DR,NAT,TUN 3種persistence_timeout 5# 會話保持時間。把用戶請求請求間隔在未超過保持時間時,一直分發到某個服務節點protocol TCP # 轉發協議 有TCP和UDP兩種# 配置真實服務器real_server 192.168.2.222 6500 {#指定IP和端口weight 1 # 權重,數值越大,權重越高# 健康檢查方式 常見有 TCP_CHECK, HTTP_GET, SSL_GET, MISC_CHECK(自定義腳本)TCP_CHECK { # 通過TcpCheck方式判斷RealServer的健康狀態connect_timeout 10# 連接超時時間nb_get_retry 3# 重連次數delay_before_retry 3# 重連時間間隔connect_port 6500 # 檢測端口}}# 配置真實服務器real_server 192.168.2.222 6500 {#指定IP和端口weight 1# 權重,數值越大,權重越高# 健康檢查方式 常見有 TCP_CHECK, HTTP_GET, SSL_GET, MISC_CHECK(自定義腳本)TCP_CHECK { # 通過TcpCheck判斷RealServer的健康狀態connect_timeout 10# 連接超時時間nb_get_retry 3# 重連次數delay_before_retry 3# 重連時間間隔connect_port 6500 # 檢測端口} } }登錄後複製
健康檢查類型
TCP_CHECKTCP_CHECK { # 通過TcpCheck判斷RealServer的健康狀態connect_timeout 10# 連接超時時間nb_get_retry 3# 重連次數delay_before_retry 3# 重連時間間隔connect_port 6500 # 檢測端口}登錄後複製
2.HTTP_GET
HTTP_GET {url {path check/200.jsp# 檢查的uri地址digest 1362a91278f0806aa1d33e1e26d67763 # 用keepalived自帶的genhash生成,/usr/bin/genhash -s rsIP -p port -u uri}connect_timeout 3 # 鏈接超時時間nb_get_retry 3 # 重連次數delay_before_retry 3# 重連時間間隔connect_port 6500# 檢測端口}登錄後複製
3.MISC_CHECK
keepalived.conf配置:
MISC_CHECK {misc_path "/etc/keepalived/misc_check.sh http://192.168.2.222:6500/check/200.jsp"# 外部程序或者腳本的路徑和參數misc_timeout 10 # 腳本執行的超時時間misc_dynamic#動態權重標誌。腳本返回0則檢測成功權重不變,返回1表示失敗權重設置爲0}登錄後複製
腳本示例:
#!/bin/bash# ./misc_check.sh http://192.168.2.222:6500/check/200.jspif [ $# -ne 1 ]; thenecho "Warning: command param error."exit 1elseCHECK_URL=$1CMD=`/usr/bin/curl -I ${CHECK_URL} 2>/dev/null | grep "200 OK" | wc -l`if [ ${CMD} -eq 1 ]; thenecho "Succ: Check proxy ${CHECK_URL} is succeed."exit 0elseecho "Fail: check proxy ${CHECK_URL} is failed."exit 1fifi登錄後複製
以上就是解讀Linux 系統Keepalived健康檢查機制的詳細內容,更多請關注本站其它相關文章!