升級期間,不會影響到現有的系統,系統將保持正常的運行,升級完成後,將進行一段時間的可用性測試,待系統穩定後將替換生產上的監控。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
歡迎關注我的公號「運維開發故事」