容器化部署与管理 #
本文介绍如何使用 Docker 部署 SphereEx-Console 和 SphereEx-DBPlusEngine-Proxy。示例采用单机 Docker 部署方式,适合功能验证和小规模环境;生产环境应结合实际情况配置高可用、资源限制、数据持久化、日志采集和监控告警。
部署架构 #
| 服务 | 用途 | 容器端口 | 示例宿主机端口 |
|---|---|---|---|
| SphereEx-Console | 集群和资源管理 | 8088 | 18088 |
| SphereEx-DBPlusEngine-Proxy | 数据库代理服务 | 3307 | 3307 |
| MySQL | Console 元数据库,也可作为 Proxy 的存储节点 | 3306 | 由实际环境决定 |
| ZooKeeper | Proxy 集群模式的治理中心 | 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.yml 和 application-prod.yml 复制到 /opt/sphereex/console/conf。application.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;