本文介绍了通过 Ultipa Deployer (
ultipa-deployer
) 部署 Ultipa 高可用集群 (ultipa-server
) 的基本步骤。
硬件配置
-
最小三台服务节点
-
节点之间网络互通,建议最小集群节点规划在同一网段内
-
所有服务节点可被客户端 (应用端的后端,或图形化界面 Ultipa Manager) 访问
-
CPU、内存依据项目需求决定
软件环境
-
当前服务器和目标服务器之间有 ssh 权限
-
目标服务器 ssh 远程连接用户时,必须对配置文件中 WORK_PATH 目录具有写权限
-
目标服务器已安装 docker,并且版本为 Docker 19+ 或相同等级企业版
-
当前服务器中存在 ultipaServer 镜像包
-
当前服务器中存在 ultipaServer 的证书
部署流程
- 生成配置文件模板
./ultipa-deploy -g
- 按照文件内的参数说明修改配置文件
mv example_config.yaml config.yaml
vim config.yaml
- 上传 LOCAL_IMAGE_TAR 描述的离线 docker 镜像到所有目标服务器,并执行 docker load
./ultipa-deploy -c config.yaml -o loadtar
- 预先检查环境,是否满足部署条件
./ultipa-deploy -c config.yaml -o check
- 启动部署
./ultipa-deploy -c config.yaml -o deploy
- 查看部署情况
./ultipa-deploy -c config.yaml -o list
- (如需) 停止此配置文件描述的集群
./ultipa-deploy -c config.yaml -o stop
- (如需) 启动此配置文件描述的集群
./ultipa-deploy -c config.yaml -o start
证书更新
- 将 LOCAL_LICENSE 所描述的 server license 上传到目标服务器的 LICENSE_ON_REMOTE_SERVER 路径,旧的 license 会被重命名备份
./ultipa-deploy -c config.yaml -o uplic
.2 将 LICENSE_ON_REMOTE_SERVER 中的 server license 重新启动
./ultipa-deploy -c config.yaml -o relic
- 通过 Ultipa Manager 登录证书被替换的集群,点击菜单栏图集,滑动鼠标至最下方,查看数据库信息,列表中显示证书的到期日期

启动参数说明
Option |
Explanation |
---|---|
-h | 显示帮助 |
-c | 指定配置文件 |
-g | 生成配置文件模板 |
-l | 目标服务器无法 ssh 远程连接时,使用此选项在本地生成 shell 部署脚本,然后将部署脚本上传到服务器,执行 bash deploy.sh 手动部署 注意!!! 此方式会跳过所有的检查项目,如果已经存在 ultipa-server 请勿使用此方式部署 |
-f | 跳过检查项目,强制执行部署 此选项有可能对已经存在的集群造成不可预知的后果,建议仅在开发环境或测试环境使用此选项 |
-o loadtar | 上传 LOCAL_IMAGE_TAR 描述的离线 docker 镜像到所有目标服务器,并执行 docker load |
-o deploy | 全新部署 ultipa-server 集群 |
-o check | 预先检查目标服务器环境,是否满足配置文件描述的需求,如端口冲突,docker 容器重名等 |
-o list | 列表显示此文件描述集群,其他的容器会被过滤掉不显示 |
-o stop | 停止此配置文件描述的集群 |
-o start | 启动此配置文件描述的集群 |
-o update | 修改配置文件 IMAGE_TAG 后,执行 update,会使用新的镜像重启集群,如果目标服务器上没有描述的镜像且无法从镜像服务器下载,需要提前使用 loadtar 将离线镜像上传 |
-o uplic | 上传 license 到目标服务器,旧的 license 会被重命名备份,参考配置文件中的 LOCAL_LICENSE,LICENSE_ON_REMOTE_SERVER 这两个变量 |
-o relic | 将 LICENSE_ON_REMOTE_SERVER 中的 server license 重新启动 注意:此操作不是重新上传 license |
配置文件示例及参数说明
# 本地存放 license 的路径,uplic 功能会使用到此路径指定的文件
LOCAL_LICENSE:
# 目标服务器上 license 的存放路径,uplic 功能会将 license 从本地上传到此处,deploy 功能会复制此 license 到 docker
LICENSE_ON_REMOTE_SERVER: "/home/ultipa/license/ultipa.lic"
# 是否将此 yaml 配置文件上传到服务器上的 WORK_PATH下 ,旧版本的 yaml 配置文件(如有)将被重新命名
SAVE_THIS_CONFIG_TO_REMOTE_SERVER: true
# 需要部署的 docker 镜像的完整描述
IMAGE_TAG: localhost:beta.4.0.118-b4.0.0
# 本地存放的 docker 镜像离线包,目标服务器无法连接 docker 镜像仓库时,可以用 loadtar 功能,将此镜像上传到服务器,并且执行 docker load
LOCAL_IMAGE_TAR: beta.4.0.118-b4.0.0.tar.gz
#LOCAL_IMAGE_TAR: /data1/abc/a.tar.gz
# 目前只支持 4.x 的 ultipa-server
ULTIPA_SERVER_VERSION: 4
# G_ 开头的变量表示是全局变量,如果具体服务器的变量为空,会使用对应的 G_ 全局变量填充
# ultipa server public 端口
G_PUBLIC_PORT: 61510
# ultipa server htap 端口
G_PRIVATE_PORT: 61511
# docker 的容器名
G_SERVER_NAME: ultipa-61510
# ultipa server 映射目录
G_WORK_PATH: "/data1/docker_mounts/ultipa-61510"
# 目标服务器的 ssh 远程连接用户,此用户必须对 WORK_PATH 具有写权限
G_SSH_USER: root
# ssh 远程连接端口
G_SSH_PORT: 22
# ssh 远程连接,密码认证方式
G_SSH_PASSWORD:
# ssh 远程连接密钥认证方式
G_SSH_PRIVATE_KEY_PATH: id_rsa
# 此项不用填写
G_CONFLINE:
# FULL_HOST_LIST 是一个数组,示例只给出了一个目标服务器的描述,可以将此描述复制、修改,配置多个目标服务器
FULL_HOST_LIST:
- PRIVATE_IP: 192.168.56.101 # 目标服务器的PRIVATE_IP
SERVER_ID: # SERVER_ID 为空时,会被按列表顺序补全
SERVER_ROLE: 1 # 此选项为必填,角色定义见附表
SSH_USER: # 为空时使用 G_SSH_USER
SSH_PORT: # 为空时使用 G_SSH_PORT
SSH_IP: # 为空时使用 PUBLIC_IP
SSH_PASSWORD: # 为空时使用 G_SSH_PASSWORD
SSH_PRIVATE_KEY_PATH: # 为空时使用G_SSH_PRIVATE_KEY_PATH
HOST_LISTEN_IP: # ultipa server 对外提供服务的IP, 为空时使用默认值 0.0.0.0
PUBLIC_IP: # 为空时使用 PRIVATE_IP
PUBLIC_PORT: # 为空时使用 G_PUBLIC_PORT
PRIVATE_PORT: # 为空时使用 G_PRIVATE_PORT
SERVER_NAME: # 为空时使用 G_SERVER_NAME
WORK_PATH: # 为空时使用 G_WORK_PATH
CONFLINE: # 此项不用填写
角色代码 | 定义 |
---|---|
0 | 节点作为 follower 时不能提供读,用于一致性读的场景 |
1 | 点作为 follower 时可提供读,用于负载均衡读的场景 |
2 | 算法节点,可以做算法运算,不可参与负载均衡读,算法节点不能被选举为 leader,一个集群中算法节点的数量不能超过 50% |
3 | 算法节点,可以参与负载均衡读 |
4 | 备份节点,只同步数据,不参与选举 |