透過 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

如果您有任何問題,請與我們聯絡。