Skip to content

Commit 1e99325

Browse files
majinghe小马哥
andauthored
Add milvus integration part files. (#53)
* Docs: add milvus integration part files * Docs: update sidebar with milvus integration enabled --------- Co-authored-by: 小马哥 <xiaomage@xiaomagedeMacBook-Pro.local>
1 parent 9d056d5 commit 1e99325

File tree

4 files changed

+143
-4
lines changed

4 files changed

+143
-4
lines changed
119 KB
Loading
113 KB
Loading

docs/zh/integration/milvus.md

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
---
2+
title: "将 RustFS 配置为 milvus 对象存储后端"
3+
description: "milvus 默认支持 minio 作为对象存储后端,RustFS 作为 minio 的平替,可以作为 milvus 的存储后端。"
4+
---
5+
6+
# 在 Milvus 中配置 RustFS
7+
8+
9+
[Milvus](https://milvus.io/) 是一款开源的向量数据库项目,由 Zilliz 开发,目前该项目已经捐赠给了 LF AI & DATA 基金会。向量数据库是 AIGC 发展的重要基础设施,因此 [milvus 在 GitHub 上的 Star 数量](https://github.com/milvus-io/milvus)已经超过 37.5k。
10+
11+
Milvus 支持多种安装方式,同时支持将对象存储配置为存储后端,官方提供的配置方式中,默认的对象存储为 minio。RustFS 作为 Rust 编写的新一代分布式对象存储系统,可以完全平替 minio,因此,可以将 RustFS 作为 milvus 的对象存储后端。
12+
13+
## 配置流程
14+
15+
### Docker Compose 安装
16+
17+
#### `docker-compose.yaml` 文件修改
18+
19+
Milvus 官方提供 [`docker-compose.yml`](https://github.com/milvus-io/milvus/blob/master/docker-compose.yml)来进行部署。该文件中包含以下几个服务:
20+
21+
22+
- `milvus-etcd`
23+
- `milvus-minio`
24+
- `milvus-standalone`
25+
26+
27+
`milvus-minio` 替换为 `milvus-rustfs`,需要将 `docker-compose.yaml` 中的 minio 容器信息替换为 rustfs 容器信息:
28+
29+
```
30+
rustfs:
31+
container_name: milvus-rustfs
32+
image: rustfs/rustfs:1.0.0-alpha.58
33+
environment:
34+
- RUSTFS_VOLUMES=/data/rustfs0,/data/rustfs1,/data/rustfs2,/data/rustfs3
35+
- RUSTFS_ADDRESS=0.0.0.0:9000
36+
- RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
37+
- RUSTFS_CONSOLE_ENABLE=true
38+
- RUSTFS_EXTERNAL_ADDRESS=:9000
39+
- RUSTFS_CORS_ALLOWED_ORIGINS=*
40+
- RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS=*
41+
- RUSTFS_ACCESS_KEY=rustfsadmin
42+
- RUSTFS_SECRET_KEY=rustfsadmin
43+
ports:
44+
- "9000:9000" # S3 API port
45+
- "9001:9001" # Console port
46+
volumes:
47+
- rustfs_data_0:/data/rustfs0
48+
- rustfs_data_1:/data/rustfs1
49+
- rustfs_data_2:/data/rustfs2
50+
- rustfs_data_3:/data/rustfs3
51+
- logs_data:/app/logs
52+
restart: unless-stopped
53+
healthcheck:
54+
test:
55+
[
56+
"CMD",
57+
"sh", "-c",
58+
"curl -f http://localhost:9000/health && curl -f http://localhost:9001/health"
59+
]
60+
interval: 30s
61+
timeout: 10s
62+
retries: 3
63+
start_period: 40s
64+
```
65+
66+
另外,在 `milvus-standalone` 容器信息中 `depends` 中的 minio 替换为 rustfs:
67+
68+
```
69+
depends_on:
70+
- "etcd"
71+
- "rustfs"
72+
```
73+
74+
如果想增加 milvus 的可观测性,还可以在 `docker-compose.yaml` 文件中增加 attu 服务:
75+
76+
```
77+
attu:
78+
container_name: milvus-attu
79+
image: zilliz/attu:v2.6
80+
environment:
81+
- MILVUS_URL=milvus-standalone:19530
82+
ports:
83+
- "8000:3000"
84+
restart: unless-stopped
85+
```
86+
87+
#### `milvus.yaml` 文件修改
88+
89+
90+
minio 的信息(包括地址、access_key、access_secret 等)都写在 [`milvus.yaml`](https://github.com/milvus-io/milvus/blob/master/configs/milvus.yaml) 中,因此需要将这些信息替换为 rustfs 实例的信息:
91+
92+
在该文件中,minio 的重点配置信息如下:
93+
94+
```
95+
rustfs:
96+
address: localhost:9000
97+
port: 9000
98+
accessKeyID: rustfsadmin
99+
secretAccessKey: rustfsadmin
100+
useSSL: false
101+
bucketName: "rustfs-bucket"
102+
```
103+
104+
**注意**:由于需要修改 `milvus.yaml` 文件中的默认 minio 信息,因此有两种方式:
105+
106+
- 修改 `milvus-standalone` 容器的启动命令:在 milvus 进程启动之前,使用 `yq` 命令对 minio 信息进行替换。由于该容器中默认没有 `yq` 命令,所以需要先安装。
107+
- 从本地挂载:将 `milvus.yaml` 文件下载到本地,修改内容后,使用 volume 进行挂载,比如 `- ${DOCKER_VOLUME_DIRECTORY:-.}/milvus.yaml:/milvus/configs/milvus.yaml:ro`
108+
109+
### 安装部署
110+
111+
将官方 [`docker-compose.yml`](https://github.com/milvus-io/milvus/blob/master/docker-compose.yml)[`milvus.yml`](https://github.com/milvus-io/milvus/blob/master/configs/milvus.yaml)下载到本地。根据上面的步骤进行相应修改,然后执行如下命令:
112+
113+
```bash
114+
docker compose -f docker-compose.yaml up -d
115+
```
116+
117+
等服务启动之后,可查看启动的容器:
118+
119+
```bash
120+
docker compose ps
121+
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
122+
milvus-attu zilliz/attu:v2.6 "docker-entrypoint.s…" attu 14 minutes ago Up 14 minutes 0.0.0.0:8000->3000/tcp, [::]:8000->3000/tcp
123+
milvus-etcd quay.io/coreos/etcd:v3.5.18 "etcd -advertise-cli…" etcd 14 minutes ago Up 14 minutes (healthy) 2379-2380/tcp
124+
milvus-rustfs rustfs/rustfs:1.0.0-alpha.58 "/entrypoint.sh rust…" rustfs 14 minutes ago Up 14 minutes (unhealthy) 0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp
125+
milvus-standalone milvusdb/milvus:v2.6.2 "/tini -- milvus run…" standalone 14 minutes ago Up 14 minutes (healthy) 0.0.0.0:9091->9091/tcp, [::]:9091->9091/tcp, 0.0.0.0:19530->19530/tcp, [::]:19530->19530/tcp
126+
```
127+
128+
其中,RustFS 服务在 `localhost:9000` 可用:
129+
130+
![rustfs container service](./images/rustfs-service.png)
131+
132+
133+
可以看到,milvus 已经使用 rustfs 存储了一些启动过程中产生的数据。
134+
135+
136+
Attu 在 `localhost:8000` 可用:
137+
138+
139+
![attu container service](./images/attu-service.png)

docs/zh/sidebar.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -411,10 +411,10 @@ export const sidebar = [
411411
text: '虚拟主机模式配置',
412412
link: '/zh/integration/virtual'
413413
},
414-
// {
415-
// text: 'GitLab',
416-
// link: '/zh/integration/gitlab',
417-
// },
414+
{
415+
text: 'Milvus 存储后端配置',
416+
link: '/zh/integration/milvus',
417+
},
418418
// {
419419
// text: 'HDFS',
420420
// link: '/zh/integration/hdfs'

0 commit comments

Comments
 (0)