扩展 Milvus 依赖项

Milvus 依赖于 MinIO、Kafka、Pulsar 和 etcd 等各种依赖项。扩展这些组件可以增强 Milvus 对不同需求的适应性。

 

Scaleout

扩展 MinIO

增加每个 MinIO pod 的资源

MinIO 是 Milvus 使用的对象存储系统,可以为每个 pod 增加 CPU 和内存资源。

# new-values.yaml
minio:
  resources:
     limits:
       cpu: 2
       memory: 8Gi

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus

您还可以通过手动更改每个 MioIO Persistent Volume Claim (PVC) 的spec.resources.requests.storage 值来增加 MioIO 集群的磁盘容量。请注意,您的默认存储类别应允许卷扩展。

建议您为 Milvus 实例添加一个额外的 MinIO 服务器池。

# new-values.yam;
minio:
  zones: 2

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus

这将为你的 MinIO 集群添加一个额外的服务器池,允许 Milvus 根据每个服务器池的可用磁盘容量写入 MinIO 服务器池。例如,如果一个由三个服务器池组成的群集共有 10 TiB 可用空间,各服务器池的分配情况如下:

可用空间写入可能性
池 A3 TiB30% (3/10)
资源库 B2 TiB20% (2/10)
C 组5 个 TiB50% (5/10)

MinIO 不会自动重新平衡新服务器池中的对象。如有需要,您可以通过mc admin rebalance 手动启动重新平衡程序。

卡夫卡

增加每个 Kafka 代理 pod 的资源

通过调整每个 Kafka 代理 pod 的 CPU 和内存资源来提高 Kafka 代理的容量。

# new-values.yaml
kafka:
  resources:
     limits:
        cpu: 2
        memory: 12Gi

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus

您还可以通过手动更改每个 Kafka Persistent Volume Claim (PVC) 的spec.resources.requests.storage 值来增加 Kafka 集群的磁盘容量。确保默认存储类允许卷扩展。

建议您为 Milvus 实例添加一个额外的 Kafka 服务器池。

# new-values.yaml
kafka:
  replicaCount: 4

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus

这将为你的 Kafka 集群添加一个额外的代理。

Kafka 不会自动在所有代理之间重新平衡主题。如果需要,请在登录每个 Kafka 代理 pod 后使用bin/kafka-reassign-partitions.sh 手动重新平衡所有 Kafka 代理的主题/分区。

脉冲星

Pulsar 分离了计算和存储。您可以独立增加 Pulsar 代理(计算)和 Pulsar 账本(存储)的容量。

增加每个 Pulsar 代理 pod 的资源

# new-values.yaml
pulsar:
  broker:
    resources:
       limits:
         cpu: 4
         memory: 16Gi

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus

增加每个 Pulsar 博彩机 pod 的资源

# new-values.yaml
pulsar:
  bookkeeper:
    resources:
       limits:
         cpu: 4
         memory: 16Gi

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus

您还可以通过手动更改每个 Pulsar 代理的持久卷索赔 (PVC) 的spec.resources.requests.storage 值来增加 Pulsar 集群的磁盘容量。请注意,默认存储类别应允许卷扩展。

Pulsar 托管 pod 有两种存储类型:journal 和legers 。对于journal 类型的存储,可考虑使用ssd 或gp3 作为存储类。下面是一个为 Pulsar 日志指定存储类的示例。

pulsar:
  bookkeeper:
    volumes:
      journal:
        size: 20Gi
        storageClassName: gp3

添加额外的 Pulsar 代理 pod

# new-values.yaml
pulsar:
  broker:
    replicaCount: 3

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus
# new-values.yaml
pulsar:
  bookkeeper:
    replicaCount: 3

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus

etcd

# new-values.yaml
etcd:
  resources:
     limits:
       cpu: 2
       memory: 8Gi

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus

增加额外的 etcd pod

etcd pod 的总数应为奇数。

# new-values.yaml
etcd:
  replicaCount: 5

保存文件后,使用以下命令应用更改:

helm upgrade <milvus-release> --reuse-values -f new-values.yaml milvus/milvus

扩展 Milvus 集群

Milvus 支持组件的水平扩展。这意味着你可以根据自己的需要增加或减少每种类型的工作节点数量。

本主题介绍如何在 Milvus 集群中进行扩展和缩放。我们假定您在扩展之前已经安装了 Milvus 群集。另外,我们建议您在开始之前先熟悉一下Milvus 的架构

本教程以扩展三个查询节点为例。要扩展其他类型的节点,请在命令行中将queryNode 替换为相应的节点类型。

有关如何使用 Milvus Operator 扩展群集的信息,请参阅使用 Milvus Operator 扩展群集

什么是水平扩展?

水平扩展包括向外扩展和向内扩展。

向外扩展

向外扩展是指增加群集中的节点数量。与向上扩展不同,向外扩展不需要为群集中的一个节点分配更多资源。相反,向外扩展是通过添加更多节点来横向扩展群集。

Scaleout

扩展

Scaleup

扩展

根据Milvus 架构,无状态工作节点包括查询节点、数据节点、索引节点和代理。因此,你可以根据业务需求和应用场景来扩展这些类型的节点。你可以手动或自动扩展 Milvus 集群。

一般来说,如果您创建的 Milvus 集群使用率过高,您就需要对其进行缩减。以下是一些可能需要缩减 Milvus 集群的典型情况:

  • CPU 和内存利用率在一段时间内居高不下。
  • 查询吞吐量变高。
  • 需要更高的索引速度。
  • 需要处理大量大型数据集。
  • 需要确保 Milvus 服务的高可用性。
向内扩展

向内扩展是指减少集群中的节点数量。一般来说,如果您创建的 Milvus 集群利用率不足,您就需要对其进行扩展。下面是一些需要对 Milvus 集群进行扩展的典型情况:

  • 一段时间内 CPU 和内存利用率较低。
  • 查询吞吐量变低。
  • 不需要更高的索引速度。
  • 要处理的数据集规模较小。

我们不建议大幅减少工作节点的数量。例如,如果集群中有五个数据节点,我们建议每次减少一个数据节点,以确保服务可用性。如果第一次尝试缩放后服务可用,则可以继续进一步减少数据节点的数量。

前提条件

运行kubectl get pods ,获取所创建的 Milvus 集群中的组件及其工作状态列表。

NAME                                            READY   STATUS       RESTARTS   AGE
my-release-etcd-0                               1/1     Running      0          1m
my-release-milvus-datacoord-7b5d84d8c6-rzjml    1/1     Running      0          1m
my-release-milvus-datanode-665d4586b9-525pm     1/1     Running      0          1m
my-release-milvus-indexcoord-9669d5989-kr5cm    1/1     Running      0          1m
my-release-milvus-indexnode-b89cc5756-xbpbn     1/1     Running      0          1m
my-release-milvus-proxy-7cbcc8ffbc-4jn8d        1/1     Running      0          1m
my-release-milvus-pulsar-6b9754c64d-4tg4m       1/1     Running      0          1m
my-release-milvus-querycoord-75f6c789f8-j28bg   1/1     Running      0          1m
my-release-milvus-querynode-7c7779c6f8-pnjzh    1/1     Running      0          1m
my-release-milvus-rootcoord-75585dc57b-cjh87    1/1     Running      0          1m
my-release-minio-5564fbbddc-9sbgv               1/1     Running      0          1m

Milvus 只支持添加工作节点,不支持添加协调器组件。

扩展 Milvus 集群

您可以手动或自动扩展 Milvus 群集。关于使用水平 Pod Autoscaling (HPA) 进行自动扩展,请参阅为 Milvus 配置 HPA。如果启用了自动缩放,当 CPU 和内存资源消耗达到你设定的值时,Milvus 集群将自动缩小或扩大。

目前,Milvus 2.1.0 只支持手动缩进和缩出。

向外扩展

运行helm upgrade my-release milvus/milvus --set queryNode.replicas=3 --reuse-values 手动缩减查询节点。

如果成功,将在查询节点上添加三个正在运行的 pod,如下图所示。

NAME                                            READY   STATUS    RESTARTS   AGE
my-release-etcd-0                               1/1     Running   0          2m
my-release-milvus-datacoord-7b5d84d8c6-rzjml    1/1     Running   0          2m
my-release-milvus-datanode-665d4586b9-525pm     1/1     Running   0          2m
my-release-milvus-indexcoord-9669d5989-kr5cm    1/1     Running   0          2m
my-release-milvus-indexnode-b89cc5756-xbpbn     1/1     Running   0          2m
my-release-milvus-proxy-7cbcc8ffbc-4jn8d        1/1     Running   0          2m
my-release-milvus-pulsar-6b9754c64d-4tg4m       1/1     Running   0          2m
my-release-milvus-querycoord-75f6c789f8-j28bg   1/1     Running   0          2m
my-release-milvus-querynode-7c7779c6f8-czq9f    1/1     Running   0          5s
my-release-milvus-querynode-7c7779c6f8-jcdcn    1/1     Running   0          5s
my-release-milvus-querynode-7c7779c6f8-pnjzh    1/1     Running   0          2m
my-release-milvus-rootcoord-75585dc57b-cjh87    1/1     Running   0          2m
my-release-minio-5564fbbddc-9sbgv               1/1     Running   0          2m
向内扩展

运行helm upgrade my-release milvus/milvus --set queryNode.replicas=1 --reuse-values 扩展查询节点。

如果成功,查询节点上的三个运行 pod 将缩减为一个,如下例所示。

NAME                                            READY   STATUS    RESTARTS   AGE
my-release-etcd-0                               1/1     Running   0          2m
my-release-milvus-datacoord-7b5d84d8c6-rzjml    1/1     Running   0          2m
my-release-milvus-datanode-665d4586b9-525pm     1/1     Running   0          2m
my-release-milvus-indexcoord-9669d5989-kr5cm    1/1     Running   0          2m
my-release-milvus-indexnode-b89cc5756-xbpbn     1/1     Running   0          2m
my-release-milvus-proxy-7cbcc8ffbc-4jn8d        1/1     Running   0          2m
my-release-milvus-pulsar-6b9754c64d-4tg4m       1/1     Running   0          2m
my-release-milvus-querycoord-75f6c789f8-j28bg   1/1     Running   0          2m
my-release-milvus-querynode-7c7779c6f8-pnjzh    1/1     Running   0          2m
my-release-milvus-rootcoord-75585dc57b-cjh87    1/1     Running   0          2m
my-release-minio-5564fbbddc-9sbgv               1/1     Running   0          2m

 

### Milvus 集群部署与配置教程 Milvus 是一个高性能、可扩展的向量数据库,支持从快速原型到大规模生产的多种部署模式。以下是关于 Milvus 集群的部署与配置的相关信息。 #### 1. 安装 Milvus 集群 在每个节点上安装 Milvus 的过程可以通过容器化技术(如 Docker)简化[^2]。以下是一个典型的 Docker 安装和启动命令: ```bash # 下载 Milvus Docker 镜像 docker pull milvusdb/milvus:latest # 启动 Milvus 容器 docker run -d --name milvus -p 19530:19530 milvusdb/milvus:latest ``` 此步骤适用于单机环境下的快速部署。对于集群环境,建议使用 Helm 进行部署以实现更灵活的配置管理[^4]。 #### 2. 使用 PyMilvus 连接 Milvus 集群 启动并运行 Milvus 集群后,可以使用任何 Milvus SDK 与其交互。PyMilvusMilvus 的 Python SDK,用于连接集群并执行基本操作[^1]。以下是安装 PyMilvus 的命令: ```bash pip install pymilvus ``` 通过 PyMilvus,用户可以轻松地与 Milvus 集群进行数据插入、查询等操作。 #### 3. 配置集群 Milvus 集群的配置涉及多个方面,包括共享存储、服务类型等。以下是一些关键配置项: - **共享存储**:在分布式环境中,确保所有节点能够访问相同的存储资源。可以通过创建共享存储类(StorageClass)来实现[^4]。 - **服务类型**:将默认的 ClusterIP 模式更改为 NodePort 或 LoadBalancer 模式,以便外部访问[^4]。 ```yaml # 示例:将 svc 更改为 NodePort 模式 kind: Service spec: type: NodePort ``` #### 4. 安装依赖 在某些情况下,可能需要手动安装 Milvus依赖项。例如,在二进制文件集群部署中,可能需要以下依赖[^5]: ```bash apt-get install --no-install-recommends curl ca-certificates libaio-dev libgomp1 libopenblas-dev ``` #### 5. 部署选项概述 Milvus 支持多种部署模式,包括单机版、分布式版以及云托管服务。根据具体需求选择合适的部署方式[^3]。对于大规模生产环境,推荐使用分布式部署,并结合 Kubernetes 和 Helm 工具进行管理。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值