AWS에서 Milvus용 레이어 7 로드 밸런서 설정하기
레이어 4 로드 밸런서와 비교할 때, 레이어 7 로드 밸런서는 스마트한 로드 밸런싱 및 캐싱 기능을 제공하며 클라우드 네이티브 서비스에 적합한 선택입니다.
이 가이드에서는 이미 레이어 4 로드 밸런서 뒤에서 실행 중인 Milvus 클러스터를 위한 레이어 7 로드 밸런서 설정 방법을 안내합니다.
시작하기 전
Milvus 구성 조정
이 가이드에서는 AWS의 Layer-4 로드 밸런서 뒤에 Milvus 클러스터를 이미 배포했다고 가정합니다.
이 Milvus 클러스터에 대해 레이어 7 로드 밸런서를 설정하기 전에 다음 명령을 실행하여 레이어 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.yaml
으로 지정합니다. 인증서 arn과 호스트를 자신의 인증서로 바꾸세요.
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
그런 다음 파일을 EKS 클러스터에 적용하여 인그레스를 생성할 수 있습니다.
kubectl apply -f ingress.yaml
이제 AWS가 레이어 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
주소 필드에 주소가 표시되면 Layer-7 로드 밸런서를 사용할 준비가 된 것입니다.
Layer-7 로드 밸런서를 통한 연결 확인
이 가이드에서는 PyMilvus를 사용하여 방금 만든 Layer-7 로드 밸런서 뒤에 있는 Milvus 서비스에 대한 연결을 확인합니다. 자세한 단계는 여기를 참조하세요.
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")
- 호스트와 server_name은 사용자 이름으로 바꿔야 합니다.
- 도메인 네임을 앨범에 매핑하도록 DNS 레코드를 설정한 경우 호스트는 도메인 네임으로 바꾸고 server_name은 생략하세요.