通过 bundle 包降级 OpenResty Edge

1. 准备旧的 bundle 包

如果您没有名为 openresty-edge-bundle-VERSION.tar.gz 的旧 bundle 包,请使用您的电子邮件地址登录 OpenResty 下载中心 下载。

tar xf openresty-edge-bundle-VERSION.tar.gz
# 示例:tar xf openresty-edge-bundle-23.12.1-rhel-8.tar.gz

通常,bundle 包将包含以下文件或目录:

  • openresty-postgresql12:包含 OpenResty Edge 数据库组件安装包的目录
  • openresty-edge-admin:包含 OpenResty Edge Admin 组件安装包的目录
  • openresty-edge-node:包含 OpenResty Edge Node 组件安装包的目录
  • openresty-edge-log-server:包含 OpenResty Edge Log Server 组件安装包的目录
  • update-admin-db-VERSION.sh,仅在升级时使用
  • update-log-server-db-VERSION.sh,仅在升级时使用
  • init_admin_db_VERSION.sh,仅在安装时使用
  • init_log_server_db_VERSION.sh,仅在安装时使用

2. 降级 Edge Admin

# 下载降级脚本
curl -O https://openresty.com/client/oredge/downgrade-edge-admin-bundle.sh

# 将脚本放置在旧的 Edge 管理端 bundle 包的目录中
cp downgrade-edge-admin-bundle.sh <old-packages-dir>

# 运行降级脚本
sudo bash downgrade-edge-admin-bundle.sh

# 检查
sudo rpm -qa | grep edge
# 或者
sudo dpkg -l | grep edge

3. 降级 Edge Admin 数据库

# 将脚本传输到 Edge 管理端数据库所在的机器
# 示例:bash downgrade-admin-db-217-180.sh
bash downgrade-admin-db-VERSION.sh

4. 重新编译

请按以下顺序重新编译应用程序:

  1. 首先重新编译一些不包含通配符域名且流量较少的应用程序
  2. 重新编译几个不包含通配符域名且流量较高的应用程序
  3. 重新编译所有包含通配符的应用程序
  4. 重新编译所有应用程序
  5. 重新编译全局规则
cd /usr/local/oredge-admin/
# 重新编译指定应用程序(将 APP-ID 替换为应用程序 ID)
sudo bash utils/recompile-apps.sh http APP-ID
# 重新编译所有应用程序
sudo bash utils/recompile-apps.sh wildcard-http
sudo bash utils/recompile-apps.sh http
sudo bash utils/recompile-apps.sh http_proxy
sudo bash utils/recompile-apps.sh socks5_proxy
# 重新编译全局配置
sudo bash utils/recompile-apps.sh global
# 重新编译 waf 规则
sudo bash utils/recompile-apps.sh waf
# 重新编译 DNS 应用程序
sudo bash utils/recompile-apps.sh dns
# 重新编译全局动作
sudo bash utils/recompile-apps.sh global-action
# 重新编译网关(可能会触发 OpenResty Edge Node 重载)
sudo 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

5. 降级 Edge Node

首先降级 1~2 个 Edge 节点,确认没有问题后再降级所有 Edge 节点,请在降级过程中注意错误日志。

  • 切断流量。如果您使用的是 Edge 的 DNS,请按照以下步骤操作;否则,请按照您认为合适的方式进行操作。

    • 将您要降级的 Edge 节点下线。

      • 进入 [网关集群]。
      • [编辑] 该节点所在的集群。
      • 修改节点的 [状态] 为 [禁用 DNS,禁用缓存集群]。
      • [保存]
    • 等待节点不再有流量。您可以通过检查访问日志来确认:

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

      此过程需要等待 DNS 过期,可能会耗费一些时间。

  • 降级:

    # 下载降级脚本
    curl -O https://openresty.com/client/oredge/downgrade-edge-node-bundle.sh
    
    # 将脚本放置在旧的 Edge 节点 bundle 包的目录中
    cp downgrade-edge-node-bundle.sh <old-packages-dir>
    
    # 运行降级脚本
    sudo bash downgrade-edge-node-bundle.sh
    

6. 降级 Edge Log Server

# 下载降级脚本
curl -O https://openresty.com/client/oredge/downgrade-edge-log-server-bundle.sh

# 将脚本放置在旧的 Edge 日志服务器 bundle 包的目录中
cp downgrade-edge-log-server-bundle.sh <old-packages-dir>

# 运行降级脚本
sudo bash downgrade-edge-log-server-bundle.sh

7. 降级 Edge Log Server 数据库

# 将脚本传输到日志服务器数据库所在的机器
bash downgrade-log-server-db-VERSION.sh

# 示例:bash downgrade-log-server-db-49-41.sh

如果您有任何问题,请与我们联系。