我尝试使用keepalived创build一个zabbix集群。
我的node1configuration
vrrp_script chk_zbxserver { script "/usr/local/sbin/zabbix.sh" interval 2 weight 2 fall 2 rise 2 } vrrp_instance VI_1 { state MASTER interface enp0s3 virtual_router_id 51 priority 150 advert_int 1 notify /usr/local/sbin/notify-keepalived.sh authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.20 } track_script { chk_zbxserver }
我的node2configuration
vrrp_script chk_zbxserver { script "/usr/local/sbin/zabbix.sh" weight 2 interval 2 fall 2 rise 2 } vrrp_instance VI_1 { state BACKUP nopreempt interface enp0s3 virtual_router_id 51 priority 149 advert_int 1 notify /usr/local/sbin/notify-keepalived.sh authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.20 } track_script { chk_zbxserver } }
zabbix.sh脚本
#!/bin/bash SERVICE=zabbix_server STATUS=$(ps ax | grep $SERVICE | grep -v grep) if [ "$STATUS" != "" ] then exit 0 else exit 1 fi
通知脚本
#!/bin/bash TYPE=$1 NAME=$2 STATE=$3 case $STATE in "MASTER") systemctl start zabbix-server ;; "BACKUP") systemctl stop zabbix-server ;; "FAULT") systemctl stop zabbix-server exit 0 ;; *) echo "unknown state" exit 1 ;; esac
如果我在zabbix-server服务上发生故障(主节点1),则不会迁移VIP,如果我停止保活服务(或重新启动),VIP将被迁移。
但是,如果服务在备份(node2)上,当我停止zabbix-server时,VIP将被迁移到master。
我尝试使我在keepalived VRRP_script上看到的更改不会故障转移
但是不行。
谢谢