Настройка балансировщика нагрузки Layer-7 для Milvus на AWS
По сравнению с балансировщиком нагрузки уровня 4, балансировщик нагрузки уровня 7 предлагает интеллектуальную балансировку нагрузки и возможности кэширования и является отличным выбором для облачных нативных сервисов.
В этом руководстве вы узнаете, как настроить балансировщик нагрузки уровня 7 для кластера Milvus, уже работающего за балансировщиком нагрузки уровня 4.
Перед началом работы
Настройка конфигураций Milvus
В этом руководстве предполагается, что вы уже развернули кластер Milvus за балансировщиком нагрузки Layer-4 на AWS.
Перед настройкой балансировщика нагрузки Layer-7 для этого кластера Milvus выполните следующую команду, чтобы удалить балансировщик нагрузки Layer-4.
helm upgrade milvus-demo milvus/milvus -n milvus --set service.type=ClusterIP
Подготовьте сертификаты TLS
Для работы TLS требуются сертификаты. Мы используем ACM для управления сертификатами, и нам нужно импортировать существующий сертификат в ACM. Обратитесь к разделу Импорт сертификата. Ниже приведен пример.
# 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
Создание входного файла для генерации балансировщика нагрузки уровня 7
Подготовьте файл ingress следующим образом и назовите его ingress.yaml
. Замените arn и host сертификата на свои собственные.
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
Затем вы можете создать Ingress, применив этот файл к кластеру EKS.
kubectl apply -f ingress.yaml
Теперь подождите, пока AWS настроит балансировщик нагрузки Layer-7. Вы можете проверить прогресс, выполнив команду
kubectl -f ingress.yaml get -w
Результат должен быть похож на следующий:
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
Как только в поле ADDRESS появится адрес, балансировщик нагрузки Layer-7 будет готов к использованию.
Проверка соединения через балансировщик нагрузки Layer-7
В этом руководстве используется PyMilvus для проверки соединения с сервисом Milvus за балансировщиком нагрузки Layer-7, который мы только что создали. Подробные шаги описаны здесь.
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")
- Хост и имя_сервера должны быть заменены на ваши собственные.
- Если вы настроили DNS-запись для сопоставления доменного имени с alb, замените host на доменное имя и опустите server_name.