四行shell脚本实现zabbix_server的高可用

场景模拟:

高可用的重要性

  1. 一家中小型企业需要使用zabbix_server监控大量设备,某天,一位新来的员工操作服务器失误,导致zabbix_server服务器系统奔溃无法开机。这时候zabbix_server服务中断了,这家企业的所有设备都无法进行监控,假如此时,监控的设备中有重要的业务主机,出现了告警,但是由于zabbix_server无法采集数据,导致运维人员不知道业务主机出现了一个严重的告警,业务也受到了影响。最后给企业带来巨大的经济损失。
    名词解析:
    什么是高可用?
    高可用技术简单的说就是,保障业务在出现故障的时候,进行快速的切换,从而不影响到业务的正常运转。
    什么是VIP(虚拟IP)?
    高可用技术离不开VIP,高可用的原理其实就是用户通过VIP访问业务,而VIP会映射到对应的服务器IP。

默认情况下,客户端通过192.168.74.150的IP映射到的192.168.74.149这台主zabbix_server的服务,如果主zabbix_server服务器的关机了,那么客户端继续使用192.168.74.150的ip就会映射到备用zabbix_server(192.168.74.148)这台服务。

准备内容:
安装两台zabbix_server,一台数据库服务器(主zabbix_server和备zabbix_server的数据都保存在这台数据库上)
备:zabbix_server:192.168.74.148
主:zabbix-server:192.168.74.149
一台数据库服务器:192.168.74.128.
本实验的内容需要利用逻辑网卡作为VIP(192.168.74.150)

第一步:在两台zabbix_server服务器上创建逻辑网卡,即vip
两台zabbix_server服务器进入/etc/sysconfig/network-script目录
Cd /etc/sysconfig/network-scripts

拷贝当前服务器网卡文件,我的网卡是ifcfg-ens33。
Cp ifcfg-ens33 ifcfg-ens33:0

编辑ifcfg-ens33:0文件(两台zabbix_server的ifcfg-ens33:0文件中,ip都改为192.168.74.150作为虚拟ip)

现在任意一台zabbix_server上启动ifcfg-ens33:0,确认网卡是否可以启动。
注意,不可以同时在两台zabbix_server启用ifcfg-ens33:0,否则会出现ip冲突。
逻辑网卡启动命令是ifup 网卡名,使用ifup命令,只重启新增的网卡即可,最好不要用systemctl network restart命令重启全部网卡,一旦这条命令导致网卡启动失败,将会导致无法远程服务器。
Ifup ifcfg-ens33:0

第二步:验证是否可以通过vip(192.168.74.150),访问到主zabbix_server或者备zabbix_server的ip
在window主机上安装agent,把agent配置文件的server_ip指向192.168.74.150这个虚拟ip,确认是否可以通过192.168.74.150映射到192.168.74.149这个zabbix_server服务

此时已经可以通过虚拟IP(192.168.74.150)访问到192.168.74.149的zabbix_server。
但同时出现了一个问题,如图,所有的监控主机ZBX出现爆红

为了解决上面的问题,需要修改所有监控主机的zabbix_agent.conf的server_ip都指向192.168.74.150

修改完agent的配置,一定要重启zabbix_agent
最重要的一步,修改两台zabbix_server.conf里面的参数Source指定为虚拟ip
192.168.74.150,否则界面的ZBX会出现爆红
若没有修改sourceIP,仍然会无法解决的下面情况

修改zabbix_server.conf文件,SourceIP修改为虚拟ip,192.168.74.150

重启zabbix_server
Systemctl restart zabbix_server
以上配置完成后,界面的监控主机恢复正常

主机的数据也正常

下面开始编写shell脚本,实现主zabbix_server(192.168.74.149)服务器挂掉后,仍然可以通过192.168.74.150继续访问备用zabbix_server(192.168.74.148)
在192.168.74.149和192.168.74.148两台服务器上编写脚本check_alive

并在两台服务器上crontab –e的定时任务中加入这两个脚本。执行这两个脚本的时间由用户自定义。本人暂时以60s一次执行这个检测脚本。记住要给这两个脚本可执行的权限
之所以设置60s执行一次脚本,是为了待会演示关闭192.168.74.149这台虚拟机,然后界面会无法访问。接着等待60s,备用zabbix_server的192.168.74.148就会启用vip,界面就可以继续访问zabbix_server。正常来说,设置为3-10s比较合适,这样才能做到快速切换
Chmod o+x 755 check_alive.sh
记住一定要用绝对路径,否则可能会报错

最终效果演示

关闭主zabbix_server(192.168.74.149虚拟机)
此时vip在,主zabbix-server上

关闭主zabbix_server(192.168.74.149)后,备zabbix_server就无法ping通,vip192.168.74.150了。


等待60s,VIP(192.168.74.150会出现在备用zabbix_server(192.168.74.148)

Vip切换成功,刷新界面看一下能否访问zabbix_server

界面访问正常

主zabbix_server关机了,所以无法获取数据。
本案例可以确保zabbix_server服务进行高可用。但有一个缺点,就是两个zabbix_server服务使用的是同一个数据库服务器,如果这个数据库服务器挂掉。同样会无法获取数据。所以最好也做一下数据库的高可用。

原文地址:https://blog.51cto.com/14483703/2485302

时间: 2024-11-13 08:04:20

四行shell脚本实现zabbix_server的高可用的相关文章

Linux的shell脚本LvsDR模式启动脚本和模拟keepalived高可用脚本

一.脚本运行前模拟环境 DR:server1:172.25.29.1 ipvsadm  keepalived RS:server2:172.25.29.2 arptables_jf   httpd RS:server3:172.25.29.3 arptables_jf   httpd DR:server4:172.25.29.4 ipvsadm  keepalived 使用脚本前先安装好server1.server2.server3的软件,做好httpd的后端访问页面 二.LVS_DR模式脚本介

Keeplived配置Nginx双机高可用

一.简介不管是Keepalived还是Heartbeat做高可用,其高可用,都是站在服务器脚本去说的高可用,而不是服务的角度.也就是说,如果服务器DOWN机或者网络出现故障,高可用是可以实现自动切换的.如果运行的服务,比如Nginx挂掉这些高可用软件是意识不到的,需要自己写脚本去实现服务的切换. 二.安装配置Keepalived # ./configure # make# make install # cp /usr/local/etc/rc.d/init.d/keepalived /etc/r

基于keepalived的nginx高可用

#nginx,keepalived安装略过 MASTER 节点配置文件(192.168.1.11) vi /etc/keepalived/keepalived.conf global_defs { ##keepalived自带的邮件提醒需要开启sendmail服务.建议用独立的监控或第三方SMTP ##标识本节点的字条串,通常为 hostname router_id 192.168.1.11 } ##keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance

keepalived高可用的常用功能介绍

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器.本篇文章会介绍keepalived的安装,配置,还有keepalived的一些脚本,keepalived+nginx高可用实现和keepalived双机互为主从的实现. keep

Shell脚本编写规范化、标准化

1.脚本中多写注释 这是不仅可应用于 shell 脚本程序中,也可用在其他所有类型的编程中的一种推荐做法. 在脚本中作注释能帮你或别人翻阅你的脚本  时了解脚本的不同部分所做的工作. 注释用 # 号来定义. 2. 当运行失败时使脚本退出 有时即使某些命令运行失败,bash 可能继续去执行脚本,这样就影响到脚本的其余部分(会最终导致逻辑错误). 用下面的行的方式在遇到命令失败时来退出脚本执行:      # 如果命令运行失败让脚本退出执行 set -o  err   exit  # 或 set -

Keepalived+LVS(dr)高可用负载均衡集群的实现

一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2.13-7.el7.x86_64ipvsadm-1.27-7.el7.x86_64httpd-2.4.6-45.el7.centos.x86_64mariadb-5.5.52-1.el7.x86_64php-5.4.16-42.el7.x86_64 二 原理及拓扑图 1.vrrp协议vrrp(Vir

keepalived高可用集群学习以及实验总结

HA Cluster实现方案:vrrp协议的实现keepalivedais: 完备HA集群RHCS(cman)heartbeatcorosync + pacemaker :corosync是集群框架引擎程序,pacemaker是集群资源管理器,crmsh是pacemaker命令行管理工具 stonish : shooting the other node in the header 节点爆头,比如硬件设备方面的电源交换机,代理调度器节点都可以向其发送信号切断故障一方的电源,从而使得明确退出服务,

bash特性以及shell脚本简介

bash的特性之多命令执行的逻辑关系:1.命令替换COMMAND1 $(COMMAND2)2.管道COMMAND1 | COMMAND2 | COMMAND3 ...3.顺序执行结构COMMAND1 ; COMMAND2 ; COMMAND3 ...4.选择执行结构:如果...那么...要么...要么...逻辑运算:与:逻辑乘法,1--真,0--假,&&,双目操作符1 && 1 = 11 && 0 = 00 && 1 = 00 &&a

Keepalived+NFS+SHELL脚本实现NFS-HA高可用

本来想做DRBD+HEARTBEAT,但是领导说再加硬盘浪费资源,没有必要,而且在已有硬盘上做风险较大,所以就只能用rsync来实现数据同步了,实验中发现很多的坑,都用脚本和计划任务给填上了,打算把这套直接用在生产环境中,到时候如果还遇到什么问题,再进行修正和补全,下面是项目细节: 主机配置: web:192.168.6.10 Centos 6.4 nfs1:192.168.6.1 Centos 6.4 nfs2:192.168.6.2 Centos 6.4 keepalived 1.2.13