Zabbix 6.0:原生高可用(HA)方案部署
Blog:博客园 个人
本部署文档适用于CentOS 8.X/RHEL 8.X/Anolis OS 8.X/AlmaLinux 8.X/Rockey Linux 8.X。
原生的HA方案终于来了
相比之前的Keepalived方案,原生方案配置简单了不少。
Zabbix HA最少需要2个Zabbix Server节点即可实现HA集群高可用及故障转移。在同一个Zabbix HA集群中,只有一个实例或节点处于active(活动)状态,standby(备用)节点不进行数据收集、处理或其他任务,并且不监听端口,并保持一个最少的数据库连接。
HA节点分为以下几种状态:
- Active(活动)
- Standby(备用)
- Unavailable(不可用)
- Stopped(停止)
中文版界面将Active翻译成主动式,并不是很准确。
关于TimescaleDB
当数据保存在Zabbix 服务器内存中时还好,但是当数据需要写入数据库 (或从数据库中读取) 时,无论多么好的缓存和算法,如果数据库性能严重低于收集指标的速度,这些算法都是没有任何帮助的。
监控系统中的数据经常插入,然后在大多数情况下是以聚合的方式访问(例如,显示图表或计算汇总项目),定期删除,几乎从不更新。此外,通常监控的指标的值按时间排序。此类数据通常称为时间序列数据。
从数据库角度来看,时序数据具有以下特点:
- 时间序列数据可以按时间排序的块序列排列在磁盘上。
- 时间序列数据至少有一列索引是由时间组成的
- 大多数SQL选择查询将使用带有时间列的
WHERE、GROUP BY或ORDER BY子句。 - 时间序列数据的保留策略通常都是批量删除, 而不是删除单个记录。
那么,是否有办法在不丧失SQL灵活性的情况下利用时间序列数据库呢?不出意外,没有一刀切的答案,但有个时间序列解决方案达到了非常接近的效果——TimescaleDB。
TimescaleDB基于PostgreSQL数据库打造的一款时序数据库,插件化的形式部署,随着PostgreSQL的版本升级而升级,具备以下特点:
- 基于时序优化;
- 自动分片(按时间、空间自动分片(chunk));
- 全SQL接口;
- 支持垂直与横向扩展;
- 支持时间维度、空间维度自动分区。空间维度指属性字段(例如传感器ID,用户ID等);
- 支持多个SERVER,多个CHUNK的并行查询。分区在TimescaleDB中被称为chunk;
- 自动调整CHUNK的大小;
- 内部写优化(批量提交、内存索引、事务支持、数据倒灌);
- 复杂查询优化(根据查询条件自动选择chunk,最近值获取优化(最小化的扫描,类似递归收敛),limit子句pushdown到不同的;server,chunks,并行的聚合操作);
- 利用已有的PostgreSQL特性(支持GIS,JOIN等),方便的管理(流复制、PITR);
- 支持自动的按时间保留策略(自动删除过旧数据);
Zabbix 从5.0版本开始全面支持TimescaleDB,并针对其特性做了优化。可自动压缩历史数据存储,节省50-70%的存储空间,同时具备自动分区功能。通过Zabbix Housekeeper清理历史数据时直接清理对应的分区,大大提高了历史数据的清理效率。建议新建系统采用TimescaleDB方案。
Tips:Zabbix 6.0版本安装完后,默认已开启7天历史数据压缩。
环境
- 系统:Rockey Linux 8.5
- 数据库:PostgreSQL13.6、TimescaleDB 2
| 主机名 | IP | 说明 |
|---|---|---|
| test-zbx-1 | 192.168.70.52 | server |
| test-zbx-2 | 192.168.70.53 | server |
| test-zbx-3 | 192.168.70.54 | server |
| test-zbx-db | 192.168.70.55 | PostgreSQL、TimescaleDB |
数据库部署
安装PostgreSQL
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf clean all && dnf make cache
dnf -qy module disable postgresql
dnf install -y postgresql13-server
安装TimescaleDB
tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
dnf install timescaledb-2-postgresql-13 -y
初始化PostgreSQL
/usr/pgsql-13/bin/postgresql-13-setup initdb
启动PostgreSQL server
systemctl enable --now postgresql-13
添加TimescaleDB并配置参数
timescaledb-tune --pg-config=/usr/pgsql-13/bin/pg_config
会出现交互画面,一路y 即可,此步骤会根据当前机器配置,调整PostgreSQL配置参数,并加载Timescaledb插件库.
重启PostgreSQL生效。
systemctl restart postgresql-13
建立Zabbix用户:
sudo -u postgres createuser --pwprompt zabbix
创建zabbix数据库:
sudo -u postgres createdb -O zabbix zabbix
为Zabbix数据库启用TimescleDB插件:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
systemctl restart postgresql-13
下载源码并导入数据库:
cd /opt
wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.0.tar.gz
tar zxf zabbix-6.0.0.tar.gz
cd zabbix-6.0.0/database/postgresql/
useradd zabbix
# 导入数据
cat schema.sql |sudo -u zabbix psql zabbix
cat images.sql |sudo -u zabbix psql zabbix
cat data.sql |sudo -u zabbix psql zabbix
# 导入TimescleDB表配置sql
cat timescaledb.sql |sudo -u zabbix psql zabbix
修改配置允许远程连接:
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /var/lib/pgsql/13/data/postgresql.conf
sed -i 's/#port = 5432/port = 5432/g' /var/lib/pgsql/13/data/postgresql.conf
sed -i 's/max_connections = 100/max_connections = 500/g' /var/lib/pgsql/13/data/postgresql.conf
配置使用md5方式认证,修改/var/lib/pgsql/13/data/pg_hba.conf,添加如下信息到# IPv4 local connections之后
host all all 0.0.0.0/0 md5
重启pgsql:
systemctl restart postgresql-13
Server部署
三个节点都执行
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
dnf clean all
dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2
修改配置文件 /etc/zabbix/zabbix_server.conf:
DBPassword=password
DBHost=192.168.70.55
# 配置当前节点主机名
HANodeName=test-zbx-1
# 配置当前节点ip:端口
NodeAddress=192.168.70.52:10051
编辑配置文件 /etc/nginx/conf.d/zabbix.conf:
listen 80;
Tips:同时需要删除/etc/nginx/nginx.conf中的80端口相关配置,否则会打不开Zabbix前端。
启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl restart zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm
配置前端
解决乱码问题。手动上传本地Windows的字体(如微软雅黑)到Zabbix服务器的/usr/share/zabbix/assets/fonts/,通常Win10字体文件在C:\Windows\Fonts路径下。
cd /usr/share/zabbix/assets/fonts
mv graphfont.ttf graphfont.ttf.backup
ln -s msyh.ttc graphfont.ttf
启动服务:
systemctl restart zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm
从/var/log/zabbix/zabbix_server.log日志文件可见test-zbx-1状态为active:
HA manager started in active mode
test-zbx-2、test-zbx-3状态为standby:
"test-zbx-2" node started in "standby" mode
"test-zbx-3" node started in "standby" mode
前端配置
连接到新安装的Zabbix前端: http://server_ip_or_name
选择中文:

必要条件检测(世界上最好的语言):

配置DB连接:

时区选择上海:


安装完成,少年

默认用户名密码:Admin/zabbix:

可以在报表-系统信息中查看:

配置Agent
HA方案需要在Agent配置文件/etc/zabbix/zabbix_agent2.conf中将所有的Server节点地址配置到Server和ServerActive中:
Server=192.168.70.52,192.168.70.53,192.168.70.54
ServerActive=192.168.70.52,192.168.70.53,192.168.70.54
重启agent
systemctl restart zabbix-agent2
验证HA
目前test-zbx-1为Active,现把它停用。
执行:
systemctl stop zabbix-server
可见test-zbx-1和test-zbx-3状态发生了变化,test-zbx-1状态变为了Stopped,test-zbx-3状态变为了Active。


同时,test-zbx-3开始作为server工作,数据采集正常。
Zabbix 6.0:原生高可用(HA)方案部署的更多相关文章
- hadoop在zookeeper上的高可用HA
(参考文章:https://www.linuxprobe.com/hadoop-high-available.html) 一.技术背景 影响HDFS集群不可用主要包括以下两种情况:一是NameNode ...
- corosync+pacemaker实现高可用(HA)集群
corosync+pacemaker实现高可用(HA)集群(一) 重要概念 在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云 资源.服务与 ...
- Mysql高可用(HA)
MySQL特点: 1) 开放的源代码的关系型数据库 2) 适应于所有平台 3) 支持多线程,充分利用CPU资源,性能很出色 4) 价格便宜 5) 大数据库能处理5000万条记录. ACID 事务 一组 ...
- hadoop学习笔记(七):hadoop2.x的高可用HA(high avaliable)和联邦F(Federation)
Hadoop介绍——HA与联邦 0.1682019.06.04 13:30:55字数 820阅读 138 Hadoop 1.0中HDFS和MapReduce在高可用.扩展性等方面存在问题: –HDFS ...
- Rancher安装多节点高可用(HA)
Rancher版本:Rancher v1.0.1 基本配置需求 多节点的HA配置请参照单节点需求 节点需要开放的端口 全局访问:TCP 端口22,80,443,18080(可选:用于在集群启动前 查看 ...
- mysql高可用探究 MMM高可用mysql方案
1 MMM高可用mysql方案 1.1 方案简介 MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复 ...
- Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群
大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...
- 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)
1.熟悉几个组件 1.1.apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...
- Hadoop 高可用(HA)的自动容灾配置
参考链接 Hadoop 完全分布式安装 ZooKeeper 集群的安装部署 0. 说明 在 Hadoop 完全分布式安装 & ZooKeeper 集群的安装部署的基础之上进行 Hadoop 高 ...
随机推荐
- 注意,你所做的 A/B 实验,可能是错的!
对于 A/B 实验原理认知的缺失,致使许多企业在业务增长的道路上始终在操作一批"错误的 A/B 实验".这些实验并不能指导产品的优化和迭代,甚至有可能与我们的初衷背道而驰,导致&q ...
- 网络协议学习笔记(四)传输层的UDP和TCP
概述 传输层里比较重要的两个协议,一个是 TCP,一个是 UDP.对于不从事底层开发的人员来讲,或者对于开发应用的人来讲,最常用的就是这两个协议.由于面试的时候,这两个协议经常会被放在一起问,因而我在 ...
- ES6随笔D1
1.数值解构赋值 ES6 允许按照一定模式,可以从数组中提取值,按照对应位置,对变量赋值,这被称为解构. 解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象.由于undefined和n ...
- 深度解读SSH免密登录
深度解读SSH免密登录 我们都知道SSH是LINUX下很常用的命令,用来远程登陆其他的LINUX系统.如果只有一台,那也只是一个密码 ,也到还好.但如果是一个集群,每次都输入密码登录,难免会拉低效率. ...
- 搭建服务器之文件共享cifs,nfs,samba
cifs: 微软系统中用于网上邻居共享的一个机制,在linux下也可以通过命令mount -t cifs .....来挂载共享的文件目录等. nfs: linux之间的共享文件方式,基于rpc ser ...
- Tomcat-如何创建动态的web工程及目录介绍
1,IDEA中如何创建动态web工程 (1)创建一个新模块 (2)选择你要创建什么类型的模块 (3)输入模块名,finish完成创建 创建成功如下图: 一般在WEB-INF下建一个lib目录 存放ja ...
- 沁恒CH32F103C8T6的开发和烧录配置说明
概述 CH32F1系列是沁恒生产的32位Cortex-M3 MCU, 片上集成了时钟安全机制.多级电源管理. 通用DMA控制器等. 此系列具有 2 路 USB2.0接口.多通道 TouchKey. 1 ...
- 【Python爬虫】爬虫利器 requests 库小结
requests库 Requests 是一个 Python 的 HTTP 客户端库. 支持许多 HTTP 特性,可以非常方便地进行网页请求.网页分析和处理网页资源,拥有许多强大的功能. 本文主要介绍 ...
- 支付宝同步请求检查appid,以及公钥,私钥是否正确
第一步:下载支付宝Demo 下载地址:https://opendocs.alipay.com/open/270/106291#%E8%BF%90%E8%A1%8C%E8%AF%B4%E6%98%8E ...
- Jvm和CPU保证特定情况下不乱序
简介 CPU为了提高指令执行效率,会在一条指令执行过程中(比去内存读数据(慢100倍)),去同时执行另一条指令,前提是,两条指令没有依赖关系. CPU保证不乱序 MESI--CPU缓存一致性协议(In ...