升级期间,不会影响到现有的系统,系统将保持正常的运行,升级完成后,将进行一段时间的可用性测试,待系统稳定后将替换生产上的监控。php
本次升级采用蓝绿部署的方式,先在测试环境从新部署一套4.0,将原有的系统配置文件导入到测试环境中去,而后再经过从4.0升级到5.0的方法来实现。因为5.0较4.0相比变化较大,数据库中表数量和表字段较4.0有些变化,直接安装5.0再导入4.0的库会致使数据库数据导入失败。html
因为官方ZABBIX5.0发布时间短,ZABBIX5.0中可能会存在一些bug,后期官方还会进行一些小的升级来修复bug前端
systemctl stop zabbix-server systemctl stop zabbix-proxy systemctl stop httpd php-fpm
mysqldump -uzabbix -p --single-transaction --master-data=2 --databases zabbix > olddata.sql # mkdir /opt/zabbix-backup/ # cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/ # cp /etc/httpd/conf.d/zabbix.conf /opt/zabbix-backup/ # cp -R /usr/share/zabbix/ /opt/zabbix-backup/ # cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup/
因为使用官方源网络很差,这里我使用了阿里云的zabbix源node
rm -rf /etc/repos.d/zabbix.repo rpm -qa | grep zabbix-release && rpm -e zabbix-release rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm sed -i 's@repo.zabbix.com@mirrors.aliyun.com/zabbix@g' /etc/yum.repos.d/zabbix.repo yum clean all yum makecache fast
yum upgrade zabbix-server-mysql zabbix-web-mysql zabbix-agent
yum remove zabbix-web yum install centos-release-scl -y yum install https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/zabbix-web-deps-scl-5.0.0-1.el7.noarch.rpm yum install https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/zabbix-web-5.0.0-1.el7.noarch.rpm yum install https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/zabbix-web-mysql-scl-5.0.0-1.el7.noarch.rpm yum install https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/zabbix-apache-conf-scl-5.0.0-1.el7.noarch.rpm
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf php_value[date.timezone] = Asia/shanghai
systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm
这里仍是没有仔细看官方文档,是由于zabbix的历史数据和趋势数据的数值(浮点型)数据类型支持的精度更高,须要手动更新数据库补丁,
MySQL的补丁地址为:https://git.zabbix.com/projects/ZBX/repos/zabbix/raw/database/mysql/double.sqlmysql
ALTER TABLE trends MODIFY value_min DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_avg DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_max DOUBLE PRECISION DEFAULT '0.0000' NOT NULL; ALTER TABLE history MODIFY value DOUBLE PRECISION DEFAULT '0.0000' NOT NULL;
还须要更新配置文件linux
vim /etc/zabbix/web/zabbix.conf.php $DB['DOUBLE_IEEE754'] = true;
更新完以后重启zabbix-servergit
systemctl restart zabbix-server
zabbix5.0如今已经开始支持ES7.x版本,再也不支持旧版本,升级后的好处之一就是ES从6.6版本开始支持索引生命周期管理,这样对zabbix收集到的历史数据索引管理更加方便。ES新升级的这套zabbix能够直接部署7.x的ES集群。若是还须要之前的历史数据,能够将原来的历史数据从原先集群复制一份,能够使用ES的快照功能或者logstash进行复制。下面介绍将ES的6.1升级到ES7.0的步骤,6.1-7.0.1不支持滚动升级,也就是必需要中止整个ES集群来进行升级
参考ES官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.0/restart-upgrade.htmlweb
zabbix5.0支持7.x的ES,ES在升级成功以前先暂时中止历史数据到ES的写入,改用MySQL存储
将对接ES的部分注释掉sql
vim /etc/zabbix/web/zabbix.conf.php //$HISTORY['url'] = 'http://192.168.179.134:9200'; //$HISTORY['types']=['uint','dbl','str','log','text'];
vim /etc/zabbix/zabbix_server.conf #HistoryStorageURL=http://192.168.179.134:9200 #HistoryStorageTypes=uint,dbl,str,log,text #HistoryStorageDateIndex=1 systemctl restart zabbix-server
PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": "primaries" } }
systemctl stop elasticsearch
因为以前是使用二进制部署的,这里我也使用二进制升级数据库
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-linux-x86_64.tar.gz tar -zxvf elasticsearch-7.0.1-linux-x86_64.tar.gz
将6.1的配置文件覆盖至7.0.1的config目录
cp /elasticsearch/elasticsearch-6.4.0/config/elasticsearch.yml /elasticsearch-7.0.1/config/elasticsearch.yml
修改后的配置文件以下,第一次启动集群时须要在集群中定义cluster.initial_master_nodes,为一组具备master节点资格的节点
5.启动全部节点
su elker ./elasticsearch-7.0.1/bin/elasticsearch
查看节点状态,能够看到已经升级到7.0
查看索引起现之前的索引也还在
当主分片恢复完成,集群状态为yellow后能够从新启用分片分配
PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": null } }
vim /etc/zabbix/web/zabbix.conf.php $HISTORY['url'] = 'http://192.168.179.134:9200'; $HISTORY['types']=['uint','dbl','str','log','text'];
vim /etc/zabbix/zabbix_server.conf HistoryStorageURL=http://192.168.179.134:9200 HistoryStorageTypes=uint,dbl,str,log,text HistoryStorageDateIndex=1 systemctl restart zabbix-server
欢迎关注我的公号“运维开发故事”