kwbase CLI 部署

本节介绍如何通过 kwbase CLI 命令在单台机器上部署 KaiwuDB 集群。注意:在实际生产环境中,建议每台机器仅部署一个节点,以提升可用性并降低数据丢失风险。

前提条件

  • 待部署节点的硬件配置、操作系统、软件依赖和端口满足安装部署要求
  • 安装用户为 root 用户或拥有 sudo 权限的普通用户

步骤

  1. 登录待部署节点,进入安装包目录下的 packages 目录。

  2. 安装依赖包和服务器组件。

    • DEB 包系统(Debian/Ubuntu):

      dpkg -i ./kaiwudb-libcommon-<版本号>.deb ./kaiwudb-server-<版本号>.deb
      
    • RPM 包系统(CentOS/RHEL):

      rpm -ivh ./kaiwudb-libcommon-<版本号>.rpm ./kaiwudb-server-<版本号>.rpm
      
  3. 切换至程序目录:

    cd /usr/local/kaiwudb/bin
    
  4. (可选)如需采用安全部署模式,执行以下步骤创建证书:

    1. 创建证书存放目录:

      mkdir -p /usr/local/kaiwudb/certs
      
    2. 生成证书和密钥:

      • TLS 安全模式:

        # 创建数据库证书颁发机构及密钥
        ./kwbase cert create-ca --certs-dir=/usr/local/kaiwudb/certs --ca-key=/usr/local/kaiwudb/certs/ca.key && \
        
        # 创建安装数据库用户的客户端证书及密钥(USER_NAME 替换为实际用户名)
        ./kwbase cert create-client $USERNAME --certs-dir=/usr/local/kaiwudb/certs --ca-key=/usr/local/kaiwudb/certs/ca.key && \
        
        # 创建节点服务器证书及密钥
        ./kwbase cert create-node 127.0.0.1 localhost 0.0.0.0 --certs-dir=/usr/local/kaiwudb/certs --ca-key=/usr/local/kaiwudb/certs/ca.key
        
      • TLCP 安全模式:

        # 创建数据库证书颁发机构及密钥
        ./kwbase cert create-ca --certs-dir=/usr/local/kaiwudb/certs --ca-key=/usr/local/kaiwudb/certs/ca.key --tlcp && \
        
        # 创建安装数据库用户的客户端证书及密钥(USER_NAME 替换为实际用户名)
        ./kwbase cert create-client $USERNAME --certs-dir=/usr/local/kaiwudb/certs --ca-key=/usr/local/kaiwudb/certs/ca.key --tlcp && \
        
        # 创建节点服务器证书及密钥
        ./kwbase cert create-node 127.0.0.1 localhost 0.0.0.0 --certs-dir=/usr/local/kaiwudb/certs --ca-key=/usr/local/kaiwudb/certs/ca.key --tlcp
        

      提示

      如果采用跨机器安全模式部署,需要使用 ./kwbase cert create-node <node_ip> 命令为所有节点创建证书和密钥,并将所有证书和密钥传输至所有节点。

  5. 启动数据库:

    • 单副本集群:

      • 非安全模式:

        # 启动第一个节点
        ./kwbase start-single-replica --insecure \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host1}:26257 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
        # 启动第二个节点
        ./kwbase start-single-replica --insecure \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host2}:26258 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
        # 启动第三个节点
        ./kwbase start-single-replica --insecure \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host3}:26259 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
      • TLS 安全模式:

        # 启动第一个节点
        ./kwbase start-single-replica \
            --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host1}:26257 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
        # 启动第二个节点
        ./kwbase start-single-replica \
            --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host2}:26258 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
        # 启动第三个节点
        ./kwbase start-single-replica \
            --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host3}:26259 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
      • TLCP 安全模式:

        # 启动第一个节点
        ./kwbase start-single-replica \
            --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host1}:26257 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257 \
            --tlcp
        
        # 启动第二个节点
        ./kwbase start-single-replica \
            --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host2}:26258 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257 \
            --tlcp
        
        # 启动第三个节点
        ./kwbase start-single-replica \
            --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host3}:26259 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257 \
            --tlcp
        
    • 多副本集群:

      • 非安全模式:

        # 启动第一个节点
        ./kwbase start --insecure \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host1}:26257 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
        # 启动第二个节点
        ./kwbase start --insecure \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host2}:26258 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
        # 启动第三个节点
        ./kwbase start --insecure \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host3}:26259 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
      • TLS 安全模式:

        # 启动第一个节点
        ./kwbase start --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host1}:26257 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
        # 启动第二个节点
        ./kwbase start --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host2}:26258 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
        # 启动第三个节点
        ./kwbase start --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host3}:26259 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257
        
      • TLCP 安全模式:

        # 启动第一个节点
        ./kwbase start --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host1}:26257 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257 \
            --tlcp
        
        # 启动第二个节点
        ./kwbase start --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host2}:26258 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257 \
            --tlcp
        
        # 启动第三个节点
        ./kwbase start --certs-dir=/usr/local/kaiwudb/certs \
            --listen-addr=0.0.0.0:26257 \
            --advertise-addr=${host3}:26259 \
            --http-addr=0.0.0.0:8080 \
            --store=/var/lib/kaiwudb \
            --join=${host1}:26257 \
            --tlcp
        
  6. 初始化集群。

    • 非安全模式:

      ./kwbase init --insecure --host=<address_of_any_node>
      
    • TLS 安全模式:

      ./kwbase init --certs-dir=/usr/local/kaiwudb/certs --host=<address_of_any_node>
      
    • TLCP 安全模式:

      ./kwbase init --certs-dir=/usr/local/kaiwudb/certs --host=<address_of_any_node> --tlcp
      
  7. 查看数据库状态。

    • 非安全模式:

      ./kwbase node status --insecure --host=<address_of_any_alive_node>
      
    • TLS 安全模式:

      ./kwbase node status --certs-dir=/usr/local/kaiwudb/certs --host=<address_of_any_alive_node>
      
    • TLCP 安全模式:

      ./kwbase node status --certs-dir=/usr/local/kaiwudb/certs --host=<address_of_any_alive_node> --tlcp