前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过docker部署zabbix双机高可用监控系统

通过docker部署zabbix双机高可用监控系统

作者头像
IT不难
发布2023-11-17 13:53:54
2810
发布2023-11-17 13:53:54
举报
文章被收录于专栏:IT不难技术家园IT不难技术家园

前言

监控系统对于公司和运维人员来说,是了解线上业务重要的手段。所以双机互备是十分必要。下面就是实际工作中用到的zabbix双机互备搭建方案。

l0gg3e0g.png
l0gg3e0g.png

zabbix基础知识

企业级 开源分布式 监控解决方案

关键模块

Server 服务器端,采用mysql存储监控数据 apache+php 呈现

agent 被监控设备上的zabbix 代理 收集数据

snmp 支持 snmp 协议的设备

ipmi agent 的另一种方式 物理性能监控 设备温度 风扇转速

zabbix监控流程

Hostgroups(主机组)->Hosts(主机)->Applications(监控应用集)->Items(监控项)-> Triggers(触发器)-> Actions ( 告警动作)-> Medias ( 告警方式)-> User groups ( 用户组)-> Users ( 用户 )

SNMP协议可以获取到的交换机那些信息 简单网络协议,是专门用于在IP网络 管理网络节点(服务器,工作站,路由器,交换机及HUBS等)一种标准协议。 nms和代理进程 agent 之间的通信协议。

监控类型

监控类型

说明

简单检查

不需要 zabbix agent,由 zabbix server 和 zabbix proxy 负责处理

zabbix agent

分为主动模式和被动模式

zabbix 内部

监控zabbix的内部进程 如snmp agent 是否正在运行,由zabbix轮询器处理

SNMP trap

被动接受被监控交换机发出的告警信息。需要在监控交换机做配置。

SNMP agent

被监控交换机提供数据和进程,zabbix_server 通过 snmp协议获取 数据

zabbix系统对应-nms

网络交换机设备 对应开启 snmp服务,网络设备有一个管理信息库 MIB 里面存有大量的被管对象,如 cpu 内存使用率,接口状态等。这些被管对象是以OID树状结构进行存储的。只要zabbix获取这些网络设备相关对应的OID值。

准备工作

首先准备需要的相关资源

代码语言:javascript
复制
- 系统版本: CentOS Linux release 7.6.1810
- 软件版本:
  - zabbix-release-5.4.6
  - mariadb-10.3.28-1
  - keepalived

服务器资源

4核8G 500G硬盘 * 2台

IP地址

  • 10.10.20.1 ( server-1191) (m1)
  • 10.10.20.2 ( server-1192) (m2)
  • 10.10.10.97 (VIP)

项目全部代码和脚本

基础环境配置

系统初始化

代码语言:javascript
复制
### 执行脚本
sh system_init_v3.sh          //系统初始化
sh system_init_python3.sh     //安装python3 
sh system_init_docker.sh      //安装docker和docker-compose

### 修改dns
vim /etc/sysconfig/network-scripts/ifcfg-eno1
DNS1=223.5.5.5
DNS2=114.114.114.114

### 修改防火墙规则
vim /etc/sysconfig/iptables
-A INPUT -p tcp -s  10.10.20.1   -m multiport --dport 3306,873  -j ACCEPT
-A INPUT -p tcp -s  10.10.20.2   -m multiport --dport 3306,873  -j ACCEPT
-A INPUT -p tcp -s  10.10.20.97   -m multiport --dport 3306,873  -j ACCEPT
-A INPUT -p tcp -s 172.16.238.0/24  -j ACCEPT
-A INPUT -p tcp -s 172.16.239.0/24  -j ACCEPT

### 重启服务生效
systemctl reload iptables
systemctl restart docker

### 验证
nc -z -v -w 10 10.10.20.2 3306
nc -z -v -w 10 10.10.20.1 3306

mysql数据库的主主配置

启动数据库(m1,m2同时执行)

代码语言:javascript
复制
cd /opt/zabbix-ha/mariadb-m-m/m1/
docker-compose  up -d

启用GTID 主主复制

m1,m2同时配置

代码语言:javascript
复制
#m1和m2同时操作
mysql -uroot -pxxxxx -h 127.0.0.1

#确认系统时间
select now();

#确认字符集
show variables like '%character%';

#创建同步账号
grant replication slave,replication client on *.* to 'slave'@'10.10.20.%' identified by "slave@123";
flush privileges;

m1 到m2 的同步配置

代码语言:javascript
复制
#m1 执行
##查看master状态
show master status;

#下图
#查看gtid_binlog
show variables like '%gtid_binlog%';

#m2执行
##设置slave_pos
set global gtid_slave_pos='0-11-7192';

#配置master
change master to  master_host='mariadb_m1',master_user='slave',master_password='slave@123',master_port=3306,master_use_gtid=slave_pos,master_connect_retry=30;

#启动
start slave;
l0gi1igi.png
l0gi1igi.png

m2到m1的同步配置

代码语言:javascript
复制
#m1配置
set global gtid_slave_pos='0-12-7192';

#配置master
change master to  master_host='mariadb_m2',master_user='slave',master_password='slave@123',master_port=3306,master_use_gtid=slave_pos,master_connect_retry=30;

#启动
start slave;

zabbix server 双机部署

mysql建库并授权

代码语言:javascript
复制
#登录
mysql -uroot -pUtemyan001db -h 127.0.0.1

#建库
create database zabbix character set utf8 collate utf8_bin;

#授权
create user 'zabbix'@'172.16.237.1' identified by 'Utemyan001zbX';
grant all privileges on zabbix.* to 'zabbix'@'172.16.237.1';

flush privileges;

更新防火墙规则

代码语言:javascript
复制
vim /etc/sysconfig/iptables
-A INPUT -p tcp -s 172.16.238.0/24  -j ACCEPT
-A INPUT -p tcp -s 172.16.239.0/24  -j ACCEPT

#重启服务生效
systemctl reload iptables
systemctl restart docker

启动zabbix-server并测试

登录m1,m2

代码语言:javascript
复制
cd /opt/ly-traffic/zabbix54 
docker-compose up

安装keepalived并配置

代码语言:javascript
复制
#安装
yum -y install keepalived  mariadb

#配置并启动
## m1上执行
ln -sf /opt/zabbix-ha/keepalived/m1-keepalived.conf  /etc/keepalived/keepalived.conf
ln -sf /opt/zabbix-ha/keepalived/scripts/check-backup.sh   /etc/keepalived/check.sh
systemctl enable  --now  keepalived

## m2上执行
ln -sf /opt/zabbix-ha/keepalived/m2-keepalived.conf  /etc/keepalived/keepalived.conf
ln -sf /opt/zabbix-ha/keepalived/scripts/check-backup.sh  /etc/keepalived/check.sh
systemctl enable  --now  keepalived

访问zabbix

zabbix可用性测试。最终实现效果:出现故障,自动切换到m2备机。收到报警后,排除m1故障。

代码语言:javascript
复制
curl -s -X POST -H 'Content-Type:application/json'  -d  '{ "jsonrpc": "2.0",  "method": "user.login", "params": {"user": "Admin", "password": "LuoyunNOC-01" }, "id": 1 }'  http://127.0.0.1/api_jsonrpc.php   
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年03月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • zabbix基础知识
    • 关键模块
      • zabbix监控流程
        • 监控类型
          • zabbix系统对应-nms
          • 准备工作
            • 服务器资源
              • IP地址
              • 项目全部代码和脚本
              • 基础环境配置
                • 系统初始化
                • mysql数据库的主主配置
                  • 启动数据库(m1,m2同时执行)
                    • 启用GTID 主主复制
                    • zabbix server 双机部署
                      • mysql建库并授权
                        • 更新防火墙规则
                          • 启动zabbix-server并测试
                            • 安装keepalived并配置
                              • 访问zabbix
                              相关产品与服务
                              容器服务
                              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档