Logo
容器化部署与管理

容器化部署与管理 #

本文介绍如何使用 Docker 部署 SphereEx-Console 和 SphereEx-DBPlusEngine-Proxy。示例采用单机 Docker 部署方式,适合功能验证和小规模环境;生产环境应结合实际情况配置高可用、资源限制、数据持久化、日志采集和监控告警。

部署架构 #

服务用途容器端口示例宿主机端口
SphereEx-Console集群和资源管理808818088
SphereEx-DBPlusEngine-Proxy数据库代理服务33073307
MySQLConsole 元数据库,也可作为 Proxy 的存储节点3306由实际环境决定
ZooKeeperProxy 集群模式的治理中心2181由实际环境决定

Console 元数据库、ZooKeeper 可以部署在容器中,也可以使用已有的外部服务。

前提条件 #

  • 已安装并启动 Docker,建议使用当前仍受支持的稳定版本。
  • 已获取与交付版本一致的 Console、DBPlusEngine-Proxy 镜像和初始化脚本。
  • 已准备 MySQL 5.7 或以上版本,作为 Console 元数据库。
  • 使用 Proxy 集群模式时,已准备 ZooKeeper 3.6 或以上版本。
  • 已放通宿主机的 Console 和 Proxy 对外服务端口。
  • 已从 SphereEx 获取有效的 License。

创建部署目录和 Docker 网络:

mkdir -p /opt/sphereex/console/conf
mkdir -p /opt/sphereex/proxy/conf
docker network create sphereex-net

如果网络已经存在,docker network create 返回已存在的提示,可忽略该提示。

部署 SphereEx-Console #

1. 导入镜像 #

从交付介质导入 Console 镜像。以下以 1.7.2 版本为例,实际部署时请替换为交付版本:

docker load -i sphereex-console-image-1.7.2.tar
docker images | grep sphereex-console

记录 docker load 输出或 docker images 中显示的镜像仓库名和标签。下文示例使用:

sphere-ex/sphereex-console:1.7.2

2. 初始化元数据库 #

登录作为 Console 元数据库的 MySQL,创建数据库和专用用户。请替换示例中的主机范围和密码:

CREATE DATABASE console;
create user 'spex'@'[SpherexEx-Console IP]' identified by 'XXXXXX';
grant all on console.* to spex@'[SpherexEx-Console IP]';
flush privileges;

console 数据库中执行交付包内与当前 Console 版本一致的初始化脚本:

USE console;
SOURCE /xx/sphereex-console-xxx/db/schema.sql;

3. 准备配置文件和 License #

将交付包中的 application.ymlapplication-prod.yml 复制到 /opt/sphereex/console/confapplication.yml 保持交付时的默认内容,编辑 application-prod.yml 中的元数据库连接信息,其他配置建议保留同版本模板中的默认值。

server:
  port: 8088

spring:
  datasource:
    url: jdbc:mysql://mysql8:3306/console?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8
    username: spex
    password: <password>
    driverClassName: com.mysql.cj.jdbc.Driver

jwt:
  header: token
  secret: your_secret
  expiration: 30000000000

sphereex:
  distributed:
    work-id: 1
  proxy:
    datasource:
      hikari:
        maximum-pool-size: 4
        connection-timeout: 3000
        minimum-idle: 2
        idle-timeout: 500000
        max-lifetime: 540000

元数据库地址按部署方式填写:

  • MySQL 容器与 Console 位于同一个 Docker 网络时,使用 MySQL 容器名或网络别名,例如 mysql8:3306。如果 MySQL 容器已经运行,可执行 docker network connect sphereex-net mysql8 将其加入网络。
  • MySQL 位于其他服务器时,使用容器网络可访问的服务器 IP 或域名。

将 License 文件复制到配置目录,并保持文件名为 sphere-ex.license

/opt/sphereex/console/conf/sphere-ex.license

4. 启动 Console #

以下示例适用于 Console 和 MySQL 容器位于 sphereex-net 网络的情况:

docker run -d \
  --name sphereex-console \
  --network sphereex-net \
  -p 18088:8088 \
  -e TZ=Asia/Shanghai \
  -v /opt/sphereex/console/conf:/opt/sphereex-console/conf \
  sphere-ex/sphereex-console:1.7.2

如果使用外部 MySQL,可以不设置 --network

docker run -d \
  --name sphereex-console \
  -p 18088:8088 \
  -e TZ=Asia/Shanghai \
  -v /opt/sphereex/console/conf:/opt/sphereex-console/conf \
  sphere-ex/sphereex-console:1.7.2

5. 验证 Console #

查看容器状态和启动日志:

docker ps --filter name=sphereex-console
docker logs -f sphereex-console

浏览器访问:

http://<Console 宿主机 IP>:18088/

初始用户为 admin,初始密码为 admin。首次登录后请立即修改密码。

登录页面

部署 SphereEx-DBPlusEngine-Proxy #

1. 导入镜像 #

生产环境应使用 SphereEx 交付的 DBPlusEngine-Proxy 镜像。导入后通过 docker images 确认实际的镜像仓库名和标签,下文以 sphere-ex/sphereex-dbplusengine-proxy:1.7.2 为例:

docker load -i sphereex-dbplusengine-proxy-image-1.7.2.tar
docker images | grep sphereex-dbplusengine-proxy

2. 配置 proxy #

  • conf/global.yaml:配置运行模式、治理中心、登录用户和 Proxy 属性。

下面给出集群模式下 global.yaml 的最小配置示例:

mode:
  type: Cluster
  repository:
    type: ZooKeeper
    props:
      namespace: governance_ds
      server-lists: "zookeeper:2181"
      retryIntervalMilliseconds: 500
      timeToLiveSeconds: 60
      maxRetries: 3
      operationTimeoutMilliseconds: 5000

authority:
  users:
    - user: root@%
      password: root
      admin: true

如果 ZooKeeper 运行在同一个 Docker 网络中,server-lists 使用其容器名或网络别名;如果位于外部服务器,则使用容器可访问的 IP 或域名。

将 License 文件复制到配置目录,并保持文件名为 sphere-ex.license

/opt/sphereex/proxy/conf/sphere-ex.license

3. 启动 Proxy #

以下示例将宿主机 3307 端口映射到 Proxy 的 3307 端口:

docker run -d \
  --name sphereex-proxy \
  --network sphereex-net \
  -p 3307:3307 \
  -e PORT=3307 \
  -e TZ=Asia/Shanghai \
  -v /opt/sphereex/proxy/conf:/opt/sphereex-dbplusengine-proxy/conf \
  sphere-ex/sphereex-dbplusengine-proxy:1.7.2

Proxy 默认服务端口为 3307。如需修改,例如容器内使用 3308、宿主机使用 13308,需要同时设置环境变量和端口映射:

-e PORT=3308 -p 13308:3308

4. 验证 Proxy #

查看容器状态和启动日志:

docker ps --filter name=sphereex-proxy
docker logs -f sphereex-proxy

使用与前端数据库协议匹配的客户端连接 Proxy。以下以 MySQL 协议为例:

mysql -h 127.0.0.1 -P 3307 -u root -p

连接成功后,可执行以下 DistSQL 检查计算节点状态:

SHOW COMPUTE NODES;