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  #下载扩展源

zabbix6高可用配置同步 zabbix高可用方案_vim


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 画面测试

zabbix6高可用配置同步 zabbix高可用方案_zabbix6高可用配置同步_02

8.修改zabbix-server01 web的配置文件

[root@zabbix-server01 ~]# vim /etc/zabbix/web/zabbix.conf.php

zabbix6高可用配置同步 zabbix高可用方案_配置文件_03


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不工作了

zabbix6高可用配置同步 zabbix高可用方案_vim_04

5测试

web画面测试,需要登录10.0.0.66

zabbix6高可用配置同步 zabbix高可用方案_vim_05


添加主机模板

zabbix6高可用配置同步 zabbix高可用方案_配置文件_06


zabbix6高可用配置同步 zabbix高可用方案_zabbix_07


但是zabbix-agent配置文件设置的是Server=10.0.0.66

zabbix6高可用配置同步 zabbix高可用方案_配置文件_08


所以接下来需要修改zabbix-server02配置文件

目的是当有多个IP地址,指定从哪个IP地址出去

两台服务都的改 高可用的重点

zabbix6高可用配置同步 zabbix高可用方案_mysql_09

[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

zabbix6高可用配置同步 zabbix高可用方案_zabbix_10


切换到zabbix-server01上

![在这里插入图片描述](

zabbix6高可用配置同步 zabbix高可用方案_配置文件_11

总结

zabbix6高可用配置同步 zabbix高可用方案_vim_12