2.【详细到哭系列】keepalived配置,实现zabbix…

2020-03-20 16:06:35来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

2.【详细到哭系列】keepalived配置,实现zabbix主备的切换

部署阶段及问题笔记: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时,执行的脚本
} 

如下图:

image

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" 
} 

如下图:

image

注:主备中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

image

在服务器执行:

[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

image

注:该脚本作用为当主备发生切换或者回切时始终保持有VIP的机器有zabbix服务而另一台无zabbix服务,保证对外提供服务的只有一台机器。(若两台服务器都提供zabbix服务则每一次事件都会触发两次告警)

主备机分别重启keepalived服务并加入启动服务

[root@zabbix-master ~]# systemctl restart keepalived
[root@zabbix-master ~]# systemctl enable keepalived 

检查所有相关服务,接下来就测试:

image

高可用测试

Zabbix-master查看VIP信息:

image

模拟zabbix-master的zabbix或者mariadb服务出现故障:

image

此时再Zabbix-slave查看网卡信息:

image

Zabbix-web页面也是可以正常访问的:

image

接下来我们模拟zabbix-master故障恢复,测试VIP是否回切:

image

image

注:到此zabbix高可用就已经实现了。

注:如果不想VIP不必要的主备切换,导致zabbix-master恢复后再次抢占VIP问题,自行了解"解决VIP抢占问题"。


原文链接:https://www.cnblogs.com/l-hh/p/12530882.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:3. 【详细到哭系列】Zabbix监控并且实现各种报警

下一篇:附014.Kubernetes Prometheus+Grafana+EFK+Kibana+Glusterfs整合