降级 OpenResty Edge

1. 回滚 Admin

curl -O https://openresty.com/client/oredge/downgrade-edge-admin.sh
sudo /bin/bash downgrade-edge-admin.sh OLD_PACKAGE_VERSION
# 例如: sudo /bin/bash downgrade-edge-admin.sh 1.1.0-0

2. 回滚 Admin 数据库

# 请把脚本拷贝到 admin db 的机器执行
bash downgrade-admin-db-VERSION.sh
# 例如:bash downgrade-admin-db-217-180.sh

3. 重新编译

需要重新编译应用,请按照以下顺序进行:

  1. 先重新编译几个流量较少的不包含泛域名的 HTTP 应用
  2. 重新编译几个大流量的不包含泛域名的 HTTP 应用
  3. 全量编译所有包含泛域名的应用
  4. 全量编译所有应用
  5. 编译全局规则
# 在 admin 机器上
cd /usr/local/oredge-admin/
# 重新编译指定应用 ( APP-ID 替换为应用 ID)
sudo /bin/bash utils/recompile-apps.sh http APP-ID
# 重新编译所有应用
sudo /bin/bash utils/recompile-apps.sh wildcard-http
sudo /bin/bash utils/recompile-apps.sh http
sudo /bin/bash utils/recompile-apps.sh http_proxy
sudo /bin/bash utils/recompile-apps.sh socks5_proxy
# 重新编译全局规则
sudo /bin/bash utils/recompile-apps.sh global
# 重新编译waf规则
sudo /bin/bash utils/recompile-apps.sh waf
# 重新编译dns
sudo /bin/bash utils/recompile-apps.sh dns
# 重新编译全局动作
sudo /bin/bash utils/recompile-apps.sh global-action
# 重新编译网关节点(可能会触发 node 节点重载)
sudo /bin/bash utils/recompile-apps.sh gateway

如果业务指标都表现正常,升级完成!

如果 HTTP/HTTPS 应用数量很多,可能这一步的编译时间会比较长:

sudo /bin/bash utils/recompile-apps.sh http

此时,我们推荐用另外一个工具,来并发编译,如下命令将启动 4 个进程来编译:

sudo /bin/bash utils/parallel-recompile.sh

如果不够快,也可以指定更大的并发,但是不能超过 8,比如:

sudo /bin/bash utils/parallel-recompile.sh 8

4. 回滚 Node

我们建议先对 1~2 个 Node:

  • 迁移走流量
  • 升级
  • 验证

没问题后,再不迁移流量升级剩下的 Node 。另外,升级过程中请关注错误日志。

4.1 迁移流量(可选)

为避免影响业务,Node 节点升级前,把该节点上的流量转移到其他未升级节点上。 此步骤为可选,但是强烈建议对最初升级的少数 Node 执行此步骤。 如果使用的 OpenResty Edge 的 DNS 控制流量,请按以下步骤把即将升级的 Node 节点下线。

进入 OpenResty Edge 控制台:

  • 进入【网关集群】页面
  • 对节点所在集群进行【编辑】
  • 修改节点【状态】为【关闭 DNS,关闭集群缓存】
  • 保存

等待节点不再有流量或只有少量流量。可通过查看访问日志确定:

tail -f /usr/local/oredge-node/logs/access.log

4.2 回滚

curl -O https://openresty.com/client/oredge/downgrade-edge-node.sh
sudo /bin/bash downgrade-edge-node.sh OLD_PACKAGE_VERSION
# 如:sudo /bin/bash downgrade-edge-node.sh 1.1.0-0

5. 回滚 Log Server

curl -O https://openresty.com/client/oredge/downgrade-edge-log-server.sh
sudo /bin/bash downgrade-edge-log-server.sh OLD_PACKAGE_VERSION
# 例如: sudo /bin/bash downgrade-edge-log-server.sh 1.1.0-1

6. 回滚 Log Server 数据库

# 请把脚本拷贝到 log server db 的机器执行
bash downgrade-log-server-db-VERSION.sh
# 例如:bash downgrade-log-server-db-49-41.sh

有问题请与我们随时沟通!