基于 阿里云 ACK 搭建开源向量数据库 Milvus

简介: 生成式 AI(Generative AI)引爆了向量数据库(Vector Database)市场,基于大模型的各种应用场景会需要使用到向量数据库。其中,Milvus 是一个高度灵活、可靠且速度极快的云原生开源向量数据库。它为 embedding 相似性搜索和 AI 应用程序提供支持,并努力使每个组织都可以访问向量数据库。 Milvus 可以存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的十亿级别以上的 embedding 向量。本文介绍在阿里云ACK上部署Milvus并且通过attu访问的步骤。

一、准备资源

可先参考 Environment Checklist for Milvus Milvus on Kubernetes 在云上购买和配置相关的资源。

本人购买的云资源是:

ACK托管版

K8S版本 1.24.6-aliyun.1

3台 32vCPU 128GB ecs.g6.8xlarge

MAC电脑客户端(已安装kubectl工具)

二、集群创建:

登陆ACK控制台:https://cs.console.aliyun.com/?spm=5176.181001.J_5253785160.4.38a84e26LzhVIl#/k8s/cluster/list

image.png

本集群基于Terway网络构建

image.png

为了便于集群访问公网,以及公网访问集群API Server,集群开通时候默认勾选了SNAT和Eip暴露公网api server

image.png

集群Worker节点按照实际需求选用规格配比,本次选用g6实例,配置essd云盘

image.png

由于,前置步骤为集群开启了SNAT,本次不针对每个Worker开启公网地址,如果额外有需求要每个worker绑定公网IP,可以这里开启,或者后续单独给每台worker绑定eip

image.png

后置步骤,按照默认开通集群。


二、连接刚刚创建的ACK集群

选用MAC电脑安装kubectl工具(参考安装指导)

https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/

安装完毕后,创建$HOME/.kube目录下的config

image.png

进去刚刚创建好的集群,粘贴公网访问凭证到config中,也可以生成临时的凭证

image.png

上述操作完毕后,

kubectl get namespace

测试连通性

image.png

详细的操作指导同样可以参考官网链接:

https://help.aliyun.com/document_detail/86494.html?spm=a2c4g.86737.0.0.7ba65143wCxNEb

集群创建完毕后,为了后面部署Milvus,创建一个存储类,并且设置为默认,供后面Milvus的各组件可以自动创建存储卷

集群进入存储-存储类-创建

image.png

存储类型选用了cloud_essd类型云盘,额外新增了zoneId,设置存储所在区域和worker节点在同一个可用区

image.png

设置上面创建的存储类为默认的存储类

kubectl patch storageclass milvus-beijing -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

其中,红框部分替换为自己创建的存储类的名称

image.png

通过,可以看到设置的存储类已经标识为default

kubectl get sc

image.png

三、部署Milvus数据库

本次部署,需要helm部署方式,详细的可以参考官网文档

https://milvus.io/docs/install_cluster-helm.md

首先,添加 Milvus Helm 仓库并更新。

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

helm repo update

因为我之前部署过,所以这里显示已经存在

image.png

安装Milvus 和Attu

helm install my-release milvus/milvus --set attu.enabled=true

安装完毕后显示如下:

image.png

验证下pod的拉起情况,发现etcd的状态是pending状态,不正常,原因是官方设置etcd的PVC总量是10G,而阿里云essd,需要至少20G才能初始化

kubectl get pods

image.png

删掉重建,设置存储容量大于等于20G

image.png

image.png

再根据kubectl get pods刷新,发现所有的Pod都是runnng状态了,两个job类型的pod是completed状态;也可以在控制台的负载界面观察pod的情况(工作负载-有状态,工作负载-无状态)

image.png

四、优化Milvus配置

为了可以公网访问attu工具,需要将attu工具开通公网,控制台登陆集群后,网络-服务,找到my-release-milvus-attu服务

image.png

更新服务的类型由虚拟集群ip为节点负载均衡(公网)

image.png

image.png

更新完毕后,会新增外部端点访问,可以通过浏览器访问attu的登陆界面

image.png

image.png

image.png

如果需要公网访问集群,也可以通过上述方法,将Milvus更新公网端口

image.png

如果针对不同的数据量,可以使用Milvus Sizing Tool去计算Milvus各组件建议的资源配比;通过milvus_resources.yaml 刷新集群组件资源配置

https://milvus.io/tools/sizing/

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
人工智能 关系型数据库 OLAP
聚光灯已就位!阿里云瑶池数据库邀你征战Cursor首届实战征文大赛
阿里云AnalyticDB携手Cursor中文社区,正式发起首届实战征文大赛!我们诚邀开发者融合Cursor的智能编程能力与AnalyticDB PostgreSQL提供的Supabase服务进行项目开发,让优秀项目被专家看见、被机遇拥抱!
|
6月前
|
存储 NoSQL Redis
阿里云高性能数据库Tair(兼容 Redis)收费价格,稳定可靠成本低
阿里云高性能云数据库Tair兼容Redis,提供Redis开源版和Tair企业版,支持多种存储介质与灵活扩展,适用于高并发场景。Tair具备亚毫秒级稳定延迟,保障业务连续性。价格方面,Redis开源版年费从72元起,Tair企业版年费从1224元起,具体费用根据配置不同有所变化。
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1134 152
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
869 156
|
6月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
6月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
708 2
|
6月前
|
SQL 关系型数据库 MySQL
阿里云的云数据库RDS简介
阿里云关系型数据库RDS(Relational Database Service)是一种安全稳定、高性价比、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供容灾、备份、恢复、监控、迁移等全套解决方案,帮助用户轻松应对数据库运维挑战。RDS具备高可用性、高安全性、轻量运维和弹性伸缩等优势,适用于各类业务场景,助力企业降低成本、提升效率。
|
7月前
|
关系型数据库 MySQL 程序员
从自建MySQL到阿里云RDS:程序员的数据库减负革命
如果你正在为自建MySQL数据库的高成本运维发愁,为凌晨三点的主从同步故障告警而崩溃,为开发团队频繁索要新测试库的要求感到窒息——是时候开启一场数据库的自我救赎了。 程序员更需构建"技术敏锐度+工程落地能力+跨域协作"的三维竞争力,通过创建技术组合形成差异化优势。企业应建立持续学习机制,提供AI沙盒环境促进技术转化。

推荐镜像

更多