• Zabbix实战-简易教程(6)--Server端高可用


    3.4 server前端高可用

       至此,单台Zabbix server环境已经搭建完成,为了达到高可用效果,我们需要通过2台服务器之间通过HA软件进行探测,一旦检测到主的server挂掉后,从的server会立即顶替。我们这里采用keepalived软件来实现。

    3.4.1 Keepalived安装

    直接yum安装即可
    Yum install keepalived

    3.4.2 keepalived配置

    Master上的keepalived配置如下:

    【Master】
    cat /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
     
    global_defs {
       notification_email {
         xuequn@kingsoft.com
       }
       notification_email_from zabbix@kingsoft.com
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
     
    vrrp_script chk_zabbix_server {
     
    script "/etc/keepalived/chk_zabbix_server.sh"
    interval 30
    weight 2
     
     
    }
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 60
        priority 150
        advert_int 1
        mcast_src_ip 142.162.196.111
        authentication {
            auth_type PASS
            auth_pass ZabbixServer
        }
       track_script {
      
        chk_zabbix_server
     
       }
        virtual_ipaddress {
            142.162.196.116
        }
    }

    【Slave】slave上的配置如下:

    cat /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
     
    global_defs {
       notification_email {
         xuequn@kingsoft.com
       }
       notification_email_from zabbix@kingsoft.com
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
     
    vrrp_script chk_zabbix_server {
     
    script "/etc/keepalived/chk_zabbix_server.sh"
    interval 30
    weight 2
     
     
    }
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 60
        priority 99
        advert_int 1
        mcast_src_ip 142.162.196.112
        authentication {
            auth_type PASS
            auth_pass ZabbixServer
        }
       track_script {
     
       chk_zabbix_server
       }
        virtual_ipaddress {
            142.162.196.116
        }
    }

    服务器上的检测脚本如下:

     cat /etc/keepalived/chk_zabbix_server.sh
    #!/bin/bash
    #
    #
    status1=$(ps aux|grep -w "zabbix_server" | grep -v grep | grep -v bash | wc -l)
     
    if [ "${status1}" = "0" ]; then
     
            /etc/init.d/zabbix-server start
            sleep 3
     
            status2=$(ps aux|grep zabbix_server | grep -v grep | grep -v bash |wc -l)
            if [ "${status2}" = "0"  ]; then
                    /etc/init.d/keepalived stop
            fi
    fi

    3.5 Zabbix master和slave文件同步

    为了达到主从切换后,master和slave的文件一致,我们这里采用了rsync进行服务端文件实时同步。
    需要同步的服务器配置【Slave】:
     

    3.5.1 rsync安装

    yum install rsync

    3.5.2配置rsync,同步web文件和配置文件

    cat rsync.conf
    ###################global config####################
    uid = nobody
    gid = nobody
     
    use chroot = yes
    strict modes = yes
    timeout = 300
    transfer logging = true
    log format = %h %a %o %f %u %l %m %P
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    incoming chmod = Du=rwx,Dg=rx,Do=r,Fu=rwx,Fg=rx,Fo=r
    exclude from = /etc/rsyncd/exclude_filelist
    auth users = zabbixmonitor
    secrets file = /etc/rsyncd/zabbixmonitor.pas
    hosts allow = *
     
    #####################module config###################
    [zabbixweb]
    path = /usr/share/zabbix/
    comment = zabbixweb_log
    #ignore errors
    log file = /var/log/rsync/zabbixweb.log
    read only = no
    write only = no
    list = false
    uid = root
    gid = root
     
    #####################module config###################
    [zabbixconfig]
    path = /etc/zabbix/zabbix_server.conf
    comment = zabbixconfig_log
    #ignore errors
    log file = /var/log/rsync/zabbixconfig.log
    read only = no
    write only = no
    list = false
    uid = root
    gid = root
     
    /usr/bin/rsync --daemon --config=/etc/rsyncd/rsync.conf

    3.5.3 sersync配置

    被同步的服务端【Master】
    被同步端采用金山周洋同学写的sersync程序进程实施同步,这个sersync集成了rsync+inotify功能,只需在后台开启进程即可。
    cd sersync/
    [root@bgp-bjlg-zabbix-server01 sersync]# ll
    total 1780
    -rwxr-xr-x 1 root root    2214 Oct 26  2011 confxml.xml
    -rwxr-xr-x 1 root root 1810128 Oct 26  2011 sersync2
    -rwxr-xr-x 1 root root    2247 Jan 21 15:17 zabbixconfig.xml
    -rwxr-xr-x 1 root root    2248 Jan 21 15:44 zabbixweb.xml
     
    Zabbixweb.xml配置:
    <sersync>
            <localpath watch="/usr/share/zabbix/">
                <remote ip="172.29.31.112" name="zabbixweb"/>
            </localpath>
            <rsync>
                <commonParams params="-artuz"/>
                <auth start="true" users="zabbixmonitor" passwordfile="/etc/rsyncd/zabbixmonitor.pas"/>
                <userDefinedPort start="false" port="874"/><!-- port=874 -->
                <timeout start="false" time="100"/><!-- timeout=100 -->
                <ssh start="false"/>
            </rsync>
            <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
            <crontab start="false" schedule="600"><!--600mins-->
                <crontabfilter start="false">
                    <exclude expression="*.php"></exclude>
                    <exclude expression="info/*"></exclude>
                </crontabfilter>
            </crontab>
            <plugin start="false" name="command"/>
    </sersync>
    Zabbixconfig.xml配置类似。

    3.5.4 启动

    ./sersync2 -n 2 -o zabbixconfig.xml -d
    ./sersync2 -n 2 -o zabbixweb.xml -d
     

    3.6 配置文件和参考文献

     
     
     
  • 相关阅读:
    [转]centos sqlite3安装及简单命令
    [转] cmake源码编译安装jsoncpp
    [转]详解Linux(centos7)下安装OpenSSL安装图文方法
    [转]curl 命令模拟 HTTP GET/POST 请求
    [转]白话HTTP短连接中的Session和Token
    [转]浅谈HTTP中GET、POST用法以及它们的区别
    [转][linux][centos]嵌入式 Linux下编译并使用curl静态库
    [转]在CentOS安装CMake (CentOS7 64位适用)
    HTTP/2 资料汇总
    Http 1.x弊端与Http 2.0比较
  • 原文地址:https://www.cnblogs.com/skyflask/p/7501104.html
Copyright © 2020-2023  润新知