Configurare un bilanciatore di carico Layer-7 per Milvus su AWS
Rispetto a un bilanciatore di carico Layer-4, un bilanciatore di carico Layer-7 offre funzionalità intelligenti di bilanciamento del carico e di caching ed è un'ottima scelta per i servizi cloud-nativi.
Questa guida illustra la configurazione di un bilanciatore di carico Layer-7 per un cluster Milvus già in esecuzione dietro un bilanciatore di carico Layer-4.
Prima di iniziare
Modificare le configurazioni di Milvus
Questa guida presuppone che abbiate già implementato un cluster Milvus dietro un bilanciatore di carico Layer-4 su AWS.
Prima di impostare un bilanciatore di carico Layer-7 per questo cluster Milvus, eseguire il seguente comando per rimuovere il bilanciatore di carico Layer-4.
helm upgrade milvus-demo milvus/milvus -n milvus --set service.type=ClusterIP
Preparare i certificati TLS
Il TLS richiede certificati per funzionare. Stiamo usando ACM per gestire i certificati e dobbiamo importare un certificato esistente in ACM. Fare riferimento a Importazione di certificati. Di seguito è riportato un esempio.
# If the import-certificate command is successful, it returns the arn of the imported certificate.
aws acm import-certificate --certificate fileb://Certificate.pem \
--certificate-chain fileb://CertificateChain.pem \
--private-key fileb://PrivateKey.pem
Creare un ingress per generare un bilanciatore di carico Layer-7
Preparare il file di ingress come segue e nominarlo ingress.yaml
. Sostituire il certificato arn e host con il proprio.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: milvus
name: milvus-demo
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/backend-protocol-version: GRPC
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:region:account-id:certificate/certificate-id"
spec:
ingressClassName: alb
rules:
- host: milvus-demo.milvus.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: milvus-demo
port:
number: 19530
Quindi è possibile creare l'Ingress applicando il file al cluster EKS.
kubectl apply -f ingress.yaml
Ora, attendere che AWS imposti il bilanciatore di carico Layer-7. È possibile verificare i progressi eseguendo
kubectl -f ingress.yaml get -w
L'output dovrebbe essere simile al seguente:
NAME CLASS HOSTS ADDRESS PORTS AGE
milvus-demo alb milvus-demo.milvus.io k8s-milvus-milvusde-2f72215c02-778371620.us-east-2.elb.amazonaws.com 80 10m
Una volta visualizzato un indirizzo nel campo ADDRESS, il bilanciatore di carico Layer-7 è pronto per l'uso.
Verifica della connessione attraverso il bilanciatore di carico Layer-7
Questa guida utilizza PyMilvus per verificare la connessione al servizio Milvus dietro il bilanciatore di carico Layer-7 appena creato. Per i passi dettagliati, leggete qui.
from pymilvus import (
connections,
utility,
FieldSchema,
CollectionSchema,
DataType,
Collection,
)
connections.connect("default", host="k8s-milvus-milvusde-2f72215c02-778371620.us-east-2.elb.amazonaws.com", port="443", secure=True, server_name="milvus-demo.milvus.io")
- L'host e il nome_del_server devono essere sostituiti con i propri.
- Se si è impostato un record DNS per mappare il nome di dominio all'alb, sostituire l'host con il nome di dominio e omettere nome_server.