概要描述
Manager通过升级路径来管理服务的升级,本文详细介绍一下升级路的原理、功能等
什么是升级路径
TDH产品中,每个服务都有多个版本,Manager通过“升级路径”来管理的哪些版本之间可以升级&回滚。
以Zookeeper举例:如果可以从522版本升级到601版本,就认为zookeeper存在一条522->601的“升级路径”。
升级路径的定义
Manager通过节点上的升级配置文件来定义升级路径。
还是以Zookeeper举例:
查看目录 /var/lib/transwarp-manager/master/content/meta/services/ZOOKEEPER/transwarp-6.0.1-final/upgrade
去除掉其中的2个ce版本,剩下的4个文件定义了4条升级路径:
501 -> 601
516 -> 601
522 -> 601
600 -> 601
这表明,在该集群中,只有501/516/522/600这4个版本的zk可以升级到601版本。
如果客户安装的是523版本的zk,那么即使上传了601的产品包也是不能升级zk的。
Manager的启动日志加载升级路径
Manager主进程启动时会加载/var/lib/transwarp-manager/master/content/meta/services下的所有upgrade目录下的升级路径文件,/var/log/transwarp-manager/master/transwarp-manager.log日志中可以找到集群中所有的升级路径:
2020-08-31 14:47:47,233 INFO FsServiceMetaLocator: (ServiceMetaLocator.scala:527) - found upgrade path from transwarp-5.0.1-final to transwarp-6.0.1-final
2020-08-31 14:47:47,233 INFO FsServiceMetaLocator: (ServiceMetaLocator.scala:527) - found upgrade path from transwarp-5.1.6-final to transwarp-6.0.1-final
2020-08-31 14:47:47,233 INFO FsServiceMetaLocator: (ServiceMetaLocator.scala:527) - found upgrade path from transwarp-5.2.2-final to transwarp-6.0.1-final
2020-08-31 14:47:47,233 INFO FsServiceMetaLocator: (ServiceMetaLocator.scala:527) - found upgrade path from transwarp-6.0.0-final to transwarp-6.0.1-final
2020-08-31 14:47:47,234 INFO FsServiceMetaLocator: (ServiceMetaLocator.scala:527) - found upgrade path from transwarp-ce-1.0.0-final to transwarp-6.0.1-final
2020-08-31 14:47:47,234 INFO FsServiceMetaLocator: (ServiceMetaLocator.scala:527) - found upgrade path from transwarp-ce-1.1.0-final to transwarp-6.0.1-final
2020-08-31 14:47:47,234 INFO FsServiceMetaLocator: (ServiceMetaLocator.scala:264) - loaded service meta of ZOOKEEPER transwarp-6.0.1-final
手动添加升级路径
大部分情况下,不同版本的服务缺少升级路径是有意为之,目的是保证服务的版本兼容性。
少数情况下是产品发布时候遗漏掉了,比如,601是在523之前发布的,所以601中并没有包含523->601的升级路径,此时就需要手动添加一条升级路径:
cd /var/lib/transwarp-manager/master/content/meta/services/ZOOKEEPER/transwarp-6.0.1-final/upgrade
touch from_transwarp-5.2.3-final.yaml
vi from_transwarp-5.2.3-final.yaml
参考其他版本的升级文件修改之后,重启manager即可生效。