文档下载建议反馈入口

  • 前提条件
  • 部署步骤

脚本部署

使用脚本部署集群时,系统将对配置文件、运行环境、硬件配置、软件依赖和 SSH 免密登录进行检查。

  • 如果硬件配置未满足要求,系统将继续安装,并提示硬件规格不满足要求。
  • 如果软件依赖未满足要求,系统会中止安装并提供相应的错误信息。

在部署过程中,系统会自动生成相关日志。如果部署时出现错误,用户可以通过查看终端输出或 KaiwuDB 安装目录中 log 目录里的日志文件,获取详细的错误信息。

前提条件

系统要求:

  • 所有待部署节点的硬件、操作系统和软件依赖满足安装部署要求。
  • 网络设置:
    • 各节点间网络联通。
    • 节点所在机器位于同一机房内。
    • 物理机器间网络延迟不高于 50 ms。
    • 各节点时钟相差不大于 500 ms。
    • 各节点已预留 KaiwuDB 服务所需端口。

用户权限要求:

  • 已配置当前节点与集群内其他节点的 SSH 免密登录。
  • 安装用户为 root 用户或者拥有 sudo 权限的普通用户。
    • root 用户和配置 sudo 免密的普通用户在执行部署脚本时无需输入密码。
    • 未配置 sudo 免密的普通用户在执行部署脚本时,需要输入密码进行提权。
  • 使用容器安装包部署时,如果安装用户为非 root 用户,需要通过 sudo usermod -aG docker $USER 命令将用户添加到 docker 组。

部署步骤

  1. 登录待部署节点,编辑安装包目录下的 deploy.cfg 配置文件,设置安全模式、管理用户、服务端口等信息,并添加其他节点信息。

    配置文件示例:

    [global]
    secure_mode=tls
    management_user=kaiwudb
    rest_port=8080
    kaiwudb_port=26257
    data_root=/var/lib/kaiwudb
    cpu=1
    encrypto_store=true
    
    [local]
    node_addr= local_node_ip
    
    [cluster]
    node_addr= cluster_node_ips
    ssh_port=22
    ssh_user=admin
    

    配置参数说明:

    • global:全局配置
      • secure_mode:是否开启安全模式,支持以下三种取值:
        • insecure:使用非安全模式。
        • tls:(默认选项)开启 TLS 安全模式。开启安全模式后,KaiwuDB 生成 TLS 证书,作为客户端或应用程序连接数据库的凭证。生成的客户端相关证书存放在 /etc/kaiwudb/certs 目录。
        • tlcp:开启 TLCP 安全模式。开启安全模式后,KaiwuDB 生成 TLCP 证书,作为客户端或应用程序连接数据库的凭证。生成的客户端相关证书存放在 /etc/kaiwudb/certs 目录。
      • management_user:KaiwuDB 的管理用户,默认为 kaiwudb。安装部署后,KaiwuDB 创建相应的管理用户以及和管理用户同名的用户组。
      • rest_port:KaiwuDB Web 服务端口,默认为 8080
      • kaiwudb_port:KaiwuDB 服务端口,默认为 26257
      • 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 登录用户必须相同。
  2. deploy.sh 脚本增加运行权限。

    chmod +x ./deploy.sh
    
  3. 执行安装命令。

    • 多副本集群

      ./deploy.sh install --multi-replica
      
    • 单副本集群

      ./deploy.sh install --single-replica
      

      执行成功后,控制台输出以下信息:

      INSTALL COMPLETED: KaiwuDB has been installed successfuly! ...
      
  4. 重新加载 systemd 守护进程的配置文件。

    systemctl daemon-reload
    
  5. 初始化并启动集群。

    提示

    多副本集群初始化和启动大约需要 10 秒左右时间。在此期间,如果有节点死亡,可能会导致集群无法触发高可用机制。

    ./deploy.sh cluster -i
    

    或者

    ./deploy.sh cluster --init
    
  6. 查看集群节点状态。

    ./deploy.sh cluster -s
    

    或者

    ./deploy.sh cluster --status
    

    返回字段说明:

    字段描述
    id节点 ID。
    address节点地址。
    sql_addressSQL 地址。
    build节点运行的 KaiwuDB 版本
    started_at节点启动的日期和时间。
    updated_at节点状态更新的日期和时间。节点正常时,每 10 秒左右记录一次新的状态;节点异常时,更新信息可能会有所滞后。
    locality节点所在机器的地理位置,例如国家、数据中心或机架等。
    start_mode节点的启动模式。
    is_available
    is_live
    如果均为 true,表示节点处于正常状态。
    如果均为 false,表示节点处于异常状态。
  7. (可选)配置 KaiwuDB 开机自启动。

    配置 KaiwuDB 开机自启动后,如果系统重启,则自动启动 KaiwuDB。

    说明

    系统重启后,如果当前节点与其它节点时钟相差大于 500 ms,可能会导致 KaiwuDB 自启动失败。用户需要先进行时钟同步,再手动启动 KaiwuDB。

    systemctl enable kaiwudb