扩展(scaleout)

扩展Milvus集群

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

本主题介绍如何扩展和缩小Milvus集群。我们假设您在扩展之前已经安装了Milvus集群。此外,在开始之前,我们建议熟悉Milvus架构

本教程以增加三个查询节点为例进行水平扩展。如需对其他类型的节点进行扩展,请在命令行中将“queryNode”替换为相应的节点类型。

什么是水平扩展?

水平扩展包括扩展和收缩。

扩展

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

Scaleout (opens in a new tab)

Scaleout illustration.

Scaleup (opens in a new tab)

Scaleup illustration.

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

通常情况下,如果您创建的Milvus集群超负荷使用,您需要进行扩展。以下是您可能需要扩展Milvus集群的一些典型情况:

  • CPU和内存利用率在一段时间内很高。

  • 查询吞吐量变得更高了。

  • 需要更高速度的索引。

  • 需要处理大量大型数据集。

  • 需要确保Milvus服务的高可用性。

缩小规模

缩容是指减少集群中节点的数量。一般来说,如果Milvus集群处于低利用率状态,您需要缩小它。以下是一些Typical情况,您需要缩小Milvus集群:

  • 一段时间内CPU和内存利用率较低。

  • 查询吞吐量变低。

  • 不需要更高速度的索引。

  • 要处理的数据集较小。

我们不推荐大幅度减少worker节点的数量。例如,如果集群中有五个数据节点,我们建议一次只减少一个数据节点,以确保服务可用性。如果在第一次缩容尝试后服务仍然可用,则可以继续进一步减少数据节点的数量。

先决条件

运行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仅支持添加Worker节点,不支持添加协调者组件。

扩展 Milvus 集群

您可以手动或自动缩放 Milvus 集群。如果启用了自动缩放,当 CPU 和内存资源消耗达到您设置的值时,Milvus 集群将自动收缩或扩展。

目前,Milvus 2.1.0 仅支持手动缩放。

扩展

执行 helm upgrade my-release milvus/milvus --set queryNode.replicas=3 --reuse-values 命令手动扩展查询节点。

如果成功,将会添加三个正在运行的查询节点Pods,如以下示例所示。

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
 

下一步