本文介绍通过嬴图Deployer(ultipa-deployer
)部署嬴图高可用集群(ultipa-server
)的基本步骤。
硬件配置
- 最小三台服务节点
- 节点之间网络互通,建议最小集群节点规划在同一网段内
- 所有服务节点可被客户端 (应用端的后端,或高可视化图数据库管理平台嬴图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所描述的服务器证书上传到目标服务器的LICENSE_ON_REMOTE_SERVER路径,旧的证书会被重命名备份
./ultipa-deploy -c config.yaml -o uplic
.2 将LICENSE_ON_REMOTE_SERVER中的服务器证书重新启动
./ultipa-deploy -c config.yaml -o relic
- 通过嬴图Manager登录证书被替换的集群,点击菜单栏图集,滑动鼠标至最下方,查看数据库信息,列表中显示证书的到期日期
启动参数说明
选项 |
描述 |
---|---|
-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 | 上传证书到目标服务器,旧的证书会被重命名备份,参考配置文件中的LOCAL_LICENSE、LICENSE_ON_REMOTE_SERVER这两个变量 |
-o relic | 将LICENSE_ON_REMOTE_SERVER中的服务器证书重新启动 注意:此操作不是重新上传证书 |
配置文件示例及参数说明
# 本地存放证书的路径,uplic功能会使用到此路径指定的文件
LOCAL_LICENSE:
# 目标服务器上证书的存放路径,uplic功能会将证书从本地上传到此处,deploy功能会复制此证书到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
# 目前只支持v4.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 | 备份节点,只同步数据,不参与选举 |