容器化 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 控制台的【关于】页面确认版本已更新为目标版本。

如在升级过程中遇到任何问题,请随时与我们联系。