开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

部署记忆服务(多机:分布式)

每台服务器的记忆服务相关进程(openGauss、OpenViking)整体CPU资源建议限定为16个vCPU,可按需进行绑核约束。

  1. 下载openGauss数据库的Docker镜像。
    docker pull swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed:0328
  2. 启动CN和DN的openGauss容器。
    1. 启动CN容器(控制节点)。
      docker run --name opengauss-cn --privileged=true -d \
        -e GS_USERNAME={OG_USER} \
        -e GS_PASSWORD={OG_PASSWORD} \
        -e GS_NODENAME={OG_NODE_NAME}    \
        -e GS_PORT={OG_PORT}    \
        -p {HOST_PORT}:{OG_PORT} \
        swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed:0328
    2. 在部署CN节点的主机上启动DN1容器。
      docker run --name opengauss-dn1 --privileged=true -d \
        -e GS_USERNAME={OG_USER} \
        -e GS_PASSWORD={OG_PASSWORD} \
        -e GS_NODENAME={OG_NODE_NAME}    \
        -e GS_PORT={OG_PORT}    \
        -p {HOST_PORT}:{OG_PORT} \
        swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed:0328
    3. 在另一台主机上类比启动其他DN容器(数据节点)。
      docker run --name opengauss-dn{x} --privileged=true -d \
        -e GS_USERNAME={OG_USER} \
        -e GS_PASSWORD={OG_PASSWORD} \
        -e GS_NODENAME={OG_NODE_NAME}    \
        -e GS_PORT={OG_PORT}    \
        -p {HOST_PORT}:{OG_PORT} \
        swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed:0328
  3. 配置CN节点。
    1. 进入容器。
      docker exec -it opengauss-cn bash
    2. 修改postgresql.conf配置文件。
      vi /var/lib/opengauss/data/postgresql.conf
    3. 按“i”进入编辑模式,修改以下配置参数。
      shared_preload_libraries = 'spq'
      password_encryption_type = 1
    4. 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
    5. 退出并重启容器。
      exit
      docker restart opengauss-cn
    6. 指定omm用户进入容器并加载spq插件,其中OG_NODE_NAME和OG_USER默认为omm。
      docker exec -it -u omm opengauss-cn bash 
      gsql -d {OG_NODE_NAME} -U {OG_USER} -c "create extension spq;"
    7. 设置CN节点。
      gsql -d {OG_NODE_NAME} -U {OG_USER} -c "SELECT spq_set_coordinator_host('{CN_IP}', {CN_PORT});"
    8. 跳转至4,执行完成后在CN节点添加DN节点(根据实际部署的DN节点添加)。
      gsql -d {OG_NODE_NAME} -U {OG_USER} -c "SELECT spq_add_node('{DN1_IP}', {DN1_PORT});"
      gsql -d {OG_NODE_NAME} -U {OG_USER} -c "SELECT spq_add_node('{DN2_IP}', {DN2_PORT});"
    9. 配置完DN节点后创建新用户并赋予权限。
      gsql -r
      create user test with password '<user_password>';
      grant all privileges to test;
  4. 配置DN节点。
    1. 进入容器。
      docker exec -it opengauss-dn1 bash
    2. 修改postgresql.conf配置文件。
      vi /var/lib/opengauss/data/postgresql.conf
    3. 按“i”进入编辑模式,修改以下配置参数。
      shared_preload_libraries = 'spq'
      password_encryption_type = 1
    4. 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
    5. 修改pg_hba.conf配置文件。
      vi /var/lib/opengauss/data/pg_hba.conf
    6. 按“i”进入编辑模式,在host all all 0.0.0.0/0 md5前面添加以下行。
      host    all    all    0.0.0.0/0    trust

    7. 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
    8. 退出并重启容器。
      exit
      docker restart opengauss-dn1
    9. 指定omm用户进入容器并加载spq插件。
      docker exec -it -u omm opengauss-dn1 bash 
      gsql -d omm -U omm -c "create extension spq;"
  5. 下载支持openGauss数据库的OpenViking镜像。
    docker pull swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/openviking-opengaussbackend:0328
  6. 启动OpenViking容器。
      docker run -d --name OpenViking \
      -p 1933:1933 \
      -e OPENVIKING_VLM_PROVIDER=openai \
      -e OPENVIKING_VLM_API_BASE=<your_vlm_api_base> \
      -e OPENVIKING_VLM_API_KEY="<your_api_key>" \
      -e OPENVIKING_VLM_MODEL=<your_vlm_model> \
      -e OPENVIKING_EMBEDDING_PROVIDER=openai \
      -e OPENVIKING_EMBEDDING_API_BASE=<your_embedding_api_base> \
      -e OPENVIKING_EMBEDDING_API_KEY="<your_api_key>" \
      -e OPENVIKING_EMBEDDING_MODEL=<your_embedding_model> \
      -e OPENVIKING_TARGET_URI=viking://user/memories \
      -e OPENVIKING_ROOT_API_KEY=<your_root_key> \
      -v /your_path/openclaw-data:/root/.openclaw \
      -v /your_path/openviking-data:/root/.openviking \
      swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/openviking-opengaussbackend:0328
  7. 修改ov.conf文件。
    1. 进入容器。
      docker exec -it OpenViking bash
    2. 修改配置文件。
      vi /root/.openviking/ov.conf
    3. 按“i”进入编辑模式,配置OpenViking的向量数据库的后端引擎为openGauss,openGauss的模式为分布式,OpenViking连接openGauss的CN节点,其余配置与单机的记忆服务配置一致,详见5
      "storage": {
          "workspace": "/home/your_user/openviking_workspace",
          "vectordb": {
            "backend": "opengauss",         # 使用openGauss
            "dimension": 1024,              # 需根据模型而定
            "opengauss": {
              "host": "{CN_IP}",            # 对应配置
              "port": "{CN_PORT}",          # 对应配置
              "user": "{OG_USER}",          # 对应配置
              "password": "{OG_PASSWORD}",  # 对应配置
              "db_name": "{OG_NODE_NAME}",  # 对应配置
              "mode": "distributed",        # 分布式
              "shard_count": 6              # 数据分片的数量
            }
          }
      },
    4. 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
    5. 重启OpenViking容器使配置生效。
       docker restart OpenViking
    6. 进入openGauss数据库查看。
      docker exec -it -u omm opengauss-cn bash
      gsql -r
      \d    

      应看到初始化的四张表。

  8. 验证OpenViking服务。
    curl http://your_server_ip:1933/health

    预期返回:{"status":"ok"}。