容器化 OpenResty Edge 升級指南

本指南詳細說明如何升級在容器環境中部署的 OpenResty Edge 各元件。升級過程需要按照特定順序進行,以確保系統穩定性和資料完整性。

請注意:對於生產環境,我們不建議使用容器進行部署,容器部署的環境,升級時業務會中斷。

升級前準備

1. 環境變數配置

設定以下環境變數(請根據實際情況調整):

export OREDGE_IMAGE_VERSION=25.9.17-1
export OREDGE_ADMIN_DB_HOST=172.17.0.2
export OREDGE_LOG_SERVER_DB_HOST=172.17.0.3
export OREDGE_LOG_SERVER_HOST=172.17.0.4
export OREDGE_ADMIN_HOST=172.17.0.5
export OREDGE_NODE_HOST=172.17.0.6
export OREDGE_DATA_ROOT=/data/oredge
export OREDGE_DATA_BACKUP_ROOT=/data/oredge-backup
export OREDGE_REGISTRY_USERNAME=oredge-registry-username

2. 拉取新版本映象

提前拉取所有映象,可以加快後續升級速度,減少服務停機時間:

# 登入映象倉庫
docker login --username $OREDGE_REGISTRY_USERNAME registry.openresty.com.cn

# 拉取所有元件映象
docker pull registry.openresty.com.cn/edge/rocky/8/openresty-edge-admin-db:$OREDGE_IMAGE_VERSION
docker pull registry.openresty.com.cn/edge/rocky/8/openresty-edge-log-server-db:$OREDGE_IMAGE_VERSION
docker pull registry.openresty.com.cn/edge/rocky/8/openresty-edge-log-server:$OREDGE_IMAGE_VERSION
docker pull registry.openresty.com.cn/edge/rocky/8/openresty-edge-admin:$OREDGE_IMAGE_VERSION
docker pull registry.openresty.com.cn/edge/rocky/8/openresty-edge-node:$OREDGE_IMAGE_VERSION

3. 備份資料

重要提示: 升級前務必備份所有資料,以防萬一需要回滾。 備份資料前,請檢查您的硬碟空間是否足夠。

備份資料庫

# 備份 Admin 資料庫
docker exec openresty-edge-admin-database \
    /usr/local/openresty-postgresql12/bin/pg_dump or_edge_admin -C -Upostgres \
    | gzip > or_edge_admin-$(date +%F).sql.gz

# 備份 Log Server 資料庫(可選)
docker exec openresty-edge-log-server-database \
    /usr/local/openresty-postgresql12/bin/pg_dump or_edge_log_server -C -Upostgres \
    | gzip > or_edge_log_server-$(date +%F).sql.gz

備份配置檔案

# 備份配置目錄
cp -r $OREDGE_DATA_ROOT $OREDGE_DATA_BACKUP_ROOT

升級順序說明

為確保升級過程順利,請嚴格按照以下順序進行:

  1. Log Server DB → 2. Log Server → 3. Node → 4. Admin DB → 5. Admin

這個順序可以最大程度減少對業務的影響,並確保元件間的相容性。

元件升級步驟

1. 升級 Log Server Database

# 停止並刪除舊容器
docker stop openresty-edge-log-server-database
docker rm openresty-edge-log-server-database

# 啟動新版本容器
docker run -d --name openresty-edge-log-server-database                 \
    --ip $OREDGE_LOG_SERVER_DB_HOST                                     \
    -e 'POSTGRES_DB=or_edge_log_server'                                 \
    -e 'POSTGRES_USER=or_edge_log_server'                               \
    -e 'PGUSER=or_edge_log_server'                                      \
    -e 'POSTGRES_HOST_AUTH_METHOD=trust'                                \
    -e 'POSTGRES_CONF_ENABLE_TIMESCALE=true'                            \
    -v $OREDGE_DATA_ROOT/log-server-db:/var/postgres12/                 \
    registry.openresty.com.cn/edge/rocky/8/openresty-edge-log-server-db:$OREDGE_IMAGE_VERSION

# 驗證容器狀態
docker logs openresty-edge-log-server-database

2. 升級 Log Server

# 停止並刪除舊容器
docker stop openresty-edge-log-server
docker rm openresty-edge-log-server

# 啟動新版本容器
docker run -d --name openresty-edge-log-server                                      \
    --ip $OREDGE_LOG_SERVER_HOST                                                    \
    -v $OREDGE_DATA_ROOT/log-server/custom/:/usr/local/oredge-log-server/custom/    \
    registry.openresty.com.cn/edge/rocky/8/openresty-edge-log-server:$OREDGE_IMAGE_VERSION

# 驗證容器狀態
docker logs openresty-edge-log-server

3. 升級 Edge Node

# 停止並刪除舊容器
docker stop openresty-edge-node
docker rm openresty-edge-node

# 啟動新版本容器(注意:如遇埠衝突,請調整對映埠)
docker run -d -p 80:80 -p 443:443 --name openresty-edge-node        \
    --ip $OREDGE_NODE_HOST                                          \
    -v $OREDGE_DATA_ROOT/node/custom:/usr/local/oredge-node/custom  \
    -v $OREDGE_DATA_ROOT/node/data:/usr/local/oredge-node/data      \
    registry.openresty.com.cn/edge/rocky/8/openresty-edge-node:$OREDGE_IMAGE_VERSION

# 驗證容器狀態
docker logs openresty-edge-node

4. 升級 Admin Database

# 停止並刪除舊容器
docker stop openresty-edge-admin-database
docker rm openresty-edge-admin-database

# 啟動新版本容器
docker run -d --name openresty-edge-admin-database                  \
    --ip $OREDGE_ADMIN_DB_HOST                                      \
    -e POSTGRES_DB=or_edge_admin                                    \
    -e POSTGRES_USER=or_edge_admin                                  \
    -e PGUSER=or_edge_admin                                         \
    -e POSTGRES_HOST_AUTH_METHOD=trust                              \
    -e POSTGRES_CONF_ENABLE_TIMESCALE=true                          \
    -v $OREDGE_DATA_ROOT/admin-db:/var/postgres12/                  \
    registry.openresty.com.cn/edge/rocky/8/openresty-edge-admin-db:$OREDGE_IMAGE_VERSION

# 驗證容器狀態
docker logs openresty-edge-admin-database

5. 升級 Admin 控制檯

# 停止並刪除舊容器
docker stop openresty-edge-admin
docker rm openresty-edge-admin

# 啟動新版本容器(注意:如遇埠衝突,請調整對映埠)
docker run -d -p 443:443 --name openresty-edge-admin                    \
    --ip $OREDGE_ADMIN_HOST                                             \
    -v $OREDGE_DATA_ROOT/admin/custom:/usr/local/oredge-admin/custom/   \
    registry.openresty.com.cn/edge/rocky/8/openresty-edge-admin:$OREDGE_IMAGE_VERSION

# 驗證容器狀態
docker logs openresty-edge-admin

6. 重新編譯配置

您可以參考此文件,建立升級任務,並跳過前面的升級步驟,僅進行重編譯相關的步驟:https://doc.openresty.com.cn/cn/edge/edge-admin/upgrade/

升級後驗證

1. 檢查所有容器狀態

docker ps -a | grep openresty-edge

確保所有容器都處於 Up 狀態。

2. 檢查服務狀態

# 檢查 Admin 控制檯
curl -k https://$OREDGE_ADMIN_HOST/

# 檢查 Node
curl http://$OREDGE_NODE_HOST/

3. 登入 Admin 控制檯驗證

  1. 使用瀏覽器訪問:https://<OREDGE_ADMIN_HOST>
  2. 登入並檢查各項功能是否正常
  3. 檢視【閘道器叢集】頁面,確認閘道器伺服器狀態正常
  4. 檢查日誌和監控資料是否正常收集

4. 檢視版本資訊

在 Admin 控制檯的【關於】頁面確認版本已更新為目標版本。

如在升級過程中遇到任何問題,請隨時與我們聯絡。