zoukankan      html  css  js  c++  java
  • 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抢占问题"。

  • 相关阅读:
    ubuntu 下的中文输入法的安装和配置- ibus
    数据分析-序列处理(2)
    数据分析创建数据框与数据获取(1)
    Python的函数与方法的区别
    Python3笔记015
    Python3笔记014
    Python3笔记013
    Python3笔记012
    Python3笔记011
    Python3笔记010
  • 原文地址:https://www.cnblogs.com/l-hh/p/12530882.html
Copyright © 2011-2022 走看看