zabbix的高可用
两个zabbix_server 一个zabbix_agent
zabbix -server keepalived 关
zabbix -server keepalived VIP 开
rm -f /etc/yum.repos.d/* #删除自带的yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #下载基础源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #下载扩展源
VIP规划 10.0.0.66
本文中用到了sshpass免密钥交互,也可以做ssh相互免密钥登录
zabbix server的高可用,我试过在agent配置文件中,使用VIP,发现不能正常监控,于是才有本文。
我的做法agent中的配置文件,Server和ServerActive中分别都配置了两个ip,就是为了保证,zabbix-server01宕机了,还可以把监控数据发往zabbix-server02,由于两个zabbix-server共用一个数据库,肯定不能同时往数据库写数据,于是我想到了使用keepalived来控制zabbix server的开关,做到VIP在哪,那台机器的zabbix server就启动,另外一台关闭,而zabbix的web页面使用VIP去访问
本文把zabbix数据库独立出来,为了方便做mysql高可用集群
1. zabbix server 01安装
修改zabbix源
wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
4 rpm -ivh zabbix-release-4.0-2.el7.noarch.rpm
5 vim /etc/yum.repos.d/zabbix.repo
安装 zabbix-server-mysql zabbix-web-mysql
6* yum install zabbix-server-mysql zabbix-web-mysql -y
安装数据库
7 yum install mariadb-server -y
8 systemctl restart mariadb.service
9 systemctl enable mariadb.service
优化数据库
10 mysql_secure_installation
mysql
MariaDB [(none)]> show databases;
select user,host from mysql.user;
指定字符集----utf8并授权
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@localhost identified by '123456';
给zabbix导入初始数据
zcat /usr/share/doc/zabbix-server-mysql-*/create.sql.gz|mysql -uzabbix -p123456 zabbix
确认一下有没有导进去
mysql zabbix -e 'show tables;'
可以查看文件
rpm -ql zabbix-server-mysql |grep sql
配置启动zabbix-server
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
重启
systemctl restart zabbix-server.service
systemctl enable zabbix-server.service
检查10051端口
netstat -tunlp
修改web端的配置文件
php_value date.timezone Asia/Shanghai
重启前端服务
systemctl restart httpd.service
同步时间
1).安装ntp时间服务
[root@localhost ~]# yum install ntpdate -y
ntpdate time1.aliyun.com
安装zabbix-agent服务
yum install zabbix-agent.x86_64
修改zabbix-agent的配置文件
vim /etc/zabbix/zabbix_agentd.conf
重启
systemctl restart zabbix-agent.service
安装httpd和php
[root@zabbix-server01 ~]# yum install php -y
[root@zabbix-server01 ~]# yum install httpd -y
3.在zabbix-server上备份数据库
```powershell
[root@zabbix-server01 ~]# mysqldump -B zabbix >zabbix.sql
[root@zabbix-server01 ~]# vim zabbix.sql
安装keepalived + sshpass
[root@zabbix-server01 ~]# yum install keepalived sshpass -y
2.zabbix server 02安装
2.停用zabbix-server02的数据库
[root@zabbix-server02 ~]# systemctl stop mariadb.service
安装keepalived + sshpass
[root@zabbix-server02 ~]# yum install keepalived sshpass -y
agent+mysql
1.安装mariadb
base源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@db01 ~]# yum install mariadb-server.x86_64 -y
启动
[root@db01 ~]# systemctl start mariadb.service
[root@db01 ~]# systemctl enable mariadb.service
2.从zabbix-server01迁移数据库
[root@db01 ~]# scp -rp 10.0.0.61:/root/zabbix.sql .
导入数据库
[root@db01 ~]# mysql < zabbix.sql
3.授权数据库
[root@db01 ~]# mysql
show databases;
grant all on zabbix.* to zabbix@'10.0.0.%' identified by '123456';
4.在服务端测试是否连接数据库
[root@zabbix-server01 ~]# mysql -uzabbix -p123456 -h 10.0.0.51
[root@zabbix-server02 ~]# mysql -uzabbix -p123456 -h 10.0.0.51
5.修改zabbix-server01服务端的配置文件
[root@zabbix-server01 ~]# vim /etc/zabbix/zabbix_server.conf
指向agent
DBHost=10.0.0.51
[root@zabbix-server01 ~]# systemctl restart zabbix-server.service
查看状态
[root@zabbix-server01 ~]# systemctl status zabbix-server.service
6.关闭zabbix-server01的数据库
[root@zabbix-server01 ~]# systemctl stop mariadb.service
7.web 画面测试
8.修改zabbix-server01 web的配置文件
[root@zabbix-server01 ~]# vim /etc/zabbix/web/zabbix.conf.php
9.画面测试正常
10.修改zabbix-server02的 web配置文件
[root@zabbix-server02 ~]# vim /etc/zabbix/web/zabbix.conf.php
11修改zabbix-server02的服务端配置文件
[root@zabbix-server02 ~]# vim /etc/zabbix/zabbix_server.conf
指向agent
DBHost=10.0.0.51
[root@zabbix-server02 ~]# systemctl restart zabbix-server.service
12安装zabbix-agent
[root@db01 ~]# yum install zabbix40-agent.x86_64 -y
[root@db01 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.66
[root@db01 ~]# systemctl restart zabbix-agent.service
3.在zabbix-server01和zabbix-server02上分别安装keepalived
zabbix-server01如下
1.安装keepalived sshpass
[root@zabbix-server01 ~]# yum install keepalived sshpass -y
2.配置keepalived文件
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL 29
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.66
}
notify_master /opt/to_master.sh
}
}
去掉空格
[root@zabbix-server01 ~]# sed -i '/^$/d' /etc/keepalived/keepalived.conf
3.生成to_master.sh脚本
[root@zabbix-server01 ~]# cat /opt/to_master.sh
#!/bin/bash
sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@10.0.0.62 "systemctl stop zabbix-server.service
"
systemctl restart zabbix-server.service
4.脚本授权
[root@zabbix-server01 ~]# chmod +x /opt/to_master.sh
5.开启keepalived服务
[root@zabbix-server01 ~]# systemctl start keepalived.service
[root@zabbix-server01 ~]# systemctl enable keepalived.service
zabbix -server 02安装
1.安装keepalived sshpass
[root@zabbix-server02 ~]# yum install keepalived sshpass -y
2.配置keepalived文件
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL 30
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.66
}
notify_master /opt/to_master.sh
}
3.生成to_master.sh脚本
[root@zabbix-server02 ~]# cat /opt/to_master.sh
#!/bin/bash
sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@10.0.0.61 "systemctl stop zabbix-server.service
"
systemctl restart zabbix-server.service
4.脚本授权
[root@zabbix-server02 ~]# chmod +x /opt/to_master.sh
5.开启keepalived服务
[root@zabbix-server02 ~]# systemctl start keepalived.service
[root@zabbix-server02 ~]# systemctl enable keepalived.service
4.整体测试
两台zabbix server都启动keepalived的
zabbix-server01 启动zabbix server
zabbix-server02不启动zabbix server
模拟zabbix-server01宕机,keepalived不工作了
5测试
web画面测试,需要登录10.0.0.66
添加主机模板
但是zabbix-agent配置文件设置的是Server=10.0.0.66
所以接下来需要修改zabbix-server02配置文件
目的是当有多个IP地址,指定从哪个IP地址出去
两台服务都的改 高可用的重点
[root@zabbix-server02 opt]# ip a |grep 10.0.0.66
inet 10.0.0.66/32 scope global eth0
[root@zabbix-server02 opt]# netstat -tunlp |grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 40866/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 40866/zabbix_server
[root@zabbix-server02 opt]# vim /etc/zabbix/zabbix_server.conf
SourceIP=10.0.0.66
[root@zabbix-server02 opt]# systemctl restart zabbix-server.service
[root@zabbix-server01 ~]# vim /etc/zabbix/zabbix_server.conf
SourceIP=10.0.0.66
切换到zabbix-server01上
![在这里插入图片描述](
总结