Настройка Milvus на Amazon EKS
Milvus изначально разработан для поддержки Kubernetes и может быть легко развернут в AWS. Чтобы создать надежный, эластичный кластер векторной базы данных Milvus, мы можем использовать Amazon Elastic Kubernetes Service (Amazon EKS) в качестве управляемого Kubernetes, Amazon S3 в качестве Object Storage, Amazon Managed Streaming for Apache Kafka (Amazon MSK) в качестве Message Storage и Amazon Elastic Load Balancing (Amazon ELB) в качестве Load Balancer.
Обзор архитектуры Milvus
Архитектура Milvus
EKS — это управляемый сервис Kubernetes от Amazon, который работает на EC2 или в serverless-режиме на Fargate. Он идеально подходит для организаций, уже использующих Kubernetes on-premises, позволяя им переносить свои развертывания в AWS с минимальными изменениями.
В этом блоге для развертывания используется EC2, поскольку Fargate не может обрабатывать persistent volume claims (PVCs), необходимые для зависимостей Milvus, таких как etcd.
Мы предоставим пошаговое руководство по развертыванию кластера Milvus с использованием EKS и других сервисов. Более подробная версия этого блога доступна здесь.
Предварительные требования
AWS CLI
Установите AWS CLI на ваш локальный PC/Mac или экземпляр Amazon EC2, который будет служить вашей конечной точкой для операций, описанных в этом документе. Если вы используете Amazon Linux 2 или Amazon Linux 2023, инструменты AWS CLI установлены по умолчанию. См. Как установить AWS CLI.
Ниже приведен снимок экрана, подтверждающий, что AWS CLI установлен.
% which aws
/usr/local/bin/aws
% aws --version
aws-cli/2.15.34 Python/3.11.8 Darwin/23.5.0 exe/x86_64 prompt/off
Инструменты EKS: Kubectl, eksctl, helm
Установите инструменты EKS на предпочитаемое endpoint-устройство, включая:
См. Начало работы с EKS для подробных шагов установки. Ниже приведен снимок экрана, подтверждающий установки и версии на ноутбуке Mac M2 с использованием z shell:
% kubectl version
Client Version: v1.30.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
# Download eksctl
ARCH=arm64
PLATFORM=$(uname -s)_$ARCH
curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"
tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz
sudo mv /tmp/eksctl /usr/local/bin
% eksctl version
0.185.0
% helm list --all-namespaces
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
my-milvus default 1 2024-07-09 16:00:14.117945 -0700 PDT deployed milvus-4.1.34 2.4.5
Создайте Amazon S3 Bucket
Ознакомьтесь с правилами именования Bucket и соблюдайте их при именовании вашего AWS S3 bucket с помощью AWS console.
Создать Amazon S3 Bucket
Создайте KMS, Customer managed key.
Ключ KMS не может быть AWS-managed key. Это должен быть Customer-managed key. После его создания вам нужно будет подождать около 10 минут, пока ключ станет активным, прежде чем вы сможете использовать его в AWS Secrets Manager. Используя AWS console, перейдите в KMS > Customer managed keys.
Создайте KMS, Customer managed key. .png
Создайте пользовательский секрет в AWS Secrets Manager.
Убедитесь, что вы подождали около 10 минут после создания вашего KMS Customer managed key. Теперь создайте новый секрет AWS Secrets Manager. Используя AWS console.
Выберите другой тип секрета для типа секрета.
Переключите редактор пар ключ/значение в режим Plaintext. Введите JSON с ключами, точно соответствующими “username” и “password”.
Имя секрета должно начинаться с AmazonMSK_.
Ключ шифрования должен быть клиентским ключом KMS, а не ключом, управляемым AWS.
Create a custom secret in the AWS Secrets Manager. .png
Создайте экземпляр MSK
Далее используйте консоль AWS, чтобы создать кластер Amazon MSK с включенной функцией Kafka autoCreateTopics и безопасностью SASL/SCRAM.
Рекомендации при создании MSK:
Последняя стабильная версия Milvus (v2.4.x) зависит от функции Kafka autoCreateTopics, поэтому при создании MSK необходимо использовать пользовательскую конфигурацию, а также изменить свойство auto.create.topics.enable со значения по умолчанию false на true.
Кроме того, чтобы увеличить пропускную способность сообщений MSK, рекомендуется увеличить значения message.max.bytes и replica.fetch.max.bytes.
auto.create.topics.enable=true
message.max.bytes=10485880
replica.fetch.max.bytes=20971760
Подробности см. в разделе Пользовательские конфигурации MSK.
Create a MSK Instance.png
Milvus не поддерживает аутентификацию MSK на основе IAM role, поэтому при создании MSK включите параметр аутентификации SASL/SCRAM в конфигурации безопасности и настройте имя пользователя и пароль в AWS Secrets Manager. Подробности см. в разделе Аутентификация учетными данными для входа с помощью AWS Secrets Manager.
Security group для MSK должна разрешать доступ из security group или диапазона IP-адресов кластера EKS.
security settings
Подождите ~15 минут, пока экземпляр MSK будет подготовлен. Когда он будет готов, нажмите на него, и вы сможете связать пользовательский секрет AWS Secrets Manager, созданный ранее.
AWS Secrets Manager
Создайте кластер Amazon EKS
Существует много способов создать кластер EKS, например через консоль, CloudFormation или eksctl. Обратитесь к документу Настройка для использования Amazon EKS.
В этой публикации будет использоваться eksctl. eksctl — это простой инструмент командной строки для создания кластеров Kubernetes в Amazon EKS и управления ими. eksctl предоставляет самый быстрый и простой способ создать новый кластер с узлами для Amazon EKS. Для получения дополнительной информации обратитесь к официальной документации eksctl.
Шаг 1: Создайте файл eks_cluster.yaml.
Пример файла .yaml см. в документации Milvus.
Замените имя кластера на имя вашего кластера,
Замените region-code на регион AWS, в котором вы хотите создать кластер.
Замените private-subnet-idx на ваши частные подсети. Примечание: Этот файл конфигурации создает кластер EKS в существующей VPC, указывая частные подсети. Вы также можете удалить конфигурацию VPC и подсетей, чтобы eksctl автоматически создал новую VPC.
**Шаг 2: Выполните команду eksctl create cluster -f eks_cluster.yaml, чтобы создать кластер EKS. **
create cluster -f eks_cluster.yaml
Обратитесь к Amazon EKS Quickstart. Эта команда создаст следующие ресурсы:
Кластер EKS с указанной версией.
Managed node group с 3 экземплярами EC2 m6i.2xlarge.
Поставщик удостоверений IAM OIDC и ServiceAccount с именем aws-load-balancer-controller будут использованы позже при установке AWS Load Balancer Controller.
Пространство имен milvus и ServiceAccount milvus-s3-access-sa в этом пространстве имен. Это будет использоваться позже при настройке S3 в качестве объектного хранилища для Milvus.
Примечание: Для простоты milvus-s3-access-sa предоставляются полные разрешения доступа к S3. В производственных развертываниях рекомендуется следовать принципу минимальных привилегий и предоставлять доступ только к конкретному бакету S3, используемому для Milvus.
- Несколько add-on, где vpc-cni, coredns, kube-proxy являются основными add-on, необходимыми для EKS. aws-ebs-csi-driver — это драйвер AWS EBS CSI, который позволяет кластерам EKS управлять жизненным циклом томов Amazon EBS.
% eksctl create cluster -f eks_cluster.yaml
2024-07-10 17:45:32 [ℹ] eksctl version 0.185.0
2024-07-10 17:45:32 [ℹ] using region us-west-2
2024-07-10 17:45:32 [✔] using existing VPC (vpc-84c5b3fc) and
…
2024-07-10 17:45:32 [ℹ] building cluster stack "eksctl-MilvusEKSTest-cluster"
2024-07-10 17:45:33 [ℹ] deploying stack
…
Дождитесь завершения создания кластера. После завершения вы должны увидеть ответ, похожий на следующий вывод:
% EKS cluster "MilvusEKSTest" in "us-west-2" region is ready
После создания кластера вы можете просмотреть узлы, выполнив:
% kubectl get nodes -A -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ip-172-31-22-240.us-west-2.compute.internal Ready <none> 11m v1.28.8-eks-ae9a62a 172.31.22.240 52.40.226.172 Amazon Linux 2 5.10.219-208.866.amzn2.x86_64 containerd://1.7.11
ip-172-31-31-71.us-west-2.compute.internal Ready <none> 11m v1.28.8-eks-ae9a62a 172.31.31.71 35.165.133.62 Amazon Linux 2 5.10.219-208.866.amzn2.x86_64 containerd://1.7.11
ip-172-31-33-44.us-west-2.compute.internal Ready <none> 11m v1.28.8-eks-ae9a62a 172.31.33.44 35.91.5.162 Amazon Linux 2 5.10.219-208.866.amzn2.x86_64 containerd://1.7.11
Шаг 3: Создайте ebs-sc StorageClass, настроенный с GP3 в качестве типа хранилища, и сделайте его StorageClass по умолчанию.
Milvus использует etcd в качестве Meta Storage, и ему нужен этот StorageClass для создания и управления PVC.
- Выполните эту команду cat.
% cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ebs-sc
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
type: gp3
EOF
storageclass.storage.k8s.io/ebs-sc created
- После создания выполните команду patch, чтобы сделать этот StorageClass используемым по умолчанию.
% kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
storageclass.storage.k8s.io/gp2 patched
- Проверьте, что storage class был настроен правильно.
% kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
ebs-sc ebs.csi.aws.com Delete WaitForFirstConsumer false 6m39s
gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer false 44m
Шаг 4: Установите AWS Load Balancer Controller
Это будет использоваться позже для Milvus Service и Attu Ingress. Обратитесь к официальным инструкциям EKS Load Balancer Controller.
Добавьте репозиторий eks-charts и обновите его.
% helm repo add eks https://aws.github.io/eks-charts
"eks" has been added to your repositories
% helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "eks" chart repository
...Successfully got an update from the "zilliztech" chart repository
...Successfully got an update from the "milvus" chart repository
Update Complete. ⎈Happy Helming!⎈
Установите AWS Load Balancer Controller. Замените cluster-name именем вашего кластера. ServiceAccount с именем aws-load-balancer-controller уже был создан при создании кластера EKS.
% helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=MilvusEKSTest \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller
NAME: aws-load-balancer-controller
LAST DEPLOYED: Wed Jul 10 19:00:34 2024
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
AWS Load Balancer controller installed!
Проверьте, был ли контроллер успешно установлен. Вывод должен выглядеть так:
% kubectl get deployment -n kube-system aws-load-balancer-controller
NAME READY UP-TO-DATE AVAILABLE AGE
aws-load-balancer-controller 2/2 2 2 88s
Развертывание кластера Milvus в Amazon EKS
Milvus поддерживает несколько методов развертывания, таких как Operator и Helm. Использовать Operator проще, но Helm более прямолинеен и гибок. Поэтому для развертывания мы используем Helm.
Вы можете настраивать конфигурацию через значения при развертывании Milvus с файлом milvus_helm.yaml.
По умолчанию Milvus создает внутрикластерные minio и pulsar в качестве Object Storage и Message Storage соответственно. Мы внесем некоторые изменения в конфигурацию, чтобы сделать ее более подходящей для production.
Шаг 1: Добавьте репозиторий Milvus Helm и обновите его.
% helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
"milvus" already exists with the same configuration, skipping
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "eks" chart repository
...Successfully got an update from the "zilliztech" chart repository
...Successfully got an update from the "milvus" chart repository
Update Complete. ⎈Happy Helming!⎈
Шаг 2: Создайте файл milvus_cluster.yaml.
Следующий код настраивает установку Milvus, например конфигурирует Amazon S3 в качестве объектного хранилища, Amazon MSK в качестве очереди сообщений и т. д. Мы предоставим подробные объяснения и рекомендации по конфигурации после блока кода.
#####################################
# Section 1
#
# Configure S3 as the Object Storage
#####################################
# Service account
# - this service account are used by External S3 access
serviceAccount:
create: false
name: milvus-s3-access-sa
# Close in-cluster minio
minio:
enabled: false
# External S3
# - these configs are only used when `externalS3.enabled` is true
externalS3:
enabled: true
host: "s3.<region-code>.amazonaws.com"
port: "443"
useSSL: true
bucketName: "<bucket-name>"
rootPath: "<root-path>"
useIAM: true
cloudProvider: "aws"
iamEndpoint: ""
#####################################
# Section 2
#
# Configure MSK as the Message Storage
#####################################
# Close in-cluster pulsar
pulsar:
enabled: false
# Внешний kafka
# - эти конфигурации используются только когда `externalKafka.enabled` имеет значение true
externalKafka:
enabled: true
brokerList: "<broker-list>"
securityProtocol: SASL_SSL
sasl:
mechanisms: SCRAM-SHA-512
username: "<username>"
password: "<password>"
#####################################
# Раздел 3
#
# Откройте сервис Milvus для доступа извне кластера (сервис LoadBalancer).
# или получите к нему доступ изнутри кластера (сервис ClusterIP). Задайте тип сервиса и порт для его обслуживания.
#####################################
service:
type: LoadBalancer
port: 19530
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: external #AWS Load Balancer Controller обслуживает сервисы, у которых есть эта аннотация
service.beta.kubernetes.io/aws-load-balancer-name : milvus-service #Пользовательское имя, заданное для AWS Network Load Balancer
#service.beta.kubernetes.io/aws-load-balancer-scheme: internal # internal или internet-facing, позже позволяя публичный доступ через интернет
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing" #Размещает балансировщик нагрузки в публичных подсетях
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip #IP-адреса Pod должны использоваться как целевые IP-адреса (а не IP-адреса узлов)
#####################################
# Раздел 4
#
# Установка Attu — GUI для управления Milvus
#####################################
attu:
enabled: true
name: attu
service:
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: external
service.beta.kubernetes.io/aws-load-balancer-name : milvus-attu-service
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
labels: {}
type: LoadBalancer
port: 3000
ingress:
enabled: false
#####################################
# Раздел 5
#
# HA-развертывание основных компонентов Milvus
#####################################
rootCoordinator:
replicas: 2
activeStandby:
enabled: true # Включите active-standby, когда задаете несколько реплик для root coordinator
resources:
limits:
cpu: 1
memory: 2Gi
indexCoordinator:
replicas: 2
activeStandby:
enabled: true # Включите active-standby, когда задаете несколько реплик для index coordinator
resources:
limits:
cpu: "0.5"
memory: 0.5Gi
queryCoordinator:
replicas: 2
activeStandby:
enabled: true # Включите active-standby, когда задаете несколько реплик для query coordinator
resources:
limits:
cpu: "0.5"
memory: 0.5Gi
dataCoordinator:
replicas: 2
activeStandby:
enabled: true # Включите active-standby, когда задаете несколько реплик для data coordinator
resources:
limits:
cpu: "0.5"
memory: 0.5Gi
proxy:
replicas: 2
resources:
limits:
cpu: 1
memory: 4Gi
#####################################
# Раздел 6
#
# Распределение ресурсов Milvus
#####################################
queryNode:
replicas: 1
resources:
limits:
cpu: 2
memory: 8Gi
dataNode:
replicas: 1
resources:
limits:
cpu: 1
memory: 4Gi
indexNode:
replicas: 1
resources:
limits:
cpu: 4
memory: 8Gi
Код разделен на шесть разделов. Следуйте следующим инструкциям, чтобы изменить соответствующие конфигурации.
Раздел 1: Настройте S3 как хранилище объектов. serviceAccount предоставляет Milvus доступ к S3 (здесь это milvus-s3-access-sa, который уже был создан при создании кластера EKS).
Замените <region-code> на регион AWS, в котором вы создали кластер.
Замените <bucket-name> на имя бакета S3, а <root-path> — на префикс бакета S3 (может быть пустым).
Раздел 2: Настройте MSK как хранилище сообщений.
- Замените <broker-list> на конечную точку MSK для типа аутентификации SASL/SCRAM,
и — на имя пользователя и пароль MSK. Вы можете получить <broker-list> из информации о клиенте MSK, как показано на изображении.
- Замените <broker-list> на конечную точку MSK для типа аутентификации SASL/SCRAM,
view client information.jpg
Раздел 3: Этот раздел открывает конечную точку сервиса Milvus для доступа извне кластера. По умолчанию конечная точка Milvus использует сервис типа ClusterIP, который доступен только внутри кластера EKS. При необходимости вы можете изменить его на тип LoadBalancer, чтобы разрешить доступ извне кластера EKS. Сервис типа LoadBalancer использует Amazon NLB в качестве балансировщика нагрузки.
Согласно лучшим практикам безопасности, aws-load-balancer-scheme здесь по умолчанию настроен в режиме internal, что означает, что разрешен только доступ к Milvus из интрасети. Если вам действительно нужен доступ к Milvus через Интернет, необходимо изменить internal на internet-facing. Нажмите, чтобы посмотреть инструкции по настройке NLB.
- Измените строку на:
aws-load-balancer-scheme: internet-facing
- Измените строку на:
# service.beta.kubernetes.io/aws-load-balancer-scheme: internal
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
Раздел 4: Установите и настройте Attu, инструмент администрирования Milvus с открытым исходным кодом. У него есть интуитивно понятный графический интерфейс, который позволяет легко взаимодействовать с базой данных. Мы включаем Attu, настраиваем ingress с использованием AWS ALB и задаем для него тип internet-facing, чтобы к Attu можно было получить доступ через Интернет.
- Нажмите здесь, чтобы открыть руководство по настройке ALB.
Раздел 5: Включите HA-развертывание основных компонентов Milvus. Согласно архитектуре, мы уже знаем, что Milvus содержит несколько независимых и слабо связанных компонентов. Например, служба координатора выступает в качестве уровня управления, выполняя координацию для компонентов Root, Query, Data и Index. Proxy на уровне доступа служит конечной точкой доступа к базе данных. По умолчанию эти компоненты имеют только 1 реплику pod. Для повышения доступности Milvus особенно важно развернуть несколько реплик этих сервисных компонентов.
- Обратите внимание, что компоненты координаторов Root, Query, Data и Index должны быть развернуты в нескольких репликах с включенной опцией activeStandby.
Раздел 6: Настройте распределение ресурсов для компонентов Milvus в соответствии с требованиями ваших рабочих нагрузок. На веб-сайте Milvus также доступен sizing tool, который генерирует рекомендации по конфигурации на основе объема данных, размерности векторов, типов индексов и т. д. Он также может в один клик создать файл конфигурации Helm.
- Следующая конфигурация является рекомендацией, которую инструмент дал для 1 миллиона векторов размерности 1024 и типа индекса HNSW.
Используйте Helm для создания Milvus (развернутого в namespace milvus).
- Обратите внимание, что demo-milvus можно заменить пользовательским именем.
% helm install demo-milvus milvus/milvus -n milvus -f milvus_cluster.yaml
W0710 19:35:08.789610 64030 warnings.go:70] annotation "kubernetes.io/ingress.class" is deprecated, please use 'spec.ingressClassName' instead
NAME: demo-milvus
LAST DEPLOYED: Wed Jul 10 19:35:06 2024
NAMESPACE: milvus
STATUS: deployed
REVISION: 1
TEST SUITE: None
Выполните следующую команду, чтобы проверить статус развертывания.
% kubectl get deployment -n milvus
NAME READY UP-TO-DATE AVAILABLE AGE
demo-milvus-attu 1/1 1 1 5m27s
demo-milvus-datacoord 2/2 2 2 5m27s
demo-milvus-datanode 1/1 1 1 5m27s
demo-milvus-indexcoord 2/2 2 2 5m27s
demo-milvus-indexnode 1/1 1 1 5m27s
demo-milvus-proxy 2/2 2 2 5m27s
demo-milvus-querycoord 2/2 2 2 5m27s
demo-milvus-querynode 1/1 1 1 5m27s
demo-milvus-rootcoord 2/2 2 2 5m27s
Вывод выше показывает, что все компоненты Milvus AVAILABLE, а для координационных компонентов включено несколько реплик.
Доступ к конечным точкам Milvus и управление ими
На данный момент мы успешно развернули базу данных Milvus. Теперь мы можем получить доступ к Milvus через конечные точки. Milvus предоставляет конечные точки через сервисы Kubernetes. Attu предоставляет конечные точки через Kubernetes Ingress.
Доступ к конечным точкам Milvus с использованием сервисов Kubernetes
Выполните следующую команду, чтобы получить конечные точки сервиса:
% kubectl get svc -n milvus
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demo-etcd ClusterIP 172.20.103.138 <none> 2379/TCP,2380/TCP 62m
demo-etcd-headless ClusterIP None <none> 2379/TCP,2380/TCP 62m
demo-milvus LoadBalancer 172.20.219.33 milvus-nlb-xxxx.elb.us-west-2.amazonaws.com 19530:31201/TCP,9091:31088/TCP 62m
demo-milvus-datacoord ClusterIP 172.20.214.106 <none> 13333/TCP,9091/TCP 62m
demo-milvus-datanode ClusterIP None <none> 9091/TCP 62m
demo-milvus-indexcoord ClusterIP 172.20.106.51 <none> 31000/TCP,9091/TCP 62m
demo-milvus-indexnode ClusterIP None <none> 9091/TCP 62m
demo-milvus-querycoord ClusterIP 172.20.136.213 <none> 19531/TCP,9091/TCP 62m
demo-milvus-querynode ClusterIP None <none> 9091/TCP 62m
demo-milvus-rootcoord ClusterIP 172.20.173.98 <none> 53100/TCP,9091/TCP 62m
Вы можете увидеть несколько сервисов. Milvus поддерживает два порта: порт 19530 и порт 9091:
Порт 19530 предназначен для gRPC и RESTful API. Это порт по умолчанию при подключении к серверу Milvus с помощью различных Milvus SDK или HTTP-клиентов.
Порт 9091 — это порт управления для сбора метрик, профилирования pprof и проверок работоспособности внутри Kubernetes.
Среди них сервис demo-milvus предоставляет конечную точку доступа к базе данных, которая используется для установления соединения с клиентами. Доступ к конечной точке базы данных осуществляется через NLB как балансировщик нагрузки сервиса. Вы можете получить конечную точку сервиса NLB из столбца EXTERNAL-IP.
Обратите внимание на столбец NLB EXTERNAL-IP, который в данном случае выглядит так:
milvus-nlb-xxxx.elb.us-west-2.amazonaws.com 19530:31201/TCP,9091:31088/TCP
Доступ к конечным точкам Milvus с использованием Attu
Когда мы устанавливали Milvus, мы также установили Attu — инструмент администрирования для управления Milvus. Выполните следующую команду, чтобы получить конечную точку:
% kubectl get ingress -n milvus
NAME CLASS HOSTS ADDRESS PORTS AGE
demo-milvus-attu <none> * k8s-attu-xxxx.us-west-2.elb.amazonaws.com 80 27s
Вы должны увидеть ingress с именем demo-milvus-attu, где столбец ADDRESS является внешним URL.
Откройте адрес Ingress в браузере и увидите следующую страницу.
Нажмите Connect, чтобы войти.
интерфейс attu
После входа вы можете управлять базами данных Milvus через:
управление Milvus с помощью Attu
Протестируйте векторную базу данных Milvus
Вы можете использовать официальный пример кода Milvus, чтобы проверить, работает ли база данных Milvus правильно.
- Шаг 1: Напрямую скачайте пример кода hello_milvus.py.
% wget https://raw.githubusercontent.com/milvus-io/pymilvus/master/examples/hello_milvus.py
- Шаг 2: Измените host в примере кода на endpoint Milvus Kubernetes, который мы получили ранее.
print(fmt.format("start connecting to Milvus"))
connections.connect(
"default",
host="milvus-nlb-xxx.elb.us-west-2.amazonaws.com",
port="19530")
- Шаг 3: Запустите код. Если возвращается следующий результат, Milvus работает нормально.
% python3 hello_milvus.py
=== start connecting to Milvus ===
Does collection hello_milvus exist in Milvus: False
=== Create collection `hello_milvus` ===
=== Start inserting entities ===
Number of entities in Milvus: 3000
=== Start Creating index IVF_FLAT ===
=== Start loading ===
Теперь вы успешно настроили Milvus на EKS! ПОЗДРАВЛЯЕМ!!!
Заключение
В этой публикации была представлена векторная база данных с открытым исходным кодом Milvus и объяснено, как развернуть ее на AWS с использованием управляемых сервисов, таких как Amazon EKS, S3, MSK и ELB, для достижения большей эластичности и надежности.
Ресурсы
Блог AWS Milvus EKS: https://aws.amazon.com/cn/blogs/china/build-open-source-vector-database-milvus-based-on-amazon-eks/
Руководство Milvus EKS: https://milvus.io/docs/eks.md
Руководство по настройке Amazon EKS: https://docs.aws.amazon.com/eks/latest/userguide/setting-up.html
Руководство пользователя Amazon EKS: https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html
Официальный веб-сайт Milvus: https://milvus.io/
Milvus Github: https://github.com/milvus-io/milvus
Официальный веб-сайт eksctl: https://eksctl.io/
YAML-файлы, которые понадобятся для установки:
Файл eks_cluster.yaml: https://aws.amazon.com/cn/blogs/china/build-open-source-vector-database-milvus-based-on-amazon-eks/
Файл milvus_helm.yaml: https://raw.githubusercontent.com/milvus-io/milvus-helm/master/charts/milvus/values.yaml
Файл milvus_cluster.yaml: скопируйте/вставьте из этого блога.
Читать далее

A Few Notes from Databricks Data + AI Summit 2026: Why the Data Layer Matters Again
James Luan shares notes from Databricks Data + AI Summit 2026 on why production AI is pushing the data layer back to the center of infrastructure.

What Is a Vector Lakebase?
A Vector Lakebase is a unified, lake-native data architecture for AI that combines vector-database-grade serving with open lake storage, reusable lake-level indexes, and a shared semantic layer.

Zilliz Cloud Now Available in AWS Asia Pacific (Seoul)
Zilliz Cloud is now available in AWS Seoul — low-latency vector search, in-country data residency, and one-step migration for Korean AI teams. 31 regions across 5 clouds.



