Масштабирование кластера Milvus
Milvus поддерживает горизонтальное масштабирование своих компонентов. Это означает, что вы можете увеличивать или уменьшать количество рабочих узлов каждого типа в зависимости от ваших потребностей.
В этой теме описывается, как масштабировать и расширять кластер Milvus. Мы предполагаем, что перед масштабированием вы уже установили кластер Milvus. Кроме того, мы рекомендуем ознакомиться с архитектурой Milvus до начала работы.
В этом руководстве в качестве примера рассматривается масштабирование трех узлов запросов. Чтобы масштабировать узлы других типов, замените queryNode
на соответствующий тип узла в командной строке.
Информацию о том, как масштабировать кластер с помощью Milvus Operator, см. в разделе Масштабирование кластера с помощью Milvus Operator.
Что такое горизонтальное масштабирование?
Горизонтальное масштабирование включает в себя масштабирование наружу и масштабирование внутрь.
Масштабирование наружу
Под масштабированием понимается увеличение количества узлов в кластере. В отличие от увеличения масштаба, при масштабировании не требуется выделять больше ресурсов на один узел кластера. Вместо этого масштабирование расширяет кластер по горизонтали за счет добавления новых узлов.
Scaleout
Scaleup
Согласно архитектуре Milvus, рабочие узлы без статических данных включают узел запросов, узел данных, индексный узел и прокси. Поэтому вы можете масштабировать эти типы узлов в соответствии с вашими бизнес-потребностями и сценариями работы приложений. Масштабировать кластер Milvus можно как вручную, так и автоматически.
Как правило, масштабирование созданного вами кластера Milvus требуется в случае его чрезмерной загрузки. Ниже перечислены типичные ситуации, в которых может потребоваться масштабирование кластера Milvus:
- Использование процессора и памяти в течение некоторого времени остается высоким.
- Пропускная способность запросов становится выше.
- Требуется более высокая скорость индексирования.
- Необходимо обрабатывать большие объемы данных.
- Необходимо обеспечить высокую доступность сервиса Milvus.
Масштабирование внутрь
Масштабирование означает уменьшение количества узлов в кластере. Как правило, масштабирование созданного вами кластера Milvus необходимо, если он недостаточно используется. Ниже перечислены типичные ситуации, когда необходимо масштабировать кластер Milvus:
- В течение определенного периода времени процессор и память используются слабо.
- Пропускная способность запросов становится ниже.
- Более высокая скорость индексирования не требуется.
- Размер обрабатываемого набора данных невелик.
Предварительные условия
Запустите 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 будет автоматически сжиматься или расширяться, когда потребление ресурсов процессора и памяти достигнет заданного вами значения.
В настоящее время Milvus 2.1.0 поддерживает только ручное масштабирование.
Масштабирование
Запустите helm upgrade my-release milvus/milvus --set queryNode.replicas=3 --reuse-values
, чтобы вручную уменьшить масштаб узла запросов.
В случае успеха на узел запросов будут добавлены три запущенные капсулы, как показано в следующем примере.
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
, чтобы увеличить масштаб узла запросов.
В случае успеха три работающих стручка на узле запросов будут уменьшены до одного, как показано в следующем примере.
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 на Amazon EKS с помощью Terraform.
- Узнайте, как развернуть кластер Milvus на GCP с помощью Kubernetes
- Узнайте, как развернуть Milvus на Microsoft Azure с помощью Kubernetes.
Если вы ищете инструкции по выделению ресурсов: