首页 > 其他分享 >Zabbix Server 6.0 LTS 原生高可用HA集群部署 - On Debian11

Zabbix Server 6.0 LTS 原生高可用HA集群部署 - On Debian11

时间:2023-07-27 22:36:09浏览次数:45  
标签:LTS 10.100 zabbix server Server Zabbix mysql php

官方文档里面说明,Zabbix Server HA 最少需要两个节点,多台Zabbix server作为集群中的节点运行。 当集群中的一个Zabbix server 处于active 时,其他服务器处于standy,随时准备在必要时接管。

无论集群的节点数量有多少,只有一个节点实例是出于Active状态,Standby节点不收集监控数据或者处理其他任务;

官方文档:

国内zabbix源:

环境约定

组件版本

OS: Debian 11.7

Zabbix: 6.0

MySQL: 8.0

Nginx: 1.24.0

PHP: 7.4

节点信息

因为我的笔记本内存有限,只能搭建最小规模的HA集群,所以我们只部署一个单点的MySQL实例,并将Zabbix Web服务和Zabbix Server(Nginx+PHP)服务部署在一台机器上;在大规模监控或对可用性要求非常高的场景下,建议高可用部署MySQL,并将Zabbix Web独立部署,相关架构图可以参考https://www.infvie.com/ops-notes/zabbix-ha-cluster.html 这个博客的内容

IP Role Port
10.100.1.11 Zabbix Server + Zabbix Web 10051 + 80
10.100.1.12 Zabbix Server + Zabbix Web 10051 + 80
10.100.1.13 MySQL

节点的初始化操作可以浏览debian11系统初始化

MySQL安装

mysql的安装可以浏览Debian11 TAR包安装MySQL8.0

安装完成后我们需要手动创建zabbix的库

# mysql -uroot -p
输入password
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

Nginx安装

Debian 11系统自身源的nginx版本是1.18, 我这边选择安装最新的nginx stable版本

我们需要在两台Zabbix Web服务器上安装Nginx, 安装可以浏览 Debian 11 安装Nginx最新stable版本

有些文档可以重复利用,哈哈

Zabbix Server + Web安装

接下来其实按照官方文档安装没有任何问题,如果就像上面说的,你如果要部署完全高可用的Zabbix,就需要把组件拆开安装了,我选择安装在一块儿

如果选择安装在一块儿

  • all in one 安装
wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-4+debian11_all.deb
dpkg -i zabbix-release_6.0-4+debian11_all.deb
apt update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

如果要拆开安装

  • zabbix web 安装
apt install zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
  • zabbix server安装
apt install zabbix-server-mysql zabbix-sql-scripts zabbix-agent

数据初始化

只需要在一台Zabbix Server机器执行即可,进行数据初始化, 可能需要执行apt install unzip安装需要的包

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -h 10.100.1.13 -uzabbix -p zabbix

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

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

配置Zabbix Server

两台Zabbix Server上都需要修改配置,并修改DBHostDBNameDBUserDBPasswordDBPortHANodeNameNodeAddress参数

ListenPort=10051
LogType=file
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
DebugLevel=3
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBHost=10.100.1.13
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
AllowUnsupportedDBVersions=0
StartPollers=50
StartIPMIPollers=10
StartPreprocessors=30
StartPollersUnreachable=10
StartHistoryPollers=50
StartTrappers=50
StartPingers=10
StartDiscoverers=10
StartHTTPPollers=10
StartTimers=10
StartEscalators=10
StartAlerters=30
StartVMwareCollectors=10
VMwareFrequency=60
VMwarePerfFrequency=60
VMwareCacheSize=80M
VMwareTimeout=10
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
StartSNMPTrapper=1
ListenIP=0.0.0.0
HousekeepingFrequency=1
MaxHousekeeperDelete=50000
CacheSize=2G
CacheUpdateFrequency=60
StartDBSyncers=40
HistoryCacheSize=512M
HistoryIndexCacheSize=512M
TrendCacheSize=256M
TrendFunctionCacheSize=256M
ValueCacheSize=512M
Timeout=5
TrapperTimeout=300
UnreachablePeriod=45
UnavailableDelay=60
UnreachableDelay=15
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
TmpDir=/tmp
StartProxyPollers=10
ProxyConfigFrequency=60
ProxyDataFrequency=1
StartLLDProcessors=20
AllowRoot=0
User=zabbix
StatsAllowedIP=127.0.0.1
# 这俩参数是HA的关键,这里的两个配置可以写IP也可以写域名, 需要保证每个节点的地址不冲突
HANodeName=10.100.1.11
NodeAddress=10.100.1.11:10051
# 另一台节点需要改下地址
#HANodeName=10.100.1.12
#NodeAddress=10.100.1.12:10051

配置Zabbix Server

我们需要编辑/etc/zabbix/conf.d/zabbix.conf取消注释listenserver_name, 修改端口为80

listen 80;
server_name example.com;

修改php-fpm配置,/etc/php/7.4/fpm/pool.d/zabbix-php-fpm.conf中默认的配置中listen.owner的用户配置不正确,我们需要将其修改为nginx,否则在最终服务都启动后,因为权限原因,浏览器访问zabbix web会报502的错

[zabbix]
user = www-data
group = www-data
listen = /var/run/php/zabbix.sock
listen.owner = nginx
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 200
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 140
pm.max_requests = 800
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/sessions/
php_value[max_execution_time] = 1200
php_value[memory_limit] = 512M
php_value[post_max_size] = 64M
php_value[upload_max_filesize] = 20M
php_value[max_input_time] = 1200
php_value[max_input_vars] = 400000

配置Zabbix Agent

修改/etc/zabbix/zabbix_agentd.conf

PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.100.1.11,10.100.1.12
ServerActive=10.100.1.11,10.100.1.12
Hostname=10.100.1.11
RefreshActiveChecks=60
BufferSend=5
BufferSize=256
Timeout=5
AllowRoot=0
User=zabbix
Include=/etc/zabbix/zabbix_agentd.d/*.conf

启动服务

systemctl disable --now apache2.service
systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm

配置Web

需要逐台配置web,分别登陆 http://10.100.1.11http://10.100.1.12 进行配置

文档写的比较粗糙,适合稍微有点zabbix经验的人,文档有错误或者需要改进的地方希望大家能够指出,我会及时修改更新

标签:LTS,10.100,zabbix,server,Server,Zabbix,mysql,php
From: https://www.cnblogs.com/zhaojli/p/17586282.html

相关文章

  • SqlServer 带空格的字符串比较
    SqlServer带空格的字符串比较介绍SqlServer字符串比较,会匹配具有尾随空格的字符串字符串比较规则SQLServer数据库引擎遵循有关如何比较包含空格的字符串的ANSI/ISOSQL-92规范(第8.2节“比较谓词”,第3条通用规则)。ANSI标准要求对比较中使用的字符串进行填充,以便在......
  • mysql启动报错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:330
    mysql启动报错:ERROR2003(HY000):Can'tconnecttoMySQLserveron'localhost:3306'(10061)netstat-ano|findstr3306,检查端口3306上是否有进程运行(或直接检查任务管理器中的进程),发现mysqld.exe进程未运行以管理员身份运行cmd,键入netstartmysql,遇到报错:MySQL服务......
  • windows环境下安装live-server
    一、更换成淘宝的源npmconfigsetregistryhttps://registry.npm.taobao.org验证是否更换成功npmconfiggetregistry–或npminfoexpress二、以管理员身份打开cmd,并运行如下命令npminstall-glive-server三、验证live-server是否安装成功在静态资源的目......
  • java sqlserver如何处理精度丢失
    Java与SQLServer结合使用时,可能会出现精度丢失的问题。这个问题主要是由于Java中的double和float类型的数据精度限制导致的。在处理需要保持精度的数据时,可以采用以下几种方法来解决。一、使用BigDecimal类BigDecimal类是Java中用于处理高精度数值计算的类,可以避免精度丢失。在......
  • ltsql 增加语法兼容类型提示
    背景lightdb目前兼容mysql,oracle语法。为了提醒用户正在使用的是哪种类型的数据库,lightdb在ltsql端增加了连接提示。用户在初次连接数据库或在psql内切换数据库时,会打印一条消息提示。该功能出现在lightdb版本:LightDB1.0.V202303.00.000测试用例$#不带参数运行,......
  • SQL Server 数据库
    如果SQLServer数据库文件大小为0,可能是由于文件损坏或其他问题导致的。以下是一些修复数据库文件的常见命令和步骤:验证数据库文件完整性:使用以下命令检查数据库文件的完整性,并尝试修复任何损坏的页面或逻辑错误:DBCCCHECKDB('YourDatabaseName')WITHREPAIR_ALLOW_DATA_......
  • sql server 查询执行记录
    SELECTTOP1000qs.last_execution_time,DB_NAME(st.dbid)ASdatabase_name,OBJECT_NAME(st.objectid,st.dbid)ASobject_name,SUBSTRING(st.text,(qs.statement_start_offset/2)+1,((CASEqs.statement_end_offsetWHEN-1THEN......
  • kube-apiserver内存溢出问题调查及go tool pprof工具的使用
    问题描述测试集群三台master,每个master上面的kube-apiserver都频繁的重启。登录其中一台master,发现kube-apiserver的内存占用特别高,每次重启完后内存很快就飙到了20G左右,而且还有继续增长的趋势。因为默认kube-apiserver的静态pod是没有设置memeorylimit的,最终api-server会吃光......
  • SQL Server锁知识
    SQLServer锁LOCK 数据库引擎存储过程SETTRANSACTIONISOLATIONLEVEL在多用户的情况下不免要进行并发控制。微软提供了锁机制。这里锁分为两个部分,一个是锁的范围(行锁、页面锁、表锁),另一个是锁的粒度(共享锁、持有锁等)服务器带宽,服务器费用,开发人员费用,运维费用,别的没有......
  • arcgis for js 4.x 加载 geoserver WMS WMTS
    arcgisforjs4.x加载geoserverwms代码如下<html><head><metacharset="utf-8"/><metaname="viewport"content="initial-scale=1,maximum-scale=1,user-scalable=no"/><ti......