Escalar um Cluster Milvus
O Milvus suporta o escalonamento horizontal dos seus componentes. Isto significa que pode aumentar ou diminuir o número de nós de trabalho de cada tipo de acordo com as suas necessidades.
Este tópico descreve como aumentar e diminuir a escala de um cluster Milvus. Partimos do princípio de que já instalou um cluster Milvus antes de efetuar o escalonamento. Além disso, recomendamos que se familiarize com a arquitetura do Milvus antes de começar.
Este tutorial usa como exemplo o escalonamento de três nós de consulta. Para dimensionar outros tipos de nós, substitua queryNode
pelo tipo de nó correspondente na linha de comando.
Para obter informações sobre como dimensionar um cluster com o Milvus Operator, consulte Dimensionar um cluster com o Milvus Operator.
O que é escalonamento horizontal?
O escalonamento horizontal inclui o escalonamento para fora e para dentro.
Dimensionamento para fora
O escalonamento para fora refere-se ao aumento do número de nós em um cluster. Ao contrário do aumento de escala, o aumento de escala não requer a alocação de mais recursos para um nó no cluster. Em vez disso, o aumento de escala expande o cluster horizontalmente, adicionando mais nós.
Aumento de escala
Aumento de escala
De acordo com a arquitetura Milvus, os nós de trabalho sem estado incluem o nó de consulta, o nó de dados, o nó de índice e o proxy. Portanto, é possível escalar esses tipos de nós para atender às suas necessidades de negócios e cenários de aplicativos. Pode escalar o cluster Milvus manualmente ou automaticamente.
Geralmente, será necessário expandir o cluster Milvus criado se ele estiver sendo usado em excesso. Abaixo estão algumas situações típicas em que pode ser necessário dimensionar o cluster do Milvus:
- A utilização da CPU e da memória é alta por um período de tempo.
- A taxa de transferência da consulta torna-se mais elevada.
- É necessária uma maior velocidade de indexação.
- É necessário processar volumes massivos de grandes conjuntos de dados.
- É necessário garantir a alta disponibilidade do serviço Milvus.
Aumento de escala
O escalonamento refere-se à diminuição do número de nós num cluster. Geralmente, será necessário escalar o cluster Milvus que criou se este estiver a ser subutilizado. Abaixo estão algumas situações típicas em que é necessário escalonar o cluster Milvus:
- A utilização da CPU e da memória é baixa por um período de tempo.
- A taxa de transferência da consulta torna-se mais baixa.
- Não é necessária uma maior velocidade de indexação.
- O tamanho do conjunto de dados a ser processado é pequeno.
Pré-requisitos
Execute kubectl get pods
para obter uma lista dos componentes e seu status de trabalho no cluster do Milvus que você criou.
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
Dimensionar um cluster do Milvus
É possível dimensionar o cluster do Milvus manual ou automaticamente. Se o escalonamento automático estiver ativado, o cluster do Milvus será reduzido ou expandido automaticamente quando o consumo de recursos de CPU e memória atingir o valor definido.
Atualmente, o Milvus 2.1.0 apenas suporta o escalonamento manual.
Redimensionamento
Execute helm upgrade my-release milvus/milvus --set queryNode.replicas=3 --reuse-values
para escalar manualmente o nó de consulta.
Se for bem-sucedido, três pods em execução no nó de consulta serão adicionados, conforme mostrado no exemplo a seguir.
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
Escalonamento de entrada
Execute helm upgrade my-release milvus/milvus --set queryNode.replicas=1 --reuse-values
para escalonar o nó de consulta.
Se for bem-sucedido, três pods em execução no nó de consulta serão reduzidos a um, conforme mostrado no exemplo a seguir.
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
O que vem a seguir
Se você quiser saber como monitorar os serviços do Milvus e criar alertas:
Se você estiver pronto para implantar seu cluster em nuvens:
Se estiver à procura de instruções sobre como alocar recursos: