keepalived实现zabbix主备切换配置及脚本

zabbix_server01:keepalived.conf文件范例:

! Configuration File for keepalived

 

global_defs {                       #全局配置

                router_id znode1               #标识keepalived服务器的字符串,实现高可用时需要使用它标识节点,节点唯一

    }

 

vrrp_script zabbix_check

         {                      #定义自动检查脚本

          script "/etc/keepalived/zabbix_check.sh"    #脚本路径

          interval 2         #每两秒执行一次

          weight -15         #当检查失败后,优先级 -15

          fall 2             #连续失败两次为失败

          rise 2             #连续成功两次为成功

    }

 

vrrp_instance zabbix_server {   #定义vrrp实例。一个配置文件中可以实现多实例。但不同主机上互为master<-->backup的实例名需相同

        state MASTER                #定义为master

        interface ens192             #VIP绑定的网卡, 即接收或发送心跳通告的接口,即HA监测接口

        virtual_router_id 88        #虚拟路由标识(VRID),同一实例该数值必须相同,即master和backup中该值相同#同一网卡上的不同vrrp实例,该值必须不能相同。取值范围0-255

        priority 100                #优先级, 优先级最高的为master

        advert_int 1                #心跳信息发送和接收时间间隔,单位为秒

        authentication {            #认证方式,同一实例中这个配置必须完全一样才可通过认证。只建议使用PASS认证

        auth_type PASS

        auth_pass test.com     #最多支持8字符,超过8字符将只取前8字符

      }

 

virtual_ipaddress {         #设置的VIP。只有master节点才会设置。master出现故障后,VIP会故障转移到backup。

            10.2.1.59

        }

 

        track_script {

            zabbix_check     #调用脚本检测

        }

    }

********************

编写脚本:

大意是查看zabbix_server01是否存活,若不存活,则关闭keepalived,切换到server02端

#!/bin/bash

    # check zabbix_server01 is alived

    # author by chuan

 

    STATUS_1=`ps -C zabbix_server --no-header | wc -l`

 

    if [ $STATUS_1 -eq 0 ];then

         systemctl stop keepalived

fi

******************

zabbix_server02:keepalived.conf文件范例:

 global_defs {
       router_id znode2                  #标识keepalived服务器的字符串,实现高可用时需要使用它标识节点,节点唯一
    }

    vrrp_script check_zabbix_server {
        script "/etc/keepalived/check_zabbix_server.sh"
        interval 2
        weight -15
        fall 2
        rise 2
    }

    vrrp_instance zabbix_server {
        state BACKUP
        interface ens192
        virtual_router_id 88                    #虚拟路由标识(VRID),同一实例该数值必须相同,即与master一致
        priority 90                                             #优先级为90,当master正常运行时,优先级为100,当master上的zabbix挂了,脚本检查不通过,优先级会减去15,变为85,此时backup优先级高于master,VIP会漂移到backup上
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass test.com
        }

        virtual_ipaddress {
            10.2.1.59
        }

        track_script {
            check_zabbix_server
        }
    }
**********

脚本

#check zabbix_server is alived
# author by chuan

    STATUS_1=`ps -C zabbix_server --no-header | wc -l`

    if [ $STATUS_1 -eq 39 ];then

        systemctl restart zabbix_server

    fi
注释:39为zabbix_server进程号;根据实际情况查看

猜你喜欢

转载自blog.csdn.net/Helios32/article/details/116158884