Zabbix HA高可用集群部署

news2024/11/18 1:53:26

Zabbix HA高可用集群介绍

关键基础设施通常需要高可用性 (HA),因为这些基础设施几乎不会造成停机。因此,对于任何可能失败的服务,都必须有一个故障转移选项,以便在当前服务失败时接管。

Zabbix 提供了易于设置的本机高可用性解决方案,并且不需要任何先前的 HA 专业知识。本机 Zabbix HA 可能有助于针对 Zabbix 服务器的软件/硬件故障提供额外的保护层,或者减少因维护而导致的停机时间。

在 Zabbix 高可用性模式中,多个 Zabbix 服务器作为集群中的节点运行。当集群中的一台 Zabbix 服务器处于活动状态时,其他服务器处于待命状态,准备在必要时接管。

在这里插入图片描述

通过 Zabbix 6.0 LTS 中添加的原生 Zabbix Server HA 集群功能,现在可以快速配置和部署多节点 Zabbix Server HA 集群,而无需使用任何外部工具

对于 Zabbix 组件,单点故障是我们的 Zabbix 服务器。尽管 Zabbix 本身非常稳定,但您仍然可能会遇到由于操作系统级别问题或更琐碎的问题(例如磁盘空间不足)而发生崩溃的情况。如果您的 Zabbix 服务器出现故障,所有数据收集、问题检测和警报都会停止。这就是为什么这个特定的 Zabbix 组件具有某种形式的高可用性和冗余性非常重要。

Zabbix 6.0 LTS 本机高可用性解决方案易于设置,所有必需的步骤都记录在 Zabbix 文档中。原生解决方案不需要任何额外的专业知识,并将继续由 Zabbix 官方支持、更新和改进。原生高可用性解决方案不需要任何新的软件组件 - 高可用性解决方案将有关 Zabbix 服务器节点状态的信息存储在 Zabbix 数据库后端中。

部署环境规划

Zabbix HA最少需要2个Zabbix Server节点即可实现HA集群高可用及故障转移。在同一个Zabbix HA集群中,只有一个实例或节点处于active(活动)状态,standby(备用)节点不进行数据收集、处理或其他任务,并且不监听端口,并保持一个最少的数据库连接。

整体部署架构如下图所示:
在这里插入图片描述

节点规划如下:

节点名称节点IP节点OS
zabbix-web01192.168.72.18Ubuntu22.04
zabbix-web02192.168.72.19Ubuntu22.04
zabbix-server01192.168.72.31Ubuntu22.04
zabbix-server02192.168.72.32Ubuntu22.04
zabbix-proxy01192.168.72.53Ubuntu22.04
zabbix-proxy02192.168.72.54Ubuntu22.04
zabbix-agent01192.168.72.55Ubuntu22.04
zabbix-agent02192.168.72.56Ubuntu22.04
mysql-router01192.168.72.41Ubuntu22.04
mysql-router02192.168.72.42Ubuntu22.04
mysql-innodb01192.168.72.50Ubuntu22.04
mysql-innodb02192.168.72.51Ubuntu22.04
mysql-innodb03192.168.72.52Ubuntu22.04
lb01192.168.72.33Ubuntu22.04
lb02192.168.72.34Ubuntu22.04
zabbix-web-vip192.168.72.100N/A
mysql-db-vip192.168.72.200N/A

数据库集群部署

部署详情请参考:MySQL InnoDB Cluster 高可用集群部署。

确认zabbix与mysql版本兼容性:

https://www.zabbix.com/documentation/current/en/manual/installation/requirements

推荐的高可用部署选项:

  • 推荐部署Mysql innodb cluster集群。如果MySQL(或Percona)用作Zabbix后端数据库,InnoDB 引擎是必需的。
  • 或者pgpool2加3台pg数据库做读写分离。

MySQL InnoDB Cluster 为 Zabbix 监控系统提供了一个强大、可靠且易于管理的高可用数据库解决方案。它能够很好地处理 Zabbix 的写入密集型工作负载,同时提供自动故障转移和负载均衡功能,非常适合需要高可用性的监控环境。

负载局衡器部分配置调整

两台负载均衡器配置如下,增加zabbix web 负载均衡配置,分别为zabbix-web以及mysql-db使用不同的VIP地址。

以下操作在所有lb节点执行。

配置主机名

hostnamectl set-hostname lb01
hostnamectl set-hostname lb02

安装haproxy和keepalived

apt install -y haproxy keepalived

创建haproxy配置文件,两个节点配置相同

root@lb01:~# cat /etc/haproxy/haproxy.cfg
# HAProxy Configuration for lb01
global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon
    
defaults
    log global
    mode tcp
    option tcplog
    option dontlognull
    timeout connect 5000
    timeout client 50000
    timeout server 50000

frontend web_front
    bind *:8080
    default_backend web_back

backend web_back
    balance roundrobin
    server web01 192.168.72.18:8080 check
    server web02 192.168.72.19:8080 check

frontend db_rw_front
    bind *:6446
    default_backend db_rw_back

backend db_rw_back
    balance roundrobin
    server router01 192.168.72.41:6446 check
    server router02 192.168.72.42:6446 check

frontend db_ro_front
    bind *:6447
    default_backend db_ro_back

backend db_ro_back
    balance roundrobin
    server router01 192.168.72.41:6447 check
    server router02 192.168.72.42:6447 check

创建keepalived配置文件,两个节点配置相同

root@lb01:~# cat /etc/keepalived/keepalived.conf 
# Keepalived Configuration for lb01
global_defs {
    router_id 51
    script_user root
    enable_script_security
}

vrrp_script check_haproxy {
    script "/usr/bin/killall -0 haproxy"
    interval 2
    fall 2       # require 2 failures for KO
    rise 2       # require 2 successes for OK
}

vrrp_instance web_vip {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 100
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass secret123
    }
    virtual_ipaddress {
        192.168.72.100
    }
    track_script {
        check_haproxy
    }
}

vrrp_instance db_vip {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 100
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass secret456
    }
    virtual_ipaddress {
        192.168.72.200
    }
    track_script {
        check_haproxy
    }
}

启动服务

systemctl restart keepalived.service
systemctl restart haproxy.service

验证通过VIP连接mysql集群的读写和只读端口。

mysql -h192.168.72.200 -P 6446 -u app -p'App@123456'
mysql -h192.168.72.200 -P 6447 -u app -p'App@123456'

记录mysql数据库的连接信息,zabbix-server、zabbix-web以及zabbix-proxy需要分别创建独立的库存储数据。

zabbix-server部署

以下操作在所有zabbix-server节点执行,基于外部mysql数据库进行部署。

官方文档:https://www.zabbix.com/cn/download

选择相应平台获取安装命令,这里以Zabbix 7.0 + Ubuntu + MySQL + Nginx为例。
在这里插入图片描述

分别在每个节点配置主机名

hostnamectl set-hostname zabbix-server01
hostnamectl set-hostname zabbix-server02

安装软件源

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
apt update

安装Zabbix server和zabbix agent

apt install -y zabbix-server-mysql zabbix-sql-scripts zabbix-agent

查看安装版本

root@zabbix-server01:~# zabbix_server -V
zabbix_server (Zabbix) 7.0.0

root@zabbix-server01:~# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 7.0.0

在mysql-innodb01数据库服务器上执行

连接数据库

root@mysql-innodb01:~# mysql -uroot -p

创建初始数据库,在数据库主机上运行以下代码。

mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'%' identified by 'Zbx@123456';
mysql> grant all privileges on zabbix.* to 'zabbix'@'%';
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

在zabbix-server01节点执行

测试远程连接数据库

mysql -h 192.168.72.200 -P 6446 -u zabbix -p'Zbx@123456' -Dzabbix

导入初始架构和数据,系统将提示您输入新创建的密码。

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -uzabbix -P 6446 -p'Zbx@123456' -h192.168.72.200 -Dzabbix

导入数据库架构后禁用log_bin_trust_function_creators选项。

root@innodb01:~# mysql -uroot -p

mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

在zabbix-server服务器上执行,为Zabbix server配置数据库,编辑配置文件 /etc/zabbix/zabbix_server.conf

zabbix-server01配置

root@zabbix-server01:~# nano /etc/zabbix/zabbix_server.conf
DBHost=192.168.72.200
DBName=zabbix
DBUser=zabbix
DBPassword=Zbx@123456
DBPort=6446
HANodeName=zabbix-server01
NodeAddress=192.168.72.31:10051

zabbix-server02配置

root@zabbix-server02:~# nano /etc/zabbix/zabbix_server.conf
DBHost=192.168.72.200
DBName=zabbix
DBUser=zabbix
DBPassword=Zbx@123456
DBPort=6446
HANodeName=zabbix-server02
NodeAddress=192.168.72.32:10051

启动Zabbix server和agent进程,并为它们设置开机自启:

systemctl restart zabbix-server zabbix-agent
systemctl enable zabbix-server zabbix-agent

安装zabbix-web

以下操作在所有zabbix-web节点执行。

分别在每个节点配置主机名

hostnamectl set-hostname zabbix-web01
hostnamectl set-hostname zabbix-web02

安装软件源

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
apt update

部署zabbix-web前端

apt install -y zabbix-frontend-php zabbix-nginx-conf

为Zabbix前端配置PHP,编辑配置文件 /etc/zabbix/nginx.conf 去除以下行的注释。

zabbix-web01节点配置

root@zabbix-web01:~# nano /etc/zabbix/nginx.conf 
server {
        listen          8080;
        server_name     192.168.72.18;

zabbix-web02节点配置

root@zabbix-web02:~# nano /etc/zabbix/nginx.conf 
server {
        listen          8080;
        server_name     192.168.72.19;

安装中文语言包

sudo apt install -y zabbix-frontend-php language-pack-zh-hans

启动Zabbix web相关进程,并为它们设置开机自启:

systemctl restart nginx php8.1-fpm
systemctl enable nginx php8.1-fpm

打开Zabbix UI网页,开始初始化zabbix

http://192.168.72.18:8080

配置数据库连接信息
在这里插入图片描述

zabbix-web02节点配置相同,两个节点配置完成后,测试访问。

通过负载均衡VIP地址192.168.72.100访问zabbix页面,查看HA状态
在这里插入图片描述
刷新页面,查看左上角web指向的zabbix-server发生变化,说明负载均衡已生效
在这里插入图片描述

安装zabbix-proxy

配置主机名

hostnamectl set-hostname zabbix-proxy01
hostnamectl set-hostname zabbix-proxy02

添加Zabbix repository仓库

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
apt update

安装Zabbix proxy

apt install -y zabbix-proxy-mysql zabbix-sql-scripts

创建初始数据库,在mysql-innodb01数据库主机上运行以下代码。

针对zabbix-proxy01配置

连接到mysql-innodb01节点,为zabbix-proxy01节点创建专用数据库zabbix_proxy01_db以及用户zabbix_proxy01

root@mysql-innodb01:~# mysql -uroot -p
password
mysql> create database zabbix_proxy01_db character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix_proxy01@'%' identified by 'Zbx@123456';
mysql> grant all privileges on zabbix_proxy01_db.* to zabbix_proxy01@'%';
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

导入初始架构和数据,系统将提示您输入新创建的密码。

cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | \
mysql --default-character-set=utf8mb4 -uzabbix_proxy01 -P 6446 -p'Zbx@123456' -h192.168.72.200 -Dzabbix_proxy01_db

导入database schema后禁用 log_bin_trust_function_creators option

# mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

编辑配置文件 /etc/zabbix/zabbix_proxy.conf

root@zabbix-proxy01:~# nano /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
Server=192.168.72.31;192.168.72.32
Hostname=zabbix-proxy01
DBHost=192.168.72.200
DBName=zabbix_proxy01_db
DBUser=zabbix_proxy01
DBPassword=Zbx@123456
DBPort=6446

启动zabbix-proxy服务

systemctl restart zabbix-proxy
systemctl enable zabbix-proxy

针对zabbix-proxy02配置

连接到mysql-innodb01节点,为zabbix-proxy02节点创建专用数据库zabbix_proxy02_db以及用户zabbix_proxy02

root@mysql-innodb01:~# mysql -uroot -p
password
mysql> create database zabbix_proxy02_db character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix_proxy02@'%' identified by 'Zbx@123456';
mysql> grant all privileges on zabbix_proxy02_db.* to zabbix_proxy02@'%';
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

导入初始架构和数据,系统将提示您输入新创建的密码。

cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | \
mysql --default-character-set=utf8mb4 -uzabbix_proxy02 -P 6446 -p'Zbx@123456' -h192.168.72.200 -Dzabbix_proxy02_db

导入database schema后禁用 log_bin_trust_function_creators option

# mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

编辑配置文件 /etc/zabbix/zabbix_proxy.conf

root@zabbix-proxy01:~# nano /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
Server=192.168.72.31;192.168.72.32
Hostname=zabbix-proxy02
DBHost=192.168.72.200
DBName=zabbix_proxy02_db
DBUser=zabbix_proxy02
DBPassword=Zbx@123456
DBPort=6446

启动zabbix-proxy服务

systemctl restart zabbix-proxy
systemctl enable zabbix-proxy

安装zabbix-agent

配置主机名

hostnamectl set-hostname zabbix-agent01
hostnamectl set-hostname zabbix-agent02

添加Zabbix repository仓库

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
apt update

安装zabbix agent

apt install -y zabbix-agent

修改 Zabbix Agent01 配置文件

root@zabbix-agent01:~# nano /etc/zabbix/zabbix_agentd.conf
Server=192.168.72.53,192.168.72.54
ServerActive=192.168.72.53;192.168.72.54
Hostname=zabbix-agent01

修改 Zabbix Agent02 配置文件

root@zabbix-agent02:~# nano /etc/zabbix/zabbix_agentd.conf
Server=192.168.72.53,192.168.72.54
ServerActive=192.168.72.53;192.168.72.54
Hostname=zabbix-agent02

启动Zabbix代理进程并使其在系统启动时启动。

systemctl restart zabbix-agent
systemctl enable zabbix-agent

添加zabbix proxy

连接到zabbix web控制台。

创建zabbix group。

添加zabbix-proxy01
在这里插入图片描述

添加zabbix-proxy02
在这里插入图片描述

确认状态为Online
在这里插入图片描述

添加zabbix host

添加zabbix agent01
在这里插入图片描述
添加zabbix-agent02
在这里插入图片描述

确认可用性为ZBX
在这里插入图片描述

查看最新的监控数据
在这里插入图片描述

至此,zabbix高可用集群部署完成。

参考:
https://blog.zabbix.com/build-zabbix-server-ha-cluster-in-10-minutes-by-kaspars-mednis-zabbix-summit-online-2021/18155/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1882453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧渔港:海域感知与岸线监控实施方案(智慧渔港渔船综合管控平台)

文章目录 引言I 技术栈1.1 物理结构图1.2 功能逻辑结构图II 云台(大华)2.1 设备网络SDK运行在Mac平台2.2 WEB无插件开发包III 术语3.1 渔业引言 利用渔船现有的定位导航通讯设备等资源,实现岸线和近岸海域内违法船舶和可疑船舶预警、抓拍、跟踪和行为分析。 在渔船上安装风…

2024百元蓝牙耳机哪个好?2024性价比最高的蓝牙耳机推荐

2024想要在百元左右找到一款好用的性价比高的蓝牙耳机,确实是个不小的挑战。市场上各种耳机品牌和型号琳琅满目,各有各的特点。你可能会疑惑,如何才能在预算内挑选到一款性价比高、音质好的耳机呢?这篇文章将为你提供一些选购百元…

湖南省教育网络协会莅临麒麟信安调研教育网络数字化建设及教育信创发展情况

6月28日下午,湖南省教育网络协会理事长张智勇、秘书长刘志勇、副理事长黄旭、胡洪波、周中伟等协会相关负责人一行莅临麒麟信安,就湖南省教育网络数字化建设、教育信创工作等主题进行深入调研。麒麟信安副总裁王攀热情接待。 协会成员一行来到麒麟信安展…

1978Springboot在线维修预约服务应用系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot在线维修预约服务应用系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发 ),系统具有完整的源代码和…

中国智能工厂自动化集成商100强:广东23家,江苏20家,上海浙江紧随其后

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 更多的海量【智能制造】相关资料,请到智能制造online知识星球自行下载。 在数字化、智能化的浪潮中,中国智能工厂自动化集…

下代iPhone或回归可拆卸电池,苹果这操作把我看傻了

刚度过一个愉快的周末,苹果又双叒叕摊上事儿了。 iPhone13 系列被曝扎堆电池鼓包了。 早在去年,就有 iPhone13 和 iPhone14 用户反馈过类似的问题,表示在手机仅仅使用了一年多的时间就出现了电池鼓包的情况,而且还把屏幕给撑起来了…

SAP Build 3-调用SAP BAPI和调用S4HC API

1. 调用SAP BAPI 1.1 前提 项目已创建 SAP环境登录正常 1.2 引入BAPI SDK 商店中下载BAPI SDK Process中导入BAPI SDK 1.3 新建action group 新建action group时,会要求填写SAP登录信息,根据连接类型分为SSO,Basic和Custom 如果选择SS…

【办公软件使用分享—Word篇】实用技巧 一学就会 沈阳电脑办公软件基础培训

在平时的工作学习中,Word真真是让很多人头疼的一件事,今天给大家分享20个案例,感受下Word真正的力量! 1.插入自动目录 没有目录的文档不是一份合格的文档,很多人认为在Word里插入目录是一件很麻烦的事,其…

Soul打造安全社交元宇宙环境,全力守护用户线上社交安全

在数字化时代的浪潮中,智能安全线上社交正成为人们日常生活中的重要组成部分。随着人们对社交媒体和在线平台依赖程度的不断增加,保障个人信息安全和网络安全变得至关重要。在此背景下,社交平台致力于采取多种措施来保障用户的隐私安全,提升社交体验的质量和安全性。而Soul全方…

Linux[高级管理]——Squid代理服务器的部署和应用(反向代理详解)

🏡作者主页:点击! 👨‍💻Linux高级管理专栏:点击! ⏰️创作时间:2024年6月24日11点11分 🀄️文章质量:95分 目录 ————前言———— Squid的几种模式…

高效的向量搜索算法——分层可导航小世界图(HNSW)

最近在接触大模型相关内容,发现一种高效的向量搜索算法HNSW,这里做一下记录。 在之前自己也接触过一段时间的复杂网络(网络科学),没想到,将网络科学的思想引入到向量搜索算法中,可以产生令人眼前…

植物大战僵尸杂交版手机下载与安装全攻略

植物大战僵尸杂交版是一款深受玩家喜爱的策略冒险游戏,以其丰富的植物种类、多样的关卡设计和趣味的玩法著称。本文将为您提供详细的下载与安装教程,帮助您快速上手,享受游戏带来的乐趣。 游戏简介 植物大战僵尸杂交版在传统玩法的基础上&a…

C++修饰符类型

一、存储类运算符 auto(自动存储类,但在现代C中,它通常用于自动类型推导) register(建议编译器将变量存储在寄存器中,但现代编译器通常忽略此关键字) static(静态存储类&#xff…

zdppy_api+vue3+antd开发前后端分离的预加载卡片实战案例

后端代码 import api import upload import timesave_dir "uploads"async def rand_content(request):key api.req.get_query(request, "key")time.sleep(0.3)return api.resp.success(f"{key} " * 100)app api.Api(routes[api.resp.get(&qu…

泛型的使用(<T>)

文章目录 前言一、泛型是什么?二、泛型的使用 1.定义泛型类2.泛型的常规用法总结 前言 强制类型转换存在一定隐患,如数据丢失、内存溢出、运行时错误、程序逻辑错误等。所以提供了泛型机制,使程序员可以定义安全的数据类型进行操作。通俗的理…

比较(五)利用python绘制棒棒糖图

比较(五)利用python绘制棒棒糖图 棒棒糖图(Lollipop plot)简介 棒棒糖图实际上是修饰后的条形图。当在处理大量的值,并且当这些值都很高时,棒棒糖图就很有用。 快速绘制 基于matplotlib import pandas as…

基于单片机的 LED 花样照明时钟设计

摘要 : 本设计是基于单片机的 LED 花样照明 , 并附加时钟设计 . 单片机也叫微控制器 ( Micro Control Unit, 简称 MCU ), 因其价格低廉 , 功能强大 , 在实际应用中得到广泛认可 . 本设计…

基于单片机的 LED 照明灯智能调光系统设计

摘  要: 社会经济的不断发展,推动了智能化生活的进程,智能调光技术开始广泛应用在生活中,人们也逐渐提高了灯光亮灯率等的要求。基于此,笔者主要设计了基于单片机的 LED 照明灯智能调光系统,希望能够为相关…

remix测试文件测试智能合约

remix内其实也是可以通过编写测试文件来测试智能合约的,需要使用插件自动生成框架以及测试结果。本文介绍一个简单的HelloWorld合约来讲解 安装插件多重检测: (solidity unit testing) 编译部署HelloWorld合约 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;c…