容器化部署 OpenResty Edge 指南

本指南详细阐述了在容器环境中部署 OpenResty Edge 的完整流程。这种部署方式适用于快速测试,不建议用于生产环境。

注意:对于生产环境部署,我们建议参考《安装 OpenResty Edge》《Kubernetes 部署指南》

部署准备

环境规划

  1. 为各组件分配 IP 地址(以下示例值仅供参考,请根据实际情况调整):
组件名称环境变量名示例 IP
OpenResty Edge Admin 数据库OREDGE_ADMIN_DB_HOST172.17.0.2
OpenResty Edge 日志数据库OREDGE_LOG_SERVER_DB_HOST172.17.0.3
OpenResty Edge 日志服务OREDGE_LOG_SERVER_HOST172.17.0.4
OpenResty Edge Admin 控制台OREDGE_ADMIN_HOST172.17.0.5
OpenResty Edge 节点OREDGE_NODE_HOST172.17.0.6
  1. 指定一个根目录用于存放所有组件的配置和数据,使用环境变量 OREDGE_DATA_ROOT 表示,例如:/data/oredge。

资源获取

  1. 从交付邮件中获取以下信息:

    • 镜像版本 OREDGE_IMAGE_VERSION,例如:24.9.21-1
    • 镜像仓库访问凭证 OREDGE_REGISTRY_USERNAMEOREDGE_REGISTRY_PASSWORD
  2. OpenResty 下载中心获取最新的配置包:openresty-edge-<VERSION>.tar.gz

环境变量配置(可选但推荐)

为简化后续操作,建议配置以下环境变量(请根据实际情况调整值):

export OREDGE_IMAGE_VERSION=24.9.21-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_REGISTRY_USERNAME=oredge-registry-username

镜像下载

执行以下命令以下载所需的 Docker 镜像:

# 登录镜像仓库
docker login --username $OREDGE_REGISTRY_USERNAME registry.openresty.com

# OpenResty Edge Admin Database 镜像
docker pull registry.openresty.com/edge/rocky/8/openresty-edge-admin-db:$OREDGE_IMAGE_VERSION

# OpenResty Edge Log Server Database 镜像
docker pull registry.openresty.com/edge/rocky/8/openresty-edge-log-server-db:$OREDGE_IMAGE_VERSION

# OpenResty Edge Log Server 镜像
docker pull registry.openresty.com/edge/rocky/8/openresty-edge-log-server:$OREDGE_IMAGE_VERSION

# OpenResty Edge Admin 镜像
docker pull registry.openresty.com/edge/rocky/8/openresty-edge-admin:$OREDGE_IMAGE_VERSION

# OpenResty Edge Node 镜像
docker pull registry.openresty.com/edge/rocky/8/openresty-edge-node:$OREDGE_IMAGE_VERSION

组件部署流程

1. 部署 Edge Admin 数据库

这是 OpenResty Edge 的核心数据库,存储配置和管理信息:

# 创建数据目录
mkdir -p $OREDGE_DATA_ROOT/admin-db/

# 解压配置包并获取初始化凭据
tar xf openresty-edge-*.tar.gz && cd openresty-edge-*/
export DEFAULT_EDGE_PWD=$(grep -rs 'DEFAULT_EDGE_PWD=' | head -n 1 | awk -F"'" '{print $2}')
export DEFAULT_EDGE_ENC_PWD=$(grep -rs 'DEFAULT_EDGE_ENC_PWD=' | head -n 1 | awk -F"'" '{print $2}')
cd -

# 启动容器
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                          \
    -e EDGE_ADMIN_INIT_PASSWORD="$DEFAULT_EDGE_PWD"                 \
    -e EDGE_ADMIN_INIT_ENCODED_PASSWORD="$DEFAULT_EDGE_ENC_PWD"     \
    -v $OREDGE_DATA_ROOT/admin-db:/var/postgres12/                  \
    registry.openresty.com/edge/rocky/8/openresty-edge-admin-db:$OREDGE_IMAGE_VERSION

2. 部署 Edge Log Server 数据库

此数据库用于存储日志和监控数据:

# 创建数据目录
mkdir -p $OREDGE_DATA_ROOT/log-server-db

# 启动容器
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/edge/rocky/8/openresty-edge-log-server-db:$OREDGE_IMAGE_VERSION

3. 部署 Edge Log Server 服务

Log Server 负责收集和处理日志:

# 创建配置目录
mkdir -p $OREDGE_DATA_ROOT/log-server/custom

# 复制配置包到 custom 目录
cp openresty-edge-*.tar.gz $OREDGE_DATA_ROOT/log-server/custom/

# 生成配置文件
cat > $OREDGE_DATA_ROOT/log-server/custom/config.ini <<EOF
[postgresql]
host = "$OREDGE_LOG_SERVER_DB_HOST"
EOF

# 启动容器
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/edge/rocky/8/openresty-edge-log-server:$OREDGE_IMAGE_VERSION

4. 部署 Edge Admin 控制台

Admin 控制台提供了 Web 界面用于管理 OpenResty Edge:

# 创建配置目录
mkdir -p $OREDGE_DATA_ROOT/admin/custom

# 复制配置包到 custom 目录
cp openresty-edge-*.tar.gz $OREDGE_DATA_ROOT/admin/custom/

# 生成配置文件
cat > $OREDGE_DATA_ROOT/admin/custom/config.ini <<EOF
[postgresql]
host = "$OREDGE_ADMIN_DB_HOST"

[log_server]
host = "$OREDGE_LOG_SERVER_HOST"
EOF

# 放置 SSL 证书(可选)
# cp ssl.key ssl.crt $OREDGE_DATA_ROOT/admin/custom/

# 启动容器,如遇端口冲突,请调整映射端口
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/edge/rocky/8/openresty-edge-admin:$OREDGE_IMAGE_VERSION

5. 部署 Edge Node 节点

Edge Node 是实际处理流量的组件:

mkdir -p $OREDGE_DATA_ROOT/node/{custom,data}

# 复制配置包到 custom 目录
cp openresty-edge-*.tar.gz $OREDGE_DATA_ROOT/node/custom/

# 生成配置文件
cat > $OREDGE_DATA_ROOT/node/custom/config.ini <<EOF
[admin]
host = "$OREDGE_ADMIN_HOST"
port = 12345

[log_server]
endpoints = "https://$OREDGE_LOG_SERVER_HOST:12346"
EOF

# 启动容器,如遇端口冲突,请调整映射端口
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/edge/rocky/8/openresty-edge-node:$OREDGE_IMAGE_VERSION

获取 Edge Admin 控制台访问凭证

执行以下命令获取初始登录信息:

cd openresty-edge-*/
bash openresty-edge-installer.sh -a get -c default-info
cd -

使用指引

  1. 使用浏览器访问 Edge Admin 控制台:https://<OREDGE_ADMIN_HOST>
  2. 登录后,导航至【网关集群】页面,处理新部署节点的加入请求
  3. 更多资源:

如在部署或使用过程中遇到任何问题,请随时与我们联系。