環境準備
準備三臺機器
主機名字 | IP地址 | 軟件環境 |
---|---|---|
zabbix-server01 | 192.168.111.70 | httpd+php+keepalived+sshpasszabbix server+agent |
zabbix-server02 | 192.168.111.71 | httpd+php+keepalived+sshpasszabbix server+agent |
zabbix-agent | 192.168.111.80 | zabbix agent+mysql |
VIP規劃:192.168.111.72
使用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高可用集群
安裝zabbix-server服務
將兩臺zabbix-server01和zabbix-server02機器上傳兩個文件"zabbix_rpm.tar.gz",“zabbix.conf.php”,然后兩臺機器執行如下命令安裝部署zabbix服務。
tar xf zabbix_rpm.tar.gz
rpm -Uvh zabbix_rpm/*.rpm
wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm
rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-web-mysql -y
yum install mariadb-server httpd -y
systemctl restart mariadb.service
systemctl restart zabbix-server.service
systemctl restart httpd.service
systemctl restart zabbix-agent.service
sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g' /etc/httpd/conf.d/zabbix.conf
mysql -e "create database zabbix character set utf8 collate utf8_bin;"
mysql -e "grant all privileges on zabbix.* to zabbix@localhost identified by '123456';"
cd /usr/share/doc/zabbix-server-mysql-*/
zcat create.sql.gz |mysql -uzabbix -p123456 zabbix
sed -i '115a DBPassword=123456' /etc/zabbix/zabbix_server.conf
sed -i '123a DBSocket=/var/lib/mysql/mysql.sock' /etc/zabbix/zabbix_server.conf
cd -
\mv zabbix.conf.php /etc/zabbix/web/
systemctl restart mariadb.service
systemctl restart zabbix-server.service
systemctl restart httpd.service
systemctl restart zabbix-agent.service
netstat -lntup
數據庫備份操作
mysqldump -B zabbix >zabbix.sql
前提agent主機安裝完成MySQL之后,在進行測試連接agent主機的mysql
mysql -uzabbix -p123456 -h 192.168.111.80
修改zabbix-server連接數據庫的配置文件,注意SourceIP一定要指定到vip地址,不然創建監控主機不成功,因為找不到。
vim /etc/zabbix/zabbix_server.conf
DBHost=192.168.111.80
SourceIP=192.168.111.72
修改web連接數據庫配置文件
vim /etc/zabbix/web/zabbix.conf.php
$DB['SERVER'] = '192.168.111.80';
安裝keepalived和sshpass服務
在zabbix-server01和zabbix-server02上分別安裝keepalived的
yum install -y keepalived sshpass
zabbix-server01配置文件如下
cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL 29
}vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.111.72
}
notify_master /opt/to_master.sh
}
創建一個腳本,只允許運行一個zabbix-server服務,通過遠程sshpass工具連接,停止遠端服務,啟動本地服務
cat /opt/to_master.sh
#!/bin/bash
sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@192.168.111.71 "systemctl stop zabbix-server.service"
systemctl restart zabbix-server.service
給to_master.sh腳本加一個執行權限
chmod +x /opt/to_master.sh
zabbix-server02配置文件如下
cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL 52
}vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.111.72
}
notify_master /opt/to_master.sh
}
創建一個腳本,只允許運行一個zabbix-server服務:通過遠程sshpass工具連接,停止遠端服務,啟動本地服務
cat /opt/to_master.sh
#!/bin/bash
sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@192.168.111.70 "systemctl stop zabbix-server.service"
systemctl restart zabbix-server.service
給to_master.sh腳本加一個執行權限
chmod +x /opt/to_master.sh
將兩臺zabbix-server01和zabbix-server02均啟動keepalived.service服務并設置開機自啟動
systemctl start keepalived.service
systemctl enable keepalived.service
開始測試keepalived服務功能,看vip是否切換,當前vip地址在01上
查看服務zabbix-server運行正常
訪問成功,vip地址192.168.111.72/zabbix
同時zabbix-server02上的keep服務正常運行,zabbix-server服務未啟動
手動停止zabbix-server01上的keepalived服務,vip已切換,zabbix-server已停止
查看zabbix-server02的server服務已經啟動,還有存在vip地址,驗證成功。
安裝數據庫zabbix-agent
讓zabbix-server01和zabbix-server02兩臺服務指向zabbix-agent機器的數據
yum install mariadb-server httpd -y
systemctl restart mariadb.service
systemctl enable mariadb.service
scp -rp 192.168.111.70:/root/zabbix.sql .
mysql < zabbix.sql
mysql -e "grant all privileges on zabbix.* to zabbix@'192.168.111.%' identified by '123456';"
安裝zabbix-agent服務
下載agent的rpm包
rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm
#修改配置文件指定VIP地址
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.111.72
#啟動agent服務,設置開機自啟動
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
zabbix-server界面創建監控主機
創建監控主機
配置鏈接模板
添加監控主機成功,并且狀態正常為綠色
監控數據,我設置更新數據時間間隔為10秒鐘,都是10秒一刷新數據,圖中vip切換期間有30秒沒有檢測。