5.6.1及以前版本的升级
#1. 5.6.1及以前版本的升级
#1.1 环境检查
警告
HA环境下,目前暂且可能会出现备控制器hamgrd先于主控制器hamgrd启动,且时间差距超出10秒的情形,这种情形下可能会导致升级过程中主备切换,因此建议通过控制口ip完成升级。
在升级前需要对系统环境进行检查,避免因环境导致升级ERROR,检查环境如下:
- 查看所有节点的salt-minion进程状态,如果进程有ERROR输出,需要重启salt-minion, 若salt-minion重启,salt-master也需要重启
- systemctl status salt-minion
- systemctl status master
- 测试saltstack是否工作正常
- salt-run manage.up # 检查活跃的salt-minion端,执行完成后,会输出所有salt-minion节点,如输出中缺少某个节点,证明此节点无法与salt-master通信
- salt * pillar.get 'master:nodegroups' # 获取pillar参数,测试saltstack工作是否正常,如无法获取数据,请执行下面命令
- salt * saltutil.sync_all # 同步salt所有配置信息
#1.2 离线升级
将安装包拷贝到控制器上,执行如下命令更新控制器软件包:
mount -o ro deepflow-offline-release-XXX.iso /media
# 避免因升级触发HA切换(5.5.4版本及以后无需此操作,已包含在升级过程中)
salt -N controller service.stop hamgrd
/media/install.sh -u
2
3
4
更新完后,在如下路径寻找.rpmnew,如果存在,更新对应的配置文件并删除.rpmnew。
注意:如果修改了deepflow-master.conf或nodegroup,需要重启salt-master。
/usr/local/deepflow/saltstack/
/usr/local/deepflow/saltstack/pillar/
/usr/local/deepflow/conf/deepflow.conf
/etc/
2
3
4
继续执行如下命令完成升级:
mt saltstack.upgrade mount_root=/media
umount /media
2
注意:完成后重启控制器上systemctl list-dependencies deepflow.target中的如下服务:
for daemon in "talker manager acl-controller statistics analysis pcap trisolaris alarm report exchange diagnose genesis"; do
salt -N controller cmd.run "systemctl restart $daemon"
done
2
3
#1.3 在线升级 [仅用于测试环境相同版本升级]
使用Jenkins打包机或自动化部署测试机作为升级源,目前HOSTNAME可以选择 10.30.49.10 。
mt saltstack.upgrade ssh=$HOSTNAME:/usr/local/deepflow/
完成后,如果需要修改或修改了deepflow.conf,需要重启控制器上 systemctl list-dependencies deepflow.target中的所有服务。
#1.4 数据库升级 [仅用于测试环境相同版本升级]
连接mysql后,执行如下命令
use deepflow
source /usr/local/deepflow/db/issu/5.x.x.sql
2
完成后,需要重启控制器上systemctl list-dependencies deepflow.target中的如下服务:
for daemon in "talker manager acl-controller statistics analysis pcap trisolaris alarm report exchange diagnose genesis"; do
salt -N controller cmd.run "systemctl restart $daemon"
done
2
3
#2. ES索引mapping升级
- 停止所有数据节点上的stream进程
- 更新es索引mapping,在控制器上执行如下命令(注意:当天的索引mapping不会被更新,除非删除索引)
mt elasticsearch.initialize # 提示是否删除索引,选择不删除1
2 - 重新添加kibana中的
dfi_flow__0_*索引 - 启动所有数据节点上的stream进程
#3. 升级问题处理及检查
如果在升级过程中遇到数据节点内核没升级,可以通过如下命令进行单独升级,升级完成后重启数据节点,使新内核生效
salt -S <NODE_IP> cmd.run 'uname -r' // 确定内核版本是否为4.9.90-29.el7.x86_64 salt -S <NODE_IP> state.apply kernel1
2若升级执行mt saltstack.upgrade时报如下错误,需要重启salt-master并刷新salt,再重新执行升级操作
Rendering SLS 'base:roles' failed: Jinja variable 'dict object' has no attribute 'elasticsearch-warm'
systemctl restart salt-master salt \* saltutil.sync_all mt saltstack.upgrade1
2
3升级执行mt saltstack.upgrade时,遇到python36-PyYAML升级失败报错的解决方法
错误内容如下:
报错主机名: Delta RPMs disabled because /usr/bin/applydeltarpm not installed. Error unpacking rpm package python36-PyYAML-3.13-1.el7.x86_64 error: unpacking of archive failed on file /usr/lib64/python3.6/site-packages/PyYAML-3.13-py3.6.egg-info: cpio: rename failed - Is a directory\npython36-PyYAML-3.12-1.el7.x86_64 was supposed to be removed but is not!'1
2
3
4执行如下命令后,重新执行mt saltstack.upgrade进行升级。
# salt -L [报错节点主机名列表,以逗号分隔] cmd.run "rm -rf /usr/lib64/python3.6/site-packages/PyYAML-3*" salt -L analyzer3,analyzer4 cmd.run "rm -rf /usr/lib64/python3.6/site-packages/PyYAML-3*"1
2如果升级前曾做过页面定制,需要将定制过的内容备份,升级后重新配置。