---
title: 记忆服务部署（多机：分布式）
description: "每台服务器的记忆服务相关进程（openGauss、OpenViking）整体CPU资源建议限定为16个vCPU，可按需进行绑核约束。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaiagent/bestpractice/aiagent-0075.html
sourcePath: /source/zh/kunpengaiagent/bestpractice/aiagent-0075.html
indexId: 0091daca8e7a7779dd87c1eb1f41e92a230d4345d375f3244fd8a701517c4d9e56
---
# 记忆服务部署（多机：分布式）

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

1. 下载openGauss数据库的Docker镜像。

```
docker pull swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed:0422
```


2. 启动CN和DN的openGauss容器。

  a. 启动CN容器（控制节点）。

```
docker run --name opengauss-cn --privileged=true -d \
--net=host \
-e GS_USERNAME={OG_USER} \
-e GS_PASSWORD={OG_PASSWORD} \
-e GS_NODENAME={OG_NODE_NAME}    \
-e GS_PORT={OG_PORT}    \
swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed:0422
```


  b. 在部署CN节点的主机上启动DN1容器，要保证OG_PORT不冲突。

```
docker run --name opengauss-dn1 --privileged=true -d \
--net=host \
-e GS_USERNAME={OG_USER} \
-e GS_PASSWORD={OG_PASSWORD} \
-e GS_NODENAME={OG_NODE_NAME}    \
-e GS_PORT={OG_PORT}    \
swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed:0422
```


  c. 在另一台主机上启动其他DN容器（数据节点），要保证OG_PORT不冲突。

```
docker run --name opengauss-dn{x} --privileged=true -d \
--net=host \
-e GS_USERNAME={OG_USER} \
-e GS_PASSWORD={OG_PASSWORD} \
-e GS_NODENAME={OG_NODE_NAME}    \
-e GS_PORT={OG_PORT}    \
swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed:0422
```


3. 配置CN节点。

  a. 进入容器。

```
docker exec -it opengauss-cn bash
```


  b. 修改postgresql.conf配置文件。

```
vi /var/lib/opengauss/data/postgresql.conf
```


  c. 按“i”进入编辑模式，修改以下配置参数。

```
shared_preload_libraries = 'spq'
password_encryption_type = 1
```


  d. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”键保存并退出文件。
  e. 退出并重启容器。

```
exit
docker restart opengauss-cn
```


  f. 指定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;"
```


  g. 设置CN节点。

```
gsql -d {OG_NODE_NAME} -U {OG_USER} -c "SELECT spq_set_coordinator_host('{CN_IP}', {CN_PORT});"
```


  h. 跳转至    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});"
```


  i. 配置完DN节点后创建新用户并赋予权限。

```
gsql -r -p {OG_PORT}
create user test with password '<user_password>';
grant all privileges to test;
```


  j. 退出数据库和容器。

```
\q
exit
```


4. 配置DN节点。

  a. 进入容器。

```
docker exec -it opengauss-dn1 bash
```


  b. 修改postgresql.conf配置文件。

```
vi /var/lib/opengauss/data/postgresql.conf
```


  c. 按“i”进入编辑模式，修改以下配置参数。

```
shared_preload_libraries = 'spq'
password_encryption_type = 1
```


  d. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”键保存并退出文件。
  e. 修改pg_hba.conf配置文件。

```
vi /var/lib/opengauss/data/pg_hba.conf
```


  f. 按“i”进入编辑模式，在host all all 0.0.0.0/0 md5前面添加以下行。

```
host    all    all    0.0.0.0/0    trust
```


  g. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”键保存并退出文件。
  h. 退出并重启容器。

```
exit
docker restart opengauss-dn1
```


  i. 指定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:0617
```


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_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:0617
```


7. 修改ov.conf文件。

  a. 进入容器。

```
docker exec -it OpenViking bash
```


  b. 修改配置文件。

```
vi /root/.openviking/ov.conf
```


  c. 按“i”进入编辑模式，配置OpenViking的向量数据库的后端引擎为openGauss，openGauss的模式为分布式，OpenViking连接openGauss的CN节点，其余配置与单机的记忆服务配置一致，详见    5
。

```
"storage": {
"workspace": "/home/your_user/openviking_workspace",
"vectordb": {
"backend": "opengauss",         # 使用openGauss
"dimension": 512,              # 需根据模型而定
"opengauss": {
"host": "{CN_IP}",            # 对应配置
"port": "{CN_PORT}",          # 对应配置
"user": "{OG_USER}",          # 对应配置
"password": "{OG_PASSWORD}",  # 对应配置
"db_name": "{OG_NODE_NAME}",  # 对应配置
"mode": "distributed",        # 分布式
"shard_count": 6              # 数据分片的数量
}
}
},
```


  d. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”键保存并退出文件。
  e. 重启OpenViking容器使配置生效。

```
docker restart OpenViking
```


  f. 进入openGauss数据库查看。

```
docker exec -it -u omm opengauss-cn bash
gsql -r -p {OG_PORT}
\d
```


    应看到初始化的四张表。

8. 验证OpenViking服务。

```
curl http://
your_server_ip
:1933/health
```


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