• 首页 > 
  • 应急预案:专有云V3环境中升级EDAS产品sar版本的方法

应急预案:专有云V3环境中升级EDAS产品sar版本的方法

KB: 185775

 · 

更新时间:2020-10-27 19:59

1. 概述

本文主要介绍在专有云V3环境中,如何升级EDAS产品的sar版本。

1.1. 适用范围

  • 专有云V3企业版,EDAS
    说明:适用于专有云V3.0.0及以上版本。

1.2. 用户告知

  • 适用平台:x86、ARM
  • 授权级别:L2(二线技术支持工程师)
  • 临时或固化方案:固化
  • 操作复杂度:中
  • 预估执行时长:1小时
  • 业务影响:否
    说明:做好数据表备份,升级sar包期间在控制台不可执行操作。
  • 风险等级:中
    说明:无风险,需要客户对应用测试验证:
    • 先在测试环境将sar版本进行替换,测试没问题后再替换生产环境的sar版本。
    • 按照系统重要性,先升级重要性没那么高的系统,再将主要的业务升级到需要的sar包的版本。

2. 问题描述

在专有云V3环境中,容器版本的sar包在升级后发布应用报错,回滚到旧的版本正常,需要对sar包进行升级订正处理。

3. 解决方案

3.1. 环境检查

登录EDAS应用下的其中一台ECS实例,执行以下命令,查看当前sar包的版本。

cat /home/admin/taobao-tomcat-production-7.0.59.3/deploy/taobao-hsf.sar/version.properties

系统显示类似如下。

3.2. 实施步骤

上传sar包到cai-fs容器

  1. 下载sar升级包
    注意:本文以3.6.1版本为例,现场需要根据实际版本联系阿里云技术支持进行获取。
  2. 登录天基控制台,在Project框中搜索edas,单击BasicCluster-A-XXXX集群右侧的集群运维中心
  3. 在集群运维中心页面,选择edas-edasService服务与CaiFs#服务角色,单击Terminal,登录对应的机器。
  4. 执行以下命令,查看cai-fs容器的ID。
    docker ps|grep cai-fs
  5. 执行以下命令,进入cai-fs容器。
    docker exec -it [$Container_ID] bash
    说明:[$Container_ID]为cai-fs容器的ID。
  6. 依次执行以下命令,切换成admin用户,进入/home/admin/file目录。
    su - admin
    cd /home/admin/file
  7. 执行以下命令,创建一个新的目录,存放taobao-hsf.tgz文件。
    mkdir [$Update]
    说明:[$Update]目录名可自定义。
  8. 将新版本的sar包上传至cai-fs容器。
  9. 执行以下命令,将文件移动到[$Update]目录中。
    mv [$Tmp]/taobao-hsf.tgz /home/admin/file/[$Update]/taobao-hsf.tgz
    说明:[$Tmp]为包的路径。

上传sar包到OSS

  1. 在CaiFs#服务角色的VM上,执行以下命令,获取容器ID。
    docker ps -a|grep init
    系统显示类似如下。
  2. 执行以下命令,获取oss_bucket_name和oss_domain的值。
    docker inspect [$EDAS_Init_Container_ID]|grep oss
    说明:[$EDAS_Init_Container_ID]为edas-init容器的ID。
    系统显示类似如下。
  3. 通过support-tools工具,备份cai-fs容器中/home/admin/file/目录下的文件。
    1. 进入cai-fs容器,执行以下命令,进入指定目录。
      cd /home/admin/support-tools/support-tools
    2. 将要上传的文件按路径存放在该目录下的file目录下,即file为根目录与/home/admin/file目录对应。
    3. 执行以下命令,上传包到OSS。
      ./bin/P01.py -a upload
      系统显示类似如下。

Nginx配置

注意:配置修改后,不要重启docker,配置会还原风险,建议升到已固化的hotfix。

  1. 执行以下命令,查看nginx-proxy进程。
    ps -ef|grep tengine
    系统显示类似如下。
  2. 执行以下命令,备份nginx-proxy.conf文件。
    cp /home/admin/cai/.running_conf/nginx-proxy.conf  /home/admin/cai/.running_conf/nginx-proxy.conf.bak
  3. 修改nginx-proxy.conf文件。
    /home/admin/cai/.running_conf/nginx-proxy.conf
    修改proxy_pass的地址为:http://[$OSS_Bucket_Name].[$OSS_Domain]
    说明:[$OSS_Bucket_Name]和[$OSS_Domain]为上传sar包到OSS第2步获取的值。
    修改后系统显示类似如下。
  4. 执行以下命令,检测配置是否合法。
    /opt/taobao/tengine/bin/tengine -c /home/admin/cai/.running_conf/nginx-proxy.conf -p /home/admin/cai -t
  5. 执行以下命令,重新加载配置。
    /opt/taobao/tengine/bin/tengine -c /home/admin/cai/.running_conf/nginx-proxy.conf -p /home/admin/cai -s reload
  6. 找一个ECS实例,执行以下命令,通过文件服务器地址验证上传后的文件路径正确。
    wget http://[$File_Server]/[$Update]/taobao-hsf.tgz
    说明:[$File_Server]为文件服务器的地址。
    系统显示类似如下。

在edas数据库中插入数据

  1. 登录MiniRDS运维管理控制台,在edas数据库的备份策略中,单击创建临时备份按钮。
  2. 在弹出的页面中,备份类型选择FULL备份方法选择主库物理备份,单击确定,全量备份edas主数据库。
  3. 备份恢复中,确认有最新备份的时间点。
  4. 登录edas数据库,执行以下SQL语句,查看build_pack表结构。
    show create table build_pack\G
    系统显示类似如下。

    注意:不同版本的build_pack表结构不同,下一步的SQL语句不适合所有环境,请根据实际情况查询。可使用desc build_pack语句查看表结构以后,再进行修改。
  5. 执行以下SQL语句,在edas数据库的build_pack表中新增一条记录,插入完毕之后,会输出刚刚插入的这条记录。
    INSERT INTO build_pack
      (CONFIG_ID,
      PACK_VERSION,
      TOMCAT_VERSION,
      TOMCAT_DOWNLOAD_URL,
      TOMCAT_DESC,
      PANDORA_VERSION,
      PANDORA_DOWNLOAD_URL,
      PANDORA_DESC,
      PLUGIN_INFO,
      TOMCAT_PATH, IMAGE_ID,
      is_multiple_tenant, script_name,
      script_version,
      support_features,
      create_time)
    SELECT config_id+1, pack_version+1,
      TOMCAT_VERSION,
      TOMCAT_DOWNLOAD_URL,
      '修复部分场景',
      PANDORA_VERSION,
    ' http://fileserver.edas.ops.XXX.XXX.com/update_20200815/taobao-hsf.tgz ',
      PANDORA_DESC,
      PLUGIN_INFO,
      TOMCAT_PATH,
      IMAGE_ID,
      is_multiple_tenant,
      script_name,
      script_version,
      support_features,
      unix_timestamp() * 1000
    FROM build_pack ORDER BY config_id desc limit 1;
    注意:SQL语句中包含新版本sar包的下载地址,需要按照现场实际情况替换。
    在SQL语句插入完成之后,如果应用需要用最新的版本,请在EDAS控制台中,选择最新的软件版本进行升级。

存量应用修复方法

  1. 登录edas数据库,查看当前存量应用对应的buildpack_id值,如果不是容器版本值,请执行下一步。
    select buildpack_id from application where APP_ID='[$ID]';
    说明:[$ID]为应用ID。
    系统显示类似如下。
  2. 执行以下SQL语句,将存量应用的buildpack_id的值由1(查看值)订正为需要升级的config_id。
    update application set buildpack_id='[$Config_ID]',target_buildpack_id=0 where APP_ID='[$ID]' limit 1;
    说明:[$Config_ID]为升级版本ID。
  3. 此时,登录EDAS控制台,在实例右侧单击重置,重置应用后,即可使用sar包。
  4. 在新建应用时,直接选择对应容器版本即可。

3.3. 结果验证

  1. 登录EDAS控制台,选择应用管理>容器版本,确认升级成功。
  2. 新建应用并发布应用。
  3. 登录ECS实例,执行以下命令,查看发布的sar包版本。
    cat /home/admin/taobao-tomcat-production-7.0.59.3/deploy/taobao-hsf.sar/version.properties
    系统显示类如下。

4. 回滚方案

在cai-fs容器中,新上传的包也可以保留,不会影响应用使用,备份的数据表也可以保留。

  1. 在edas数据库中,执行以下SQL语句,确定好之前的config_id。
    select * from build_pack where config_id="[$Config_ID]"; 
  2. 执行以下SQL语句,删除对应的config_id。
    delete from build_pack where config_id="[$Config_ID]" limit 1;
  3. 登录EDAS控制台,选择应用管理>容器版本,确认已无新升级的版本记录。