部署階段及問題筆記:https://www.cnblogs.com/l hh/category/1400262.html 兩台機器都安裝keepalived keepalived配置 Zabbix master配置文件: 如下圖: Zabbix slave配置文件: 如下圖: 註:主備中chk_za ...
部署階段及問題筆記:https://www.cnblogs.com/l-hh/category/1400262.html
兩台機器都安裝keepalived
[root@zabbix-master ~]# yum install keepalived.x86_64 -y
keepalived配置
Zabbix-master配置文件:
! Configuration File for keepalived
global_defs {
router_id zabbix-master #router_id 機器標識
}
vrrp_script chk_zabbix {
script "/etc/keepalived/check.sh zabbix_server"
interval 1 #每1秒檢測一次服務的運行狀態
weight 30 #優先順序變化幅度
fall 2 #嘗試兩次都成功才成功
rise 2 #嘗試兩次都失敗才失敗
}
vrrp_script chk_mysql {
script "/etc/keepalived/check.sh mysqld"
interval 1
weight 20
fall 2
rise 2
}
vrrp_instance VI_1 { #vrrp實例定義部分
state MASTER #設置lvs的狀態,MASTER和BACKUP兩種,必須大寫
interface eth0 #設置對外服務的介面
virtual_router_id 100 #設置虛擬路由標示,這個標示是一個數字,同一個vrrp實例使用唯一標示
priority 100 #定義優先順序,數字越大優先順序越高,在一個vrrp——instance下,master的優先順序必須大於backup
advert_int 1 #設定master與backup負載均衡器之間同步檢查的時間間隔,單位是秒
authentication { #設置驗證類型和密碼
auth_type PASS #主要有PASS和AH兩種
auth_pass 1111 #驗證密碼,同一個vrrp_instance下MASTER和BACKUP密碼必須相同
}
virtual_ipaddress { #設置虛擬ip地址,可以設置多個,每行一個
192.168.115.200
}
track_script {
chk_zabbix
}
track_script {
chk_mysql
}
notify_master "/etc/keepalived/zabbix.sh start" #指定當切換到master時,執行的腳本
notify_backup "/etc/keepalived/zabbix.sh stop" #指定當切換到backup時,執行的腳本
}
如下圖:
Zabbix-slave配置文件:
! Configuration File for keepalived
global_defs {
router_id zabbix-slave
}
vrrp_script chk_zabbix {
script "/etc/keepalived/check.sh zabbix_server"
interval 1
weight 5
fall 2
rise 2
}
vrrp_script chk_mysql {
script "/etc/keepalived/check.sh mysqld"
interval 1
weight 45
fall 2
rise 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 100
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.115.200
}
track_script {
chk_zabbix
}
track_script {
chk_mysql
}
notify_master "/etc/keepalived/zabbix.sh start"
notify_backup "/etc/keepalived/zabbix.sh stop"
}
如下圖:
註:主備中chk_zabbix和chk_mysql的weight值。該設置目的是保證主機的zabbix或者mysql服務異常時keepalived能正常發生切換,並且當主機的zabbix和mysql服務重新正常啟動時keepalived能夠回切。
check.sh中的腳本(主備機相同):
註:該腳本為判斷zabbix、mysql和http服務的狀態,某個服務出現異常時將停止keepalived,VIP切換到zabbix-slave上。
#!/bin/bash
zabbix_server=`ps -C zabbix_server --no-header | wc -l`
mysqld=`ps -C mysqld --no-header | wc -l`
case $1 in
zabbix_server)
if [ $zabbix_server -gt 0 ];then
exit 0
else
exit 1
fi
;;
mysqld)
if [ $mysqld -gt 0 ];then
exit 0
else
exit 1
fi
;;
Esac
在伺服器執行:
[root@zabbix-master keepalived]# chmod +x check.sh
Zabbix.sh腳本(主備機相同):
#!/bin/bash
case $1 in
start)
systemctl start zabbix-server
;;
stop)
systemctl stop zabbix-server
;;
Esac
註:該腳本作用為當主備發生切換或者回切時始終保持有VIP的機器有zabbix服務而另一臺無zabbix服務,保證對外提供服務的只有一臺機器。(若兩台伺服器都提供zabbix服務則每一次事件都會觸發兩次告警)
主備機分別重啟keepalived服務並加入啟動服務
[root@zabbix-master ~]# systemctl restart keepalived
[root@zabbix-master ~]# systemctl enable keepalived
檢查所有相關服務,接下來就測試:
高可用測試
Zabbix-master查看VIP信息:
模擬zabbix-master的zabbix或者mariadb服務出現故障:
此時再Zabbix-slave查看網卡信息:
Zabbix-web頁面也是可以正常訪問的:
接下來我們模擬zabbix-master故障恢復,測試VIP是否回切:
註:到此zabbix高可用就已經實現了。
註:如果不想VIP不必要的主備切換,導致zabbix-master恢復後再次搶占VIP問題,自行瞭解"解決VIP搶占問題"。