milvus-logo
LFAI
Casa
  • Guida all'amministrazione

Distribuzione di un cluster Milvus su GKE

Milvus è un database vettoriale cloud-native e può essere distribuito su vari ambienti cloud. Questa guida illustra tutti i dettagli della configurazione di Milvus su Google Cloud Platform (GCP).

Deploy a Milvus cluster on GCP Distribuzione di un cluster Milvus su GCP

Prima di iniziare

Per distribuire Milvus su GCP, assicuratevi che

Configurazione della rete

Per garantire la sicurezza di Milvus, è necessario creare una rete virtuale logicamente isolata nel progetto GCP. Il comando seguente crea una VPC.

gcloud compute networks create milvus-network \
    --project=milvus-testing-nonprod \
    --subnet-mode=auto \
    --mtu=1460 \
    --bgp-routing-mode=regional

Per facilitare il lavoro, è necessario impostare diverse regole di firewall per consentire il traffico esterno su ICMP, RDP e SSH e il traffico all'interno della VPC.

gcloud compute firewall-rules create milvus-network-allow-icmp \
    --project=milvus-testing-nonprod \
    --network=projects/milvus-testing-nonprod/global/networks/milvus-network \
    --description="Allows ICMP connections from any source to any instance on the network." \
    --direction=INGRESS \
    --priority=65534 \
    --source-ranges=0.0.0.0/0 \
    --action=ALLOW \
    --rules=icmp

gcloud compute firewall-rules create milvus-network-allow-internal \
    --project=milvus-testing-nonprod \
    --network=projects/milvus-testing-nonprod/global/networks/milvus-network \
    --description="Allows connections from any source in the network IP range to any instance on the network using all protocols." \
    --direction=INGRESS \
    --priority=65534 \
    --source-ranges=10.128.0.0/9 \
    --action=ALLOW --rules=all

gcloud compute firewall-rules create milvus-network-allow-rdp \
    --project=milvus-testing-nonprod \
    --network=projects/milvus-testing-nonprod/global/networks/milvus-network \
    --description="Allows RDP connections from any source to any instance on the network using port 3389." \
    --direction=INGRESS \
    --priority=65534 \
    --source-ranges=0.0.0.0/0 \
    --action=ALLOW \
    --rules=tcp:3389

gcloud compute firewall-rules create milvus-network-allow-ssh \
    --project=milvus-testing-nonprod \
    --network=projects/milvus-testing-nonprod/global/networks/milvus-network \
    --description="Allows TCP connections from any source to any instance on the network using port 22." \
    --direction=INGRESS \
    --priority=65534 \
    --source-ranges=0.0.0.0/0 \
    --action=ALLOW \
    --rules=tcp:22

Infine, è necessario consentire il traffico in entrata all'istanza Milvus che creeremo in seguito sulla porta 19530.

gcloud compute firewall-rules create allow-milvus-in \
    --project=milvus-testing-nonprod  \
    --description="Allow ingress traffic for Milvus on port 19530" \
    --direction=INGRESS \
    --priority=1000 \
    --network=projects/milvus-testing-nonprod/global/networks/milvus-network \
    --action=ALLOW \
    --rules=tcp:19530 \
    --source-ranges=0.0.0.0/0

Provisionare un cluster Kubernetes

In questa guida, utilizzeremo il servizio Google Kubernetes Engine (GKE) per effettuare il provisioning di un cluster Kubernetes con due nodi nella zona us-west1-a. Ogni nodo è una macchina virtuale e2-standard-4 Compute Engine che esegue l'immagine COS_CONTAINERD.

Si consiglia di utilizzare macchine con una memoria minima di 16 GB per garantire la stabilità del servizio.

gcloud container clusters create "milvus-cluster-1" \
    --project "milvus-testing-nonprod" \
    --zone "us-west1-a" \
    --workload-pool "milvus-testing-nonprod.svc.id.goog" \
    --no-enable-basic-auth \
    --cluster-version "1.28.10-gke.1075001" \
    --release-channel "regular" \
    --machine-type "c2-standard-4" \
    --image-type "COS_CONTAINERD" \
    --disk-type "pd-standard" \
    --disk-size "100" \
    --max-pods-per-node "110" \
    --num-nodes "3" \
    --enable-ip-alias \
    --network "projects/milvus-testing-nonprod/global/networks/milvus-network" \
    --subnetwork "projects/milvus-testing-nonprod/regions/us-west1/subnetworks/milvus-network"

L'avvio del cluster Kubernetes richiede un paio di minuti. Una volta che il cluster è pronto, utilizzare il seguente comando per ottenere le sue credenziali in modo da poter eseguire i comandi kubectl nel terminale per comunicare con il cluster da remoto.

gcloud container clusters get-credentials milvus-cluster-1 --zone "us-west1-a"

Usare Google Cloud Storage (GCS) come archivio oggetti esterno

  • Creare il bucket.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
  • Generare la chiave d'accesso utente e la chiave segreta, andando alla pagina di archiviazione del progetto. Nella barra laterale sinistra della dashboard, fare clic su Google Cloud Storage e poi su Impostazioni. Selezionare la scheda INTEROPERABILITÀ. Se non è già stata attivata, fare clic su Accesso interoperabile. Fare quindi clic sul pulsante CREA UNA CHIAVE per creare.

GCP Access keys for your user account Chiavi di accesso GCP per l'account utente

  • Aggiungere values.yaml
cluster:
    enabled: true

service:
    type: LoadBalancer

minio:
    enabled: false

externalS3:
    enabled: true
    host: storage.googleapis.com
    port: 443
    rootPath: milvus/my-release
    bucketName: milvus-testing-nonprod
    cloudProvider: gcp
    useSSL: true
    accessKey: "<access-key>"
    secretKey: "<secret-key>"

Distribuire Milvus

Ora il cluster Kubernetes è pronto. Distribuiamo subito Milvus.

helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
helm install -f values.yaml my-release milvus/milvus

Nei comandi precedenti, aggiungiamo il repo dei grafici di Milvus Helm in locale e aggiorniamo il repo per recuperare i grafici più recenti. Poi installiamo un'istanza di Milvus e la chiamiamo my-release.

Si noti il valore service.type, che indica che vogliamo esporre l'istanza Milvus attraverso un bilanciatore di carico Layer-4.

Se volete esporre la vostra istanza Milvus attraverso un bilanciatore di carico Layer-7, leggete qui.

Verificare la distribuzione

Una volta che tutti i pod sono in esecuzione, eseguire il seguente comando per ottenere l'indirizzo IP esterno.

kubectl get services|grep my-release-milvus|grep LoadBalancer|awk '{print $4}'

Ciao Milvus

Fare riferimento a Hello Milvus, modificare il valore host con l'indirizzo IP esterno ed eseguire il codice.

Cosa fare dopo

Se volete imparare a distribuire Milvus su altri cloud:

Tradotto daDeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Questa pagina è stata utile?