7.8 Keepalived 部署文档 ======================= |image0| 参考文档:\ `keepalived搭建zabbix server双机高可用 `__ .. code:: bash # 安装 yum install keepalived -y yum install psmisc -y # 启动 /usr/sbin/keepalived -D # 关闭 pgrep keepalived |xargs kill -15 # 启动 systemctl start keepalived.service # 停止 systemctl stop keepalived.service 在\ ``/etc/keepalived`` 下新增脚本 ``check.sh`` .. code:: bash #!/bin/bash workers=`ps -C $1 --no-header | wc -l` if [ $workers -gt 0 ];then exit 0 else exit 1 fi 并添加执行权限 ``chmod +x /etc/keepalived/check.sh`` 在 ``zabbix-01`` (主)中添加配置文件\ ``/etc/keepalived/keepalived.conf``\ ,千万记得根据实际情况修改vip,和网卡名 .. code:: bash ! Configuration File for keepalived global_defs { router_id zabbix-01 #router_id 机器标识,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到。 } vrrp_script chk_zabbix { script "/etc/keepalived/chk_zabbix.sh" interval 2 weight -10 fall 2 #尝试两次都成功才成功 rise 2 #尝试两次都失败才失败 } vrrp_instance VI_1 { #vrrp实例定义部分 state MASTER #设置lvs的状态,MASTER和BACKUP两种,必须大写 interface eth1 #设置对外服务的接口 virtual_router_id 88 #设置虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示 priority 100 #定义优先级,数字越大优先级越高,在一个vrrp——instance下,master的优先级必须大于backup nopreempt advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #设置验证类型和密码 auth_type PASS #主要有PASS和AH两种 auth_pass 2345 #验证密码,同一个vrrp_instance下MASTER和BACKUP密码必须相同 } virtual_ipaddress { #设置虚拟ip地址,可以设置多个,每行一个 219.157.114.206/24 dev eth1 label eth1:0 } track_interface { eth1 } track_script { chk_zabbix } notify_master "service zabbix-server start" #指定当切换到master时,执行的脚本 notify_backup "service zabbix-server stop" #指定当切换到backup时,执行的脚本 } 在 ``zabbix-02 (备)中添加配置文件``/etc/keepalived/keepalived.conf\` .. code:: bash ! Configuration File for keepalived global_defs { router_id zabbix-02 #router_id 机器标识,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到。 } vrrp_script chk_zabbix { script "/etc/keepalived/chk_zabbix.sh" interval 2 weight -10 fall 2 #尝试两次都成功才成功 rise 2 #尝试两次都失败才失败 } vrrp_instance VI_1 { #vrrp实例定义部分 state BACKUP #设置lvs的状态,MASTER和BACKUP两种,必须大写 interface eth1 #设置对外服务的接口 virtual_router_id 88 #设置虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示 priority 95 #定义优先级,数字越大优先级越高,在一个vrrp——instance下,master的优先级必须大于backup advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #设置验证类型和密码 auth_type PASS #主要有PASS和AH两种 auth_pass 2345 #验证密码,同一个vrrp_instance下MASTER和BACKUP密码必须相同 } virtual_ipaddress { #设置虚拟ip地址,可以设置多个,每行一个 219.157.114.206/24 dev eth1 label eth1:0 } track_script { chk_zabbix } notify_master "service zabbix-server start" #指定当切换到master时,执行的脚本 notify_backup "service zabbix-server stop" #指定当切换到backup时,执行的脚本 } **设置日志输出文件** ``keepalived`` 默认是没有输出日志的,需要配置一下。 修改keepalived配置文件 ``/etc/sysconfig/keepalived``\ ,如下 :: KEEPALIVED_OPTIONS="-D -d -S 0" 修改\ ``rsyslog`` 配置文件 ``/etc/rsyslog.conf`` :: # keepalived -S 0 local0.* /var/log/keepalived.log 重启服务 .. code:: bash systemctl restart rsyslog systemctl restart keepalived **脚本文件** chk_zabbix.sh 放置于 ``/etc/keepalived``\ ,注意脚本里vip的网卡名要正确填写。 .. code:: bash #!/bin/bash workers=`ps -C zabbix_server --no-header | wc -l` is_vip=`ifconfig eth0:0 | grep inet | wc -l` if [ $workers == 0 -a $is_vip == 1 ];then /bin/systemctl restart zabbix-server.service sleep 1 workers=`ps -C zabbix_server --no-header | wc -l` if [ $workers == 0 -a $is_vip == 1 ];then exit 1 fi exit 0 else exit 0 fi 这个脚本保证了,两个节点上,始终只会有一个节点运行zabbix-server。防止zabbix的数据库脑裂。 主要有以下两种情况 - 单台节点宕机(可以关闭keepalived服务模拟,也可以关机) - 双台节点宕机(不管是哪一台先启) -------------- |image1| .. |image0| image:: http://image.iswbm.com/20200602135014.png .. |image1| image:: http://image.iswbm.com/20200607174235.png