实验环境
主机名 | IP | 软件包 |
---|---|---|
zabbix-mysql | 192.168.1.250 | MySQL |
zabbix-server01 | 192.168.1.251 | zabbix-server-mysql、zabbix-web-mysql、keepalived |
zabbix-server02 | 192.168.1.252 | zabbix-server-mysql、zabbix-web-mysql、keepalived |
zabbix-agent | 192.168.1.253 | zabbix-agent |
VIP | 192.168.1.240 | \ |
zabbix-mysql 配置
这里省略安装MySQL的步骤
创建 zabbix 库和用户,并授权
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@"192.168.1.%" identified by '123qqq...A';
导入 zabbix-server 的初始化数据
PS:create.sql.gz 是从 zabbix-server01 上传过来的
[root@zabbix-mysql ~]# zcat /tmp/create.sql.gz | mysql -uzabbix -p -h 192.168.1.250 zabbix
zabbix-server01 配置
PS:zabbix-server02 的配置也相同
安装 zabbix 源(清华源)
[root@zabbix-server01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@zabbix-server01 ~]# sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo
[root@zabbix-server01 ~]# sed -i 's#gpgcheck=1#gpgcheck=0#g' /etc/yum.repos.d/zabbix.repo
安装 zabbix-server 和 zabbix-web
[root@zabbix-server01 ~]# yum -y install zabbix-server-mysql zabbix-web-mysql
配置 zabbix-server
修改 zabbix-server 配置文件
[root@zabbix-server01 ~]# vim /etc/zabbix/zabbix_server.conf
#主要修改下面的配置
DBHost=192.168.1.250
DBName=zabbix
DBUser=zabbix
DBPassword=123qqq...A
DBPort=3306
SourceIP=192.168.1.240 #配置zabbix高可用的时候,zabbix-server端的SourceIP需要配置为VIP
#+ 不然在zabbix-agent配置server为VIP时,会报如下错误
将 zabbix-server 初始化数据传到 zabbix-mysql
查找 zabbix-server 初始化数据文件位置
[root@zabbix-server01 ~]# rpm -ql zabbix-server-mysql
...
/usr/share/doc/zabbix-server-mysql-4.0.29/create.sql.gz
...
传输 zabbix-server 初始化数据文件至 zabbix-mysql
[root@zabbix-server01 ~]# scp /usr/share/doc/zabbix-server-mysql-4.0.29/create.sql.gz 192.168.1.250:/tmp
启动 zabbix-server
当 zabbix-server 的初始化数据导入数据库之后启动。
[root@zabbix-server01 ~]# systemctl start zabbix-server && systemctl enable zabbix-server
配置 zabbix-web
修改 zabbix-web 配置文件
[root@zabbix-server01 ~]# vim /etc/httpd/conf.d/zabbix.conf
#修改时区
php_value date.timezone Asia/Shanghai
启动 zabbix-web
[root@zabbix-server01 ~]# systemctl start httpd && systemctl enable httpd
通过 web 页面配置
URL为:http://IP/zabbix
这里省略 web 页面配置截图
配置 zabbix-agent
安装 zabbix-agent
[root@zabbix-server01 ~]# yum -y install zabbix-agent
修改 zabbix-agent 配置文件
[root@zabbix-server01 ~]# vim /etc/zabbix/zabbix_agentd.conf
#主要修改server为VIP,因为zabbix-server的SourceIP配置为VIP
Server=192.168.1.240
启动 zabbix-agent
[root@zabbix-server01 ~]# systemctl start zabbix-agent && systemctl enable zabbix-agent
keepalived 配置
安装 keepalived
zabbix-server01和zabbix-server02都安装
yum -y install keepalived
zabbix-server01 的 keepalived.conf
! Configuration File for keepalived
global_defs {
router_id zabbix-server01 #同一集群内路由ID唯一
}
vrrp_instance zabbix-server { #同一集群内,实例名需要相同
state BACKUP
interface eth0
virtual_router_id 51 #同一集群内,虚拟路由ID需要相同,不然就是两个集群了
priority 100 #同一集群内,优先级最好不要相同(值越大优先级越高)
advert_int 1
authentication {
auth_type PASS
auth_pass zabbix
}
virtual_ipaddress {
192.168.1.240
}
notify_master "systemctl restart zabbix-server"
notify_backup "systemctl stop zabbix-server"
notify_stop "systemctl stop zabbix-server"
}
PS:正常情况下使用 keepalived ,备用服务器都是一直处于运行的状态下;当主服务器发生故障时,备用服务器立马接替工作,正常提供服务。但是,zabbix 的高可用架构中,主和备不能同时运行,因为备用的 zabbix-server 收不到数据的时候会发生报错。所以需要在主备切换时启动或关闭zabbix-server服务。
zabbix-server02的keepalived.conf
! Configuration File for keepalived
global_defs {
router_id zabbix-server02 #同一集群内路由ID唯一
}
vrrp_instance zabbix-server { #同一集群内,实例名需要相同
state BACKUP
interface eth0
virtual_router_id 51 #同一集群内,虚拟路由ID需要相同,不然就是两个集群了
priority 93 #同一集群内,优先级最好不要相同(值越大优先级越高)
advert_int 1
authentication {
auth_type PASS
auth_pass zabbix
}
virtual_ipaddress {
192.168.1.240
}
notify_master "systemctl restart zabbix-server"
notify_backup "systemctl stop zabbix-server"
notify_stop "systemctl stop zabbix-server"
}
启动 keepalived
systemctl start keepalived && systemctl enable keepalived
测试 keepalived 配置是否正常
这里省略测试步骤,只提供一个测试方法
- 当 zabbix-server01 和 zabbix-server02 的 keepalived
都启动之后,VIP(192.168.1.240)应该在 zabbix-server01 上。 - 使用 VIP 访问 zabbix web 页面,看是否正常。
- 关闭 zabbix-server01 上的 keepalived,VIP(192.168.1.240)应该跳至
zabbix-server02 上。 - 再次使用 VIP 访问 zabbix web 页面,看是否正常。
- 开启 zabbix-server01 上的 keepalived,VIP(192.168.1.240)应该跳回至
zabbix-server01 上。 - 再次使用 VIP 访问 zabbix web 页面,看是否正常。
zabbix-agent 配置
拷贝 zabbix-server01 上的 zabbix 源
root@zabbix-agent ~]# scp 192.168.1.251:/etc/yum.repos.d/zabbix.repo /etc/yum.repos.d/
安装 zabbix-agent
[root@zabbix-agent ~]# yum -y install zabbix-agent
配置 zabbix-agent
[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.conf
#主要修改以下配置
Server=192.168.1.240
ServerActive=192.168.1.240
Hostname=192.168.1.253
启动 zabbix-agent
[root@zabbix-agent ~]# systemctl start zabbix-agent && systemctl enable zabbix-agent
添加监控主机
PS:访问 zabbix-web 使用 VIP 访问
这里省略添加主机的截图
最后使用上面测试 keepalived 的方法再次测试,看 zabbix 是否正常。