環境:node
HOST | IP |
---|---|
vip | 192.168.12.40 |
keepalived-01 | 192.168.12.41 |
keepalived-02 | 192.168.12.42 |
安裝:mysql
yum install keepalived -y systemctl enable keepalived.service
vrrp選舉是經過224.0.0.18發送組播的,先把這個加入iptables容許-A RH-Firewall-1-INPUT -d 224.0.0.18/32 -j ACCEPT
nginx
配置參數介紹:sql
notification_email: 表示keepalived在發生諸如切換操做時須要發送email通知以及email發送給哪些郵件地址郵件地址能夠多個每行一個 notification_email_from admin@example.com: 表示發送通知郵件時郵件源地址是誰 smtp_server 127.0.0.1: 表示發送email時使用的smtp服務器地址這裏能夠用本地的sendmail來實現 smtp_connect_timeout 30: 鏈接smtp鏈接超時時間 router_id node1: 機器惟一標識 notify_master /path/to/to_master.sh 表示當切換到master狀態時要執行的腳本 notify_backup /path_to/to_backup.sh 表示當切換到backup狀態時要執行的腳本 notify_fault "/path/fault.sh VG_1" keepalived出現故障時執行的腳本 notify /path/to/notify.sh smtp_alert 表示切換時給global defs中定義的郵件地址發送郵件通知 state: state指定instance(Initial)的初始狀態就是說在配置好後這臺 服務器的初始狀態就是這裏指定的但這裏指定的不算仍是得要經過競選經過優先級來肯定裏若是這裏設置爲master但如若他的優先級不及另一臺 那麼這臺在發送通告時會發送本身的優先級另一臺發現優先級不如本身的高那麼他會就回搶佔爲master interface: 實例綁定的網卡由於在配置虛擬VIP的時候必須是在已有的網卡上添加的 dont track primary: 忽略VRRP的interface錯誤 track interface: 跟蹤接口設置額外的監控裏面任意一塊網卡出現問題都會進入故障(FAULT)狀態例如用nginx作均衡器的時候內網必須正常工做若是內網出問題了這個均衡器也就沒法運做了因此必須對內外網同時作健康檢查 mcast src ip: 發送多播數據包時的源IP地址這裏注意了這裏實際上就是在那個地址上發送VRRP通告這個很是重要必定要選擇穩定的網卡端口來發送這裏至關於heartbeat的心跳端口若是沒有設置那麼就用默認的綁定的網卡的IP也就是interface指定的IP地址 garp master delay: 在切換到master狀態後延遲進行免費的ARP(gratuitous ARP)請求,默認5s virtual router id: 這裏設置VRID這裏很是重要相同的VRID爲一個組他將決定多播的MAC地址 priority 100: 設置本節點的優先級優先級高的爲master advert int: 設置MASTER與BACKUP負載均衡之間同步即主備間通告時間檢查的時間間隔,單位爲秒,默認1s virtual ipaddress: 這裏設置的就是VIP也就是虛擬IP地址他隨着state的變化而增長刪除當state爲master的時候就添加當state爲backup的時候刪除這裏主要是有優先級來決定的和state設置的值沒有多大關係這裏能夠設置多個IP地址 virtual routes: 原理和virtual ipaddress同樣只不過這裏是增長和刪除路由 lvs sync daemon interface: lvs syncd綁定的網卡,相似HA中的心跳檢測綁定的網卡 authentication: 這裏設置認證 auth type: 認證方式能夠是PASS或AH兩種認證方式 auth pass: 認證密碼 nopreempt: 設置不搶佔master,這裏只能設置在state爲backup的節點上並且這個節點的優先級必須別另外的高,好比master由於異常將調度圈交給了備份serve,master serve檢修後沒問題,若是不設置nopreempt就會將調度權從新奪回來,這樣就容易形成業務中斷問題 preempt delay: 搶佔延遲多少秒,即延遲多少秒後競選master debug: debug級別 notify master: 和sync group這裏設置的含義同樣能夠單獨設置例如不一樣的實例通知不一樣的管理人員http實例發給網站管理員mysql的就發郵件給DBA**
配置實例
keepalived-01服務器
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id 41 } vrrp_instance lvs { state BACKUP interface eth0 virtual_router_id 40 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.12.40 } }
keepalived-02負載均衡
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id 42 } vrrp_instance lvs { state BACKUP interface eth0 virtual_router_id 40 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.12.40 } }
Keepalived主備配置文件區別:
router_id 這個ID主備必須惟一
state 狀態初始信息能夠不一致,建議都設置爲BACKUP,讓他們用過priority設置的值去選舉出MASTER。
priority 主備競選優先級數值不一致
以上爲實現高可用的配置,和華爲的vrrp配置差不對,思科的私有協議也差很少。ide