三、实现Zabbix高可用

妖精的绣舞 提交于 2019-11-29 09:03:29

Zabbix高可用搭建系列:
一、Zabbix高可用架构
二、编译安装Zabbix
三、实现Zabbix高可用
四、MySQL主主同步与高可用


1.KeepAlived简介

      Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用,狭义的来讲就是主机与主机间的冗余和接管,Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。后来Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能,我们这儿使用的就是VRRP的功能。

2.实现zabbix-server高可用

Master:192.168.164.150

~]# yum install -y keepalived		#yum安装即可

~]# cd /etc/keepalived/
~]# mv keepalived.conf keepalived.conf_bak
~]# vi keepalived.conf
    global_defs {                       #全局配置         
         router_id znode1               #标识keepalived服务器的字符串,实现高可用时需要使用它标识节点,节点唯一
    }
 
    vrrp_script check_zabbix_server {                      #定义自动检查脚本
        script "/etc/keepalived/check_zabbix_server.sh"    #脚本路径
        interval 2         #每两秒执行一次
        weight -15         #当检查失败后,优先级 -15
        fall 2             #连续失败两次为失败
        rise 2             #连续成功两次为成功
    }
 
    vrrp_instance zabbix_server {   #定义vrrp实例。一个配置文件中可以实现多实例。但不同主机上互为master<-->backup的实例名需相同
        state MASTER                #定义为master
        interface ens32             #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。  
            192.168.164.100
        }
 
        track_script {
            check_zabbix_server     #调用脚本检测
        }
    }
 
~]# cat check_zabbix_server.sh      #检测zabbix-server是否存活,挂了会自动重启
    #!/bin/bash
    # check zabbix_server is alived
    # author by chuan
 
    STATUS_1=`ps -C zabbix_server --no-header | wc -l`
 
    if [ $STATUS_1 -eq 0 ];then
 
        service zabbix-server start
        sleep 3
 
        STATUS_2=`ps -C zabbix_server --no-header | wc -l`
        if [ $STATUS_2 -eq 0 ];then
              exit 1
        fi
    fi
 
~]# chmod a+x /etc/keepalived/check_zabbix_server.sh
~]# systemctl start keepalived                        
~]# systemctl enable keepalived      #开机启动
~]# ip a                             #VIP已经绑定上
    ...
    inet 192.168.164.150/24 brd 192.168.164.255 scope global noprefixroute dynamic ens32
    valid_lft 5066996sec preferred_lft 5066996sec
    inet 192.168.164.100/24 scope global secondary ens32
    valid_lft forever preferred_lft forever
    ...

Backup:192.168.164.151

~]# cat /etc/keepalived/keepalived.conf		#backup的配置与master几乎相同
    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 ens32
        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 {
            192.168.164.100
        }
   
        track_script {
            check_zabbix_server
        }    
    }

注:其余操作与master一致
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!