1. 程式人生 > 其它 >keepalived利用VRRP Script進行資源監控

keepalived利用VRRP Script進行資源監控

一 VRRP Script設定

1.1 定義vrrp script指令碼

vrrp script:自定義資源監控指令碼,vrrp例項根據指令碼返回值,公共定義,可被多個例項呼叫,定義在vrrp例項之外的獨立配置模組。一般放在global_def設定塊之後,是和global_defs平級的語句塊。

通常此指令碼用於監控指定應用的狀態,一旦發現應用的狀態異常,則觸發對master節點的權重見至低於slave節點,從而實現VIP切換到slave節點。

vrrp_script <SCRIPT_NAME> {          #定義一個檢測指令碼,在global_defs之外配置
	script <string>|<quoted-string>  #shell命令或指令碼路徑
    interval <integer>               #間隔時間,單位為妙,預設1s
    timeout <integer>                #超時時間
	weiht <integer:-254..254>        #預設為0,如果設定此值為負數,當上面指令碼返回值為非0時,會將此值與本節點權重相加可以降低節點權重,即fall.ruguo為正數,當指令碼返回值為0,會將此值與本節點權重相加可以提高節點權重,即標識rise,通常使用負值。
    fall <integer>                   #執行指令碼連續幾次都失敗,則轉換為失敗,建議設定2以上
    rise <integer>                   #執行指令碼連續幾次都成功,把伺服器從失敗標記為成功
    user USERNAME [GROUPNAME]        #執行檢測指令碼的使用者或組
    init_fail                        #設定預設標記為失敗狀態,檢測成功後再轉換為成功狀態
}

1.2 呼叫vrrp script

vrrp_instance VI_1 {
   ....
   track_script {
       <SCRIPT_NAME>
   }

}

二 利用指令碼實現主從切換

2.1 修改keepalived配置檔案

2.1.1 設定node-01配置檔案

點選檢視程式碼
root@node-01:~# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node-01
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_script chk_down {
script "/etc/keepalived/check_down.sh" #返回非0,觸發權重-30
interval 1
weight -30
fall 3
rise 2
timeout 2
}

vrrp_instance VI_1 {
state MASTER #node-02 為BACKUP
interface ens33
virtual_router_id 101
priority 100 #node-02 為80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.174.20
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
track_script {
chk_down
}
}

2.2 建立check_down.sh

root@node-01:~# cat /etc/keepalived/check_down.sh
#!/bin/bash

[ ! -f /etc/keepalived/down ]

2.3 驗證主從切換

2.3.1 檢視node-01狀態

root@node-01:~# hostname -I
192.168.174.120 192.168.174.20 

2.3.2 建立down檔案

root@node-01:~# touch /etc/keepalived/down

2.3.3 驗證node-01狀態

root@node-01:~# hostname -I
192.168.174.120 

2.3.4 檢視日誌

root@node-01:~# tail -f /var/log/syslog |grep  Keepalived
Nov  9 20:48:48 node-01 Keepalived_vrrp[7438]: VRRP_Script(chk_down) failed (exited with status 1)
Nov  9 20:48:48 node-01 Keepalived_vrrp[7438]: (VI_1) Changing effective priority from 100 to 70
Nov  9 20:48:51 node-01 Keepalived_vrrp[7438]: (VI_1) Master received advert from 192.168.174.121 with higher priority 80, ours 70
Nov  9 20:48:51 node-01 Keepalived_vrrp[7438]: (VI_1) Entering BACKUP STATE
Nov  9 20:48:51 node-01 Keepalived_vrrp[7438]: (VI_1) removing VIPs.

2.3.5 刪除down檔案

root@node-01:~# rm -rf /etc/keepalived/down

2.3.6 檢視vip狀態

root@node-01:~# hostname -I
192.168.174.120 192.168.174.20

2.3.7 檢視VIP切換日誌

root@node-01:~# tail -f /var/log/syslog |grep  Keepalived
Nov  9 20:53:10 node-01 Keepalived_vrrp[7438]: Script `chk_down` now returning 0
Nov  9 20:53:11 node-01 Keepalived_vrrp[7438]: VRRP_Script(chk_down) succeeded
Nov  9 20:53:11 node-01 Keepalived_vrrp[7438]: (VI_1) Changing effective priority from 70 to 100
Nov  9 20:53:11 node-01 Keepalived_vrrp[7438]: (VI_1) received lower priority (80) advert from 192.168.174.121 - discarding
Nov  9 20:53:13 node-01 Keepalived_vrrp[7438]: message repeated 2 times: [ (VI_1) received lower priority (80) advert from 192.168.174.121 - discarding]
Nov  9 20:53:14 node-01 Keepalived_vrrp[7438]: (VI_1) Receive advertisement timeout
Nov  9 20:53:14 node-01 Keepalived_vrrp[7438]: (VI_1) Entering MASTER STATE
Nov  9 20:53:14 node-01 Keepalived_vrrp[7438]: (VI_1) setting VIPs.
Nov  9 20:53:14 node-01 Keepalived_vrrp[7438]: (VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.174.20
Nov  9 20:53:14 node-01 Keepalived_vrrp[7438]: Sending gratuitous ARP on ens33 for 192.168.174.20
Nov  9 20:53:14 node-01 Keepalived_vrrp[7438]: message repeated 4 times: [ Sending gratuitous ARP on ens33 for 192.168.174.20]
Nov  9 20:53:19 node-01 Keepalived_vrrp[7438]: (VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.174.20
Nov  9 20:53:19 node-01 Keepalived_vrrp[7438]: Sending gratuitous ARP on ens33 for 192.168.174.20
Nov  9 20:53:19 node-01 Keepalived_vrrp[7438]: message repeated 4 times: [ Sending gratuitous ARP on ens33 for 192.168.174.20]