脚本部署
使用脚本部署集群时,系统将对配置文件、运行环境、硬件配置、软件依赖和 SSH 免密登录进行检查。
- 如果硬件配置未满足要求,系统将继续安装,并提示硬件规格不满足要求。
- 如果软件依赖未满足要求,系统会中止安装并提供相应的错误信息。
在部署过程中,系统会自动生成相关日志。如果部署时出现错误,用户可以通过查看终端输出或 KaiwuDB 安装目录中 log 目录里的日志文件,获取详细的错误信息。
前提条件
系统要求:
- 所有待部署节点的硬件、操作系统和软件依赖满足安装部署要求。
- 网络设置:
- 各节点间网络联通。
- 节点所在机器位于同一机房内。
- 物理机器间网络延迟不高于 50 ms。
- 各节点时钟相差不大于 500 ms。
- 各节点已预留 KaiwuDB 服务所需端口。
- 已获取对应系统版本的 KaiwuDB 裸机或容器安装包。
用户权限要求:
- 已配置当前节点与集群内其他节点的 SSH 免密登录。
- 安装用户为
root用户或者拥有sudo权限的普通用户。root用户和配置sudo免密的普通用户在执行部署脚本时无需输入密码。- 未配置
sudo免密的普通用户在执行部署脚本时,需要输入密码进行提权。
- 使用容器安装包部署时,如果安装用户为非
root用户,需要通过sudo usermod -aG docker $USER命令将用户添加到docker组。
步骤
登录待部署节点,编辑安装包目录下的
deploy.cfg配置文件,设置安全模式、管理用户、服务端口等信息,并添加其他节点信息。配置文件示例:
[global] # Whether to turn on secure mode secure_mode=tls # Management KaiwuDB user management_user=kaiwudb # KaiwuDB cluster http port rest_port=8080 # KaiwuDB service port kaiwudb_port=26257 # KaiwuDB brpc port brpc_port=27257 # KaiwuDB data directory data_root=/var/lib/kaiwudb # CPU usage[0-1] cpu=1 [local] # local node configuration node_addr=192.168.122.221 [cluster] # remote node addr,split by ',' node_addr=192.168.122.222,192.168.122.223 # ssh info ssh_port=22 ssh_user=admin # [additional] # IPs=127.0.0.3,127.0.0.4参数说明:
配置层级 参数 说明 global
(全局配置)secure_mode是否开启安全模式,支持以下三种取值:
-insecure:使用非安全模式。
-tls:(默认选项)开启 TLS 安全模式。
-tlcp:开启 TLCP 安全模式。
开启安全模式后,KaiwuDB 生成相应的 TLS 或 TLCP 证书,作为客户端或应用程序连接数据库的凭证。生成的客户端相关证书存放在/etc/kaiwudb/certs目录。management_userKaiwuDB 的管理用户,默认为 kaiwudb。安装部署后,KaiwuDB 创建相应的管理用户以及和管理用户同名的用户组。rest_portKaiwuDB Web 服务端口,默认为 8080。kaiwudb_portKaiwuDB 服务端口,默认为 26257。brpc_portKaiwuDB 时序引擎间的 brpc 通信端口,用于节点间通信,默认为 27257。data_root数据目录,默认为 /var/lib/kaiwudb。cpu可选参数,用于指定 KaiwuDB 服务占用当前节点服务器 CPU 资源的比例,默认无限制。取值范围为 [0,1],最大精度为小数点后两位。KaiwuDB 支持调整 CPU 资源占用率。更多信息,参见配置裸机部署集群或配置容器部署集群 。
注意:如果部署环境为 Ubuntu 18.04 版本,在裸机部署集群完成后,需要将kaiwudb.service文件中的CPUQuota修改为整型值,例如,将180.0%修改为180%,以确保设置生效。具体操作步骤,参见配置 CPU 资源占用率。encrypto_store可选参数,用于在部署时启用关系数据库存储加密功能。默认情况下,该参数不会显示,需要用户手动添加到配置文件中并设置为 true。
启用后,系统将在/etc/kaiwudb/certs目录下自动生成存储密钥,使用 SM4 加密算法对数据进行加密。KaiwuDB 支持通过--store-encryption启动参数,在部署后进行目录加密、解密、存储密钥更新和算法更换等操作,更多信息,参见存储加密。local
(本地节点配置)local_node_ip本地节点对外提供服务的 IP 地址,监听地址为 0.0.0.0,端口为 KaiwuDB 服务端口。cluster
(集群其他节点配置)cluster_node_ips远程节点对外提供服务的 IP 地址。各节点的 IP 地址使用逗号( ,)分割,远程节点数应不少于 2 个。ssh_port远程节点的 SSH 服务端口。各节点的 SSH 服务端口必须相同。 ssh_user远程节点的 SSH 登录用户。各节点的 SSH 登录用户必须相同。 additional
(主备节点配置)IPs可选参数,用于在安全模式(TLS/TLCP)下部署主备集群时,将主备集群的所有节点 IP 地址添加到证书中,确保主备集群可以使用同一套证书。主库集群部署完成后,安装部署备库集群时可以通过 --use-certs选项复用主库集群生成的证书。更多信息,参见集群复制。执行安装命令。
多副本集群
./deploy.sh install --multi-replica单副本集群
./deploy.sh install --single-replica
检查配置无误后输入
Y或y,如需返回修改deploy.cfg配置文件,输入N或n。================= KaiwuDB Basic Info ================= Deploy Mode: bare-metal Management User: kaiwudb Start Mode: multi-replication RESTful Port: 8080 KaiwuDB Port: 26257 BRPC Port: 27257 Data Root: /var/lib/kaiwudb Secure Mode: tls CPU Usage Limit: 1 Local Node Address: 192.168.122.221 ================= KaiwuDB Cluster Info ================= Cluster Node Address: 192.168.122.222 192.168.122.223 SSH User: admin SSH Port: 22 ========================================================= Please confirm the installation information above(Y/n):执行成功后,控制台输出以下信息:
[INSTALL COMPLETED]:KaiwuDB has been installed successfully! ...初始化并启动集群。
提示
多副本集群初始化和启动大约需要 10 秒左右时间。在此期间,如果有节点死亡,可能会导致集群无法触发高可用机制。
./deploy.sh cluster -i或者
./deploy.sh cluster --init使用以下任一方式查看集群节点状态:
在当前目录使用部署脚本
./deploy.sh cluster -s # 或者 ./deploy.sh cluster --status在任一目录下使用便捷脚本(推荐)
kw-status
返回字段说明:
字段 描述 id节点 ID。 address节点地址。 sql_addressSQL 地址。 build节点运行的 KaiwuDB 版本 started_at节点启动的日期和时间。 updated_at节点状态更新的日期和时间。节点正常时,每 10 秒左右记录一次新的状态;节点异常时,更新信息可能会有所滞后。 locality节点 ID。 start_mode节点的启动模式。 is_availableis_live如果均为 true,表示节点处于正常状态。
如果均为false,表示节点处于异常状态。(可选)配置 KaiwuDB 开机自启动。
配置 KaiwuDB 开机自启动后,如果系统重启,则自动启动 KaiwuDB。
说明
系统重启后,如果当前节点与其它节点时钟相差大于 500 ms,可能会导致 KaiwuDB 自启动失败。用户需要先进行时钟同步,再手动启动 KaiwuDB。
systemctl enable kaiwudb