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
router_id LVS_DEVEL
} vrrp_script chk_zabbix_server { script "/etc/keepalived/chk_zabbix_server.sh"
interval
weight }
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id
priority
advert_int
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
router_id LVS_DEVEL
} vrrp_script chk_zabbix_server { script "/etc/keepalived/chk_zabbix_server.sh"
interval
weight }
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id
priority
advert_int
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}" = "" ]; then /etc/init.d/zabbix-server start
sleep status2=$(ps aux|grep zabbix_server | grep -v grep | grep -v bash |wc -l)
if [ "${status2}" = "" ]; 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 配置文件和参考文献

 
 
 

Zabbix实战-简易教程(6)--Server端高可用的更多相关文章

  1. Zabbix实战-简易教程系列

    一.基础篇(安装和接入) Zabbix实战-简易教程--总流程  Zabbix实战-简易教程--整体架构图 Zabbix实战-简易教程--DB安装和表分区 Zabbix实战-简易教程--Server端 ...

  2. Zabbix实战-简易教程(4)--Server端安装

    在数据库安装完成后,接着开始安装server端了.我们这里采用yum安装. 3.2.0 安装需求 ● PHP 5.6.18 ● curl 7.47.1 ● zabbix_server (Zabbix) ...

  3. Zabbix实战-简易教程--日志类

    一.主动模式和被动模式介绍 要监控日志,必须使用主动模式,那么,什么是主动模式?什么是被动模式呢? 1.主动模式和被动模式 主动模式 主动模式通讯过程: ● Agent打开TCP连接(主动检测变成Ag ...

  4. Zabbix实战-简易教程--动作(Actions)--自动注册

    一.概述 之前已经讲述了自动发现功能,自动注册和自动发现非常类似,但是比自动发现更精确.因为自动注册,是在Agent上自定义元数据,然后Agent将元数据发送给server进行匹配,如果匹配一致,则进 ...

  5. Zabbix实战-简易教程--排错(持续收集中)

    一.安装错误 1.zabbix 安装故障之无法跳到下一步或点击下一步没反应 执行命令:chownnginx:nginx /var/lib/php/session/ -R   2.proxy上无法采集交 ...

  6. Zabbix实战-简易教程(5)--Proxy和Agent端(源码和yum方式)

    3.3.1 zabbix proxy安装(源码方式) 1.创建目录 mkdir -p /usr/local/zabbix 2.安装必要软件 yum install -y fping(若安装不成功) 或 ...

  7. Zabbix实战-简易教程--大型分布式监控系统实现Agent批量快速接入

    一.分布式架构 相信使用zabbix的大神都熟悉他的分布式架构,分布式的优势相当明显,分而治之.比如目前我的架构图如下: 那么,对将要接入监控系统的任何一个agent如何快速定位,并进行接入呢?  问 ...

  8. Zabbix实战-简易教程--WEB类--Nginx

    一.开启Nginx status状态 1.在默认主机里面加上location添加ngx_status 如下操作: server { listen 127.0.0.1:8080; server_name ...

  9. Zabbix实战-简易教程--中间件kafka监控

    一.环境准备 1.安装kafka Step 1: 下载代码 你可以登录Apache kafka 官方下载.http://kafka.apache.org/downloads.html备注:2.11-1 ...

随机推荐

  1. 自学Zabbix3.7.2-事件Event-来源与分类

    一.zabbix 事件从字面理解,就是发生了一个事情就算是一个事件.就在trigger的文章内,我们已经有用到事件,这个事件要讲概念真心不知道怎么说,就拿trigger事件来说,如果trigger从当 ...

  2. python中对象、类型和元类之间的关系

    在python中对象.类型和元类构成了一个微妙的世界. 他们有在这个世界里和平共处,相辅相成.它们遵循着几条亘古不变的定律: 1.python中无处不对象 2.所有对象都有三种特性:id.类型.值 3 ...

  3. 爬取豆瓣电影储存到数据库MONGDB中以及反反爬虫

    1.代码如下: doubanmoive.py # -*- coding: utf-8 -*- import scrapy from douban.items import DoubanItem cla ...

  4. Effective Java 第三版——8. 避免使用Finalizer和Cleaner机制

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  5. Mac shell笔记

    用来自动执行一些前端发布的操作. 脚本: # webReleasePath用来发布的目录,webRevisionPath是开发的目录 webReleasePath='/Users/lufeng/Doc ...

  6. 使用requests爬取猫眼电影TOP100榜单

    Requests是一个很方便的python网络编程库,用官方的话是"非转基因,可以安全食用".里面封装了很多的方法,避免了urllib/urllib2的繁琐. 这一节使用reque ...

  7. es6 let和const命令(1)

    基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...

  8. locate 命令详解

    locate :http://www.cnblogs.com/peida/archive/2012/11/12/2765750.html 作用:locate命令可以在搜寻数据库时快速找到档案,数据库由 ...

  9. 朴素的treap

    所谓Treap,就是一种二叉查找树,而我们知道二叉查找树,相对来说比较容易形成最坏的链表情况,所以我们有一种数据结构来防止二叉查找树出现最坏情况,那就是Treap. Treap=tree+heap,T ...

  10. SQL基础学习_04_视图

    视图 1. 视图的创建     视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作:     由于 ...