Configurer un équilibreur de charge de niveau 7 pour Milvus sur AWS
Comparé à un équilibreur de charge de couche 4, un équilibreur de charge de couche 7 offre des capacités intelligentes d'équilibrage de charge et de mise en cache et constitue un excellent choix pour les services natifs dans le nuage.
Ce guide vous guide dans la configuration d'un équilibreur de charge de couche 7 pour un cluster Milvus fonctionnant déjà derrière un équilibreur de charge de couche 4.
Avant de commencer
Modifier les configurations de Milvus
Ce guide suppose que vous avez déjà déployé un cluster Milvus derrière un équilibreur de charge de niveau 4 sur AWS.
Avant de configurer un équilibreur de charge de couche 7 pour ce cluster Milvus, exécutez la commande suivante pour supprimer l'équilibreur de charge de couche 4.
helm upgrade milvus-demo milvus/milvus -n milvus --set service.type=ClusterIP
Préparer les certificats TLS
TLS nécessite des certificats pour fonctionner. Nous utilisons ACM pour gérer les certificats et devons importer un certificat existant dans ACM. Reportez-vous à la section Importer un certificat. Voici un exemple.
# 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
Créer un fichier d'entrée pour générer un équilibreur de charge de couche 7
Préparez le fichier d'entrée comme suit et nommez-le ingress.yaml
. Remplacez l'arn et l'hôte du certificat par les vôtres.
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
Vous pouvez ensuite créer l'Ingress en appliquant le fichier à votre cluster EKS.
kubectl apply -f ingress.yaml
Attendez maintenant qu'AWS configure l'équilibreur de charge Layer-7. Vous pouvez vérifier la progression en exécutant
kubectl -f ingress.yaml get -w
La sortie devrait être similaire à ce qui suit :
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
Une fois qu'une adresse s'affiche dans le champ ADDRESS, l'équilibreur de charge Layer-7 est prêt à être utilisé.
Vérifier la connexion via l'équilibreur de charge Layer-7
Ce guide utilise PyMilvus pour vérifier la connexion au service Milvus derrière l'équilibreur de charge Layer-7 que nous venons de créer. Pour des étapes détaillées, lisez ceci.
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'hôte et le nom du serveur doivent être remplacés par les vôtres.
- Si vous avez configuré un enregistrement DNS pour faire correspondre le nom de domaine à l'alb, remplacez l'hôte par le nom de domaine et omettez nom_serveur.