Keepalived高可用軟體概述
阿新 • • 發佈:2020-10-14
Keepalived高可用軟體概述:
1)網際網路主要的高可用軟體:Keepalived、Hearttbeat、其中Keepalived是輕量級的,Keepalived是一款開源、免費的實現網站、資料庫、業務系統之間的高可用軟體,是目前企業中使用最廣泛的軟體。
2)Keepalived實現高可用,主要考兩個功能實現:
- 健康檢查:
- VRRP技術:
! Configuration File for5)配置檔案引數詳解: 完整的keepalived的配置檔案,其配置檔案keepalived.conf可以包含三個文字塊:全域性定義塊、VRRP例項定義塊機虛擬伺服器定義塊。全域性定義塊和虛擬伺服器定義塊是必須的,如果在只有一個負載均衡器的場合,就不需要VRRP例項定義塊。 #全域性定義塊:keepalived global_defs { notification_email { [email protected] } notification_email_from wgkgood@163.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { script "/data/sh/check_nginx.sh" interval 2 weight 2 }# VIP1 vrrp_instance VI_1 { state BACKUP interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 151 priority 100 advert_int 5 nopreempt authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress {192.168.0.198 } track_script { chk_nginx } }
! Configuration File for keepalived # !改行表示註釋; global_defs { notification_email { # 指定keepalived在發生切換時需要傳送email到的物件,一行一個; [email protected] } notification_email_from wgkgood@163.com # 指定發件人; smtp_server 127.0.0.1 # 指定smtp伺服器地址; smtp_connect_timeout 30 # 指定smtp連線超時時間; router_id LVS_DEVEL # 執行keepalived機器的標識; }
#監控nginx程序:
vrrp script chk_nginx { script "/data/script/nginx.sh" # 監控服務指令碼路徑,指令碼需要有x執行許可權; interval 2 # 檢測時間隔(執行指令碼間隔); weight 2 }
#VRRP例項定義塊:
vrrp sync group VG_1{ # 監控多個網段的例項; group{ VI_1 # 例項名; VI_2 } notify master /data/sh/nginx.sh # 指定當時切換到master時,執行指令碼; notify backup /data/sh/nginx.sh # 指定當時切換到backup時,執行指令碼; notify /data/sh/nginx.sh # 發生任何切換,均執行的指令碼; smtp alert; # 使用global defs中提供的郵件地址和smtp伺服器傳送郵件通知; } vrrp instance VI_1{ state BACKUP # 設定主機狀態; MASTER/BACKUP nopreempt # 設定為不搶佔; interface ens33 # 對外提供服務的網路介面; lvs sync daemon interface ens33 # 負載均衡器之間監控介面; track interface { # 設定額外的監控,網絡卡出現問題都會切換; ens33 eth0 } macast src ip # 傳送多播包的地址,如果不設定預設使用繫結網絡卡的primary ip; garp master delay # 在切換到master狀態後,延遲進行gratuitous ARP請求; virtual router id 50 # VRID標記,路由ID可通過#tcpdump vrrp檢視; priority 90 # 優先順序,高優先順序競選為master; advert int 5 # 檢查間隔,預設5秒; preempt delay # 搶佔延時,預設5秒; debug # debug日誌級別; authentication { # 設定認證; auth type PASS # 認證方式; auth pass 1111 # 認證密碼; } track script{ # 以指令碼為監控; chk nginx; chk_nginx } virtual ipaddress { #設定vip 192.168.1.188 } }
注意: 使用了指令碼監控nginx或者MySQL,不需要如下虛擬伺服器設定塊。
#全域性定義塊:
virtual server 192.168.1.188 3306 { delay loop 6 # 健康檢查時間間隔; lb_algo rr # 排程演算法rr|wrr|lc|wlc|lblc|sh|dh; lb kind DR # 負載均衡轉發規則 ; NAT|DR|TUN persistence timeout 5 # 會話保持時間; porsistence TCP # 使用的協議; real server 192.168.1.199 3306 { weight 1 # 預設為1,0為失效; notify up <string> | <quoted-string> # 在檢測到server up後執行指令碼; notify down <string> | <quoted-string> # 在檢測到server down後執行指令碼; TCP_CHECK { connect_timeout 3 # 連線超時時間; nb_get_retry 1 # 重連次數; delay_before_retry 1 # 重連間隔時間; connect_port 3306 # 健康檢查的埠; } HTTP_GET { url { path /index.html # 檢測url,可寫多個 digest 24326582a86bee478bac72d5af25089e # 檢測效驗碼; genhash -s IP -p 80 -u http://IP/index.html # digest效驗碼獲取方法: status_code 200 # 檢測返回http狀態碼 } } }
檢視日誌:
tail -fn 30 /var/log/messages