部署階段及問題筆記: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秒檢測一次服務(wù)的運行狀態(tài)
weight 30 #優(yōu)先級變化幅度
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 #設(shè)置lvs的狀態(tài),MASTER和BACKUP兩種,必須大寫
interface eth0 #設(shè)置對外服務(wù)的接口
virtual_router_id 100 #設(shè)置虛擬路由標示,這個標示是一個數(shù)字,同一個vrrp實例使用唯一標示
priority 100 #定義優(yōu)先級,數(shù)字越大優(yōu)先級越高,在一個vrrp——instance下,master的優(yōu)先級必須大于backup
advert_int 1 #設(shè)定master與backup負載均衡器之間同步檢查的時間間隔,單位是秒
authentication { #設(shè)置驗證類型和密碼
auth_type PASS #主要有PASS和AH兩種
auth_pass 1111 #驗證密碼,同一個vrrp_instance下MASTER和BACKUP密碼必須相同
}
virtual_ipaddress { #設(shè)置虛擬ip地址,可以設(shè)置多個,每行一個
192.168.115.200
}
track_script {
chk_zabbix
}
track_script {
chk_mysql
}
notify_master "/etc/keepalived/zabbix.sh start" #指定當切換到master時,執(zhí)行的腳本
notify_backup "/etc/keepalived/zabbix.sh stop" #指定當切換到backup時,執(zhí)行的腳本
}
如下圖:
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值。該設(shè)置目的是保證主機的zabbix或者mysql服務(wù)異常時keepalived能正常發(fā)生切換,并且當主機的zabbix和mysql服務(wù)重新正常啟動時keepalived能夠回切。
check.sh中的腳本(主備機相同):
注:該腳本為判斷zabbix、mysql和http服務(wù)的狀態(tài),某個服務(wù)出現(xiàn)異常時將停止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
在服務(wù)器執(zhí)行:
[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
注:該腳本作用為當主備發(fā)生切換或者回切時始終保持有VIP的機器有zabbix服務(wù)而另一臺無zabbix服務(wù),保證對外提供服務(wù)的只有一臺機器。(若兩臺服務(wù)器都提供zabbix服務(wù)則每一次事件都會觸發(fā)兩次告警)
主備機分別重啟keepalived服務(wù)并加入啟動服務(wù)
[root@zabbix-master ~]# systemctl restart keepalived
[root@zabbix-master ~]# systemctl enable keepalived
檢查所有相關(guān)服務(wù),接下來就測試:
高可用測試
Zabbix-master查看VIP信息:
模擬zabbix-master的zabbix或者mariadb服務(wù)出現(xiàn)故障:
此時再Zabbix-slave查看網(wǎng)卡信息:
Zabbix-web頁面也是可以正常訪問的:
接下來我們模擬zabbix-master故障恢復(fù),測試VIP是否回切:
注:到此zabbix高可用就已經(jīng)實現(xiàn)了。
注:如果不想VIP不必要的主備切換,導(dǎo)致zabbix-master恢復(fù)后再次搶占VIP問題,自行了解"解決VIP搶占問題"。
|