容器化部署 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. 更多資源:

如在部署或使用過程中遇到任何問題,請隨時與我們聯絡。