5.6.1及以前版本的升级

创建时间:2024-04-02 最近修改时间:2024-04-02

#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
1
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/
1
2
3
4

继续执行如下命令完成升级:

mt saltstack.upgrade mount_root=/media
umount /media
1
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
1
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
1
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
1
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 kernel
    
    1
    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.upgrade
    
    1
    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
  • 如果升级前曾做过页面定制,需要将定制过的内容备份,升级后重新配置。