解锁 Amazon EKS 潜力:基于Amazon EKS(Elastic Kubernetes Service)高效搭建 Milvus 开源向量数据库实践指南

在大数据与人工智能快速发展的当下,向量数据库成为了处理非结构化数据以及加速相似性搜索的关键工具。Milvus 作为一款开源的向量数据库,凭借其高效的向量检索能力和对大规模数据的支持,被广泛应用于推荐系统、图像检索、自然语言处理等领域。而 Amazon EKS(Elastic Kubernetes Service)作为 亚马逊云科技 提供的托管式 Kubernetes 服务,能够简化容器化应用的部署与管理。本文将详细介绍如何基于 Amazon EKS 搭建开源向量数据库 Milvus。

在这里插入图片描述


一、前提准备

在本次实践过程中,我们首先需要准备环境。首先进入亚马逊云服务免费体验中心,注册账号:

在这里插入图片描述
在这里插入图片描述

1.1 安装 Amazon CLI ✅

Amazon Command Line Interface(Amazon CLI)是亚马逊提供的一个开源工具,允许用户通过命令行或脚本管理亚马逊云科技服务。它提供了对众多亚马逊云科技服务的访问权限,能够执行诸如创建资源、管理配置等操作。安装 亚马逊云科技CLI 是与亚马逊云科技服务交互的基础,以下是安装步骤:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws configure

执行上述命令后,系统会提示输入亚马逊云科技访问密钥 ID 和秘密访问密钥等信息,这些信息用于认证用户的亚马逊云科技账户,从而允许 CLI 执行相关操作。

1.2 安装 EKS 相关工具 ✅

为了方便地创建和管理 EKS 集群,需要安装以下几个关键工具:

  • eksctl:这是一个简单且功能强大的命令行工具,用于在亚马逊云科技上创建和管理 EKS Kubernetes 集群。它能够自动化许多繁琐的集群配置任务,简化集群的创建、更新和删除过程。安装命令如下:
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
  • kubectl:Kubernetes 的命令行工具,用于与 Kubernetes 集群进行交互。通过 kubectl,用户可以部署应用程序、检查资源状态、管理集群等。安装方法为
curl -LO "https://dl.k8s.io/release/$(curl -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
  • helm:作为 Kubernetes 的包管理工具,它能够简化应用程序的安装和升级过程。在后续安装 Milvus 时,就会用到 helm 来从指定的 Helm 仓库中部署 Milvus 应用。安装步骤如下
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

1.3 创建 Amazon S3 存储桶 ✅

Amazon S3(Simple Storage Service)是亚马逊云科技提供的一种对象存储服务,具有高持久性、高可用性和可扩展性。在搭建 Milvus 时,可将 S3 作为对象存储,用于存储 Milvus 的数据。创建 S3 存储桶的命令如下:

aws s3api create-bucket --bucket milvus-s3-bucket-eks --region us-west-2

⚠️ 请替换 milvus-s3-bucket-eks 为你唯一命名的桶名

1.4 创建 Amazon MSK 实例 ✅

Amazon MSK(Managed Streaming for Apache Kafka)是一项完全托管的服务,兼容 Apache Kafka,用于构建实时流数据管道。在 Milvus 中,可将 MSK 作为消息存储,用于处理数据的异步传输等场景。建议使用亚马逊云科技控制台创建一个 MSK 实例,设置默认配置即可。创建完成后,需要记录下以下关键信息:

  • Bootstrap servers :这是客户端连接到 MSK 集群所需的引导服务器地址,后续在配置 Milvus 时会用到。
  • 安全组 ID :用于控制对 MSK 实例的网络访问权限。
  • 子网 ID :标识了 MSK 实例所在的网络子网。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

二、创建 EKS 集群

有了上述准备工作后,接下来就可以创建 EKS 集群了。以下是创建命令:

eksctl create cluster \
--name milvus-cluster \
--version 1.28 \
--region us-west-2 \
--nodegroup-name milvus-nodes \
--node-type t3.large \
--nodes 3 \
--nodes-min 1 \
--nodes-max 4 \
--managed

在这里插入图片描述

这条命令指定了集群的名称为 milvus-cluster,使用 Kubernetes 版本 1.28,在 us-west-2 区域创建。节点组名为 milvus-nodes,节点类型为 t3.large,初始创建 3 个节点,节点的最小数量为 1,最大数量为 4,并且使用托管节点组,这样可以简化节点的管理和扩展。
在这里插入图片描述


二、部署 Milvus 数据库

2.1 添加 Milvus Helm 仓库

为了方便安装和管理 Milvus,需要先将其 Helm 仓库添加到本地。执行以下命令

helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update

这样就可以从该仓库中获取 Milvus 的 Helm Chart,即 Milvus 的安装包和配置模板。

2.2 配置 S3 作为 Object Storage

在 Milvus 的配置文件 values.yaml 中,增加以下配置以使用之前创建的 S3 存储桶作为对象存储:

external:
  etcd:
    enabled: false
  minio:
    enabled: false
components:
  standalone:
    enabled: false
  cluster:
    enabled: true
s3:
  enabled: true
  bucketName: milvus-s3-bucket-eks
  region: us-west-2
  accessKey: <your-aws-access-key>
  secretKey: <your-aws-secret-key>

2.3 配置 MSK 作为 Message Storage

kafka:
  brokerList: "<your-msk-bootstrap-server>"
  enable: true
  external: true
  type: kafka

<your-aws-access-key><your-aws-secret-key> 替换为实际的亚马逊云科技访问密钥和秘密密钥,以便 Milvus 能够访问 S3 存储桶。

2.4 部署 Milvus

同时,在 values.yaml 中添加以下配置,将之前创建的 MSK 实例作为消息存储:

helm install milvus milvus/milvus -f values.yaml --namespace milvus --create-namespace

<your-msk-bootstrap-server>替换为 MSK 实例的实际 bootstrap 地址。

这条命令会根据指定的 Helm Chart 和配置文件,在 Kubernetes 的 milvus 命名空间(如果不存在则创建)中安装 Milvus 数据库。


三、优化 Milvus 配置

3.1 配置 Milvus 服务可供 EKS 集群外访问

默认情况下,Milvus 的服务只能在 EKS 集群内部访问。为了从集群外部访问 Milvus,需要将 Milvus 的 Service 修改为 LoadBalancer 类型。执行以下命令::

kubectl edit svc milvus-cluster-standalone -n milvus

type: ClusterIP 改为:

type: LoadBalancer

3.2 安装可视化管理工具 Attu

kubectl apply -f https://raw.githubusercontent.com/zilliztech/attu/main/deploy/k8s/attu-deployment.yaml

安装完成后,可以通过绑定域名或使用负载均衡器的外网地址访问 Attu 的 Web 界面,地址为 http://:3000,从而实现对 Milvus 的直观管理和操作。
在这里插入图片描述


亚马逊云科技提供丰富的免费套餐,包括750小时的Amazon EC2计算资源、5GB的Amazon S3存储空间以及750小时的Amazon RDS数据库服务,让您轻松体验云端技术。
在这里插入图片描述

通过以上步骤,我们成功地在 Amazon EKS 上搭建了开源向量数据库 Milvus,并进行了相关的优化配置。这种结合了 亚马逊 云服务和开源数据库的方案,充分利用了 亚马逊 的基础设施优势和 Milvus 的高性能向量检索能力,为处理大规模向量数据提供了强大的支持。在实际应用中,可以根据业务需求进一步调整和优化 Milvus 的配置,例如调整资源分配、优化数据模型等,以实现最佳性能。同时,随着技术的不断发展,Milvus 和 Amazon EKS 也会持续更新和改进,为用户提供额外的特性和功能,让我们共同期待它们在未来的发展中带来更多的惊喜。

友情提示:如果决定不再使用服务的话,记得要在控制台关闭服务,以防超过免费额度产生扣费

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中杯可乐多加冰

请我喝杯可乐吧,我会多加冰!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值