• 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选择查询将使用带有时间列的WHEREGROUP BYORDER BY子句。
    • 时间序列数据的保留策略通常都是批量删除, 而不是删除单个记录。

    那么,是否有办法在不丧失SQL灵活性的情况下利用时间序列数据库呢?不出意外,没有一刀切的答案,但有个时间序列解决方案达到了非常接近的效果——TimescaleDB。

    TimescaleDB基于PostgreSQL数据库打造的一款时序数据库,插件化的形式部署,随着PostgreSQL的版本升级而升级,具备以下特点:

    1. 基于时序优化;
    2. 自动分片(按时间、空间自动分片(chunk));
    3. 全SQL接口;
    4. 支持垂直与横向扩展;
    5. 支持时间维度、空间维度自动分区。空间维度指属性字段(例如传感器ID,用户ID等);
    6. 支持多个SERVER,多个CHUNK的并行查询。分区在TimescaleDB中被称为chunk;
    7. 自动调整CHUNK的大小;
    8. 内部写优化(批量提交、内存索引、事务支持、数据倒灌);
    9. 复杂查询优化(根据查询条件自动选择chunk,最近值获取优化(最小化的扫描,类似递归收敛),limit子句pushdown到不同的;server,chunks,并行的聚合操作);
    10. 利用已有的PostgreSQL特性(支持GIS,JOIN等),方便的管理(流复制、PITR);
    11. 支持自动的按时间保留策略(自动删除过旧数据);

    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

    选择中文:

    image-20220221141316981

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

    image-20220221141418705

    配置DB连接:

    image-20220223134813975

    时区选择上海:

    image-20220222144834881

    image-20220223134925323

    安装完成,少年

    image-20220221141557238

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

    image-20220221141645145

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

    image-20220223135125406

    配置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

    image-20220223135629249

    image-20220223135720975

    同时,test-zbx-3开始作为server工作,数据采集正常。

  • 相关阅读:
    debian的xfce内多余的菜单位置
    cocos2dx学习笔记之图片分辨率适配
    cocos2dx学习笔记之辅助工具
    cocos2dx游戏开发必备工具之PhysicsEditor【ZT】
    cocos2dx学习笔记之粒子效果
    mac下直接下载xcode的地址
    无需花生壳,dnspod实现ddns
    android和view相关的东西
    android的一些经典三方库
    简单工厂模式扩展工厂方法模式
  • 原文地址:https://www.cnblogs.com/Rohn/p/15927189.html
Copyright © 2020-2023  润新知