Einrichten eines Layer-7-Load-Balancers für Milvus auf AWS
Im Vergleich zu einem Layer-4-Load-Balancer bietet ein Layer-7-Load-Balancer intelligente Load-Balancing- und Caching-Funktionen und ist eine gute Wahl für Cloud-native Services.
Diese Anleitung führt Sie durch die Einrichtung eines Layer-7 Load Balancers für einen Milvus-Cluster, der bereits hinter einem Layer-4 Load Balancer läuft.
Bevor Sie beginnen
Anpassen der Milvus-Konfigurationen
In dieser Anleitung wird davon ausgegangen, dass Sie bereits einen Milvus-Cluster hinter einem Layer-4-Load-Balancer auf AWS bereitgestellt haben.
Bevor Sie einen Layer-7-Loadbalancer für diesen Milvus-Cluster einrichten, führen Sie den folgenden Befehl aus, um den Layer-4-Loadbalancer zu entfernen.
helm upgrade milvus-demo milvus/milvus -n milvus --set service.type=ClusterIP
TLS-Zertifikate vorbereiten
TLS erfordert Zertifikate, um zu funktionieren. Wir verwenden ACM zur Verwaltung von Zertifikaten und müssen ein vorhandenes Zertifikat in ACM importieren. Siehe Zertifikat importieren. Im Folgenden finden Sie ein Beispiel.
# 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
Erstellen Sie einen Ingress, um einen Layer-7 Load Balancer zu erzeugen
Bereiten Sie die Ingress-Datei wie folgt vor und nennen Sie sie ingress.yaml
. Ersetzen Sie das Zertifikat arn und host durch Ihr eigenes.
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
Dann können Sie den Ingress erstellen, indem Sie die Datei auf Ihren EKS-Cluster anwenden.
kubectl apply -f ingress.yaml
Warten Sie nun darauf, dass AWS den Layer-7-Loadbalancer einrichtet. Sie können den Fortschritt überprüfen, indem Sie
kubectl -f ingress.yaml get -w
Die Ausgabe sollte in etwa so aussehen wie die folgende:
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
Sobald eine Adresse im Feld ADDRESS angezeigt wird, ist der Layer-7-Load-Balancer einsatzbereit.
Überprüfen Sie die Verbindung durch den Layer-7-Load-Balancer
In dieser Anleitung wird PyMilvus verwendet, um die Verbindung zum Milvus-Dienst hinter dem soeben erstellten Layer-7-Load-Balancer zu überprüfen. Für detaillierte Schritte, lesen Sie dies.
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")
- Den host und server_name sollten Sie durch Ihren eigenen ersetzen.
- Wenn Sie einen DNS-Eintrag eingerichtet haben, um den Domänennamen der alb zuzuordnen, ersetzen Sie host durch den Domänennamen und lassen Sie server_name weg.