当前位置: 首页 > news >正文

图片查重从设计到实现(2)Milvus安装准备etcd介绍、应用场景及Docker安装配置

etcd作用、应用场景及Docker安装配置

在分布式向量数据库 Milvus 的架构中,etcd 扮演着至关重要的角色。Milvus 用于存储和管理海量向量数据,支持高效的相似性搜索等操作,而其分布式集群的正常运行高度依赖元数据的一致性和可靠性,etcd 正是承担这一关键任务的组件,负责存储 Milvus 集群的元数据,如集合信息、索引配置、分区详情等,确保 Milvus 各节点能协同工作。下面详细介绍 etcd 的相关内容:

一、etcd 的作用

etcd 是一个高可用、强一致性的分布式键值(key-value)存储系统,基于 Raft 一致性算法实现,主要作用如下:

  1. 分布式数据存储:以键值对形式存储数据,支持数据的增删改查,且所有节点数据实时一致,能为分布式系统提供统一的数据存储服务。

  2. 强一致性保证:通过 Raft 算法确保分布式环境下数据的一致性,即所有节点最终会看到相同的数据,这对于存储需要严格一致的关键信息,如集群状态、配置参数等非常重要。

  3. 高可用与容错:支持集群部署(通常为 3/5 节点),单个节点故障不会影响整体服务,系统会自动选举新主节点,保障服务的持续运行。

  4. Watch 机制:支持监听特定键或前缀的变化,当数据更新时能实时通知客户端,这一机制适合配置动态更新、服务发现等场景。在 Milvus 中,这一机制有助于各节点实时获取元数据的变化,保证集群的协同高效。

二、etcd 的应用场景

etcd 因强一致性和高可用特性,在分布式系统中应用广泛,典型场景包括:

  1. 容器编排与集群管理:最典型的是 Kubernetes(K8s),etcd 作为 K8s 的核心组件,用于存储集群的所有状态,如 Pod 配置、节点信息、服务规则等。

  2. 服务发现:在分布式系统中,服务实例的地址、端口等信息可存储在 etcd 中,客户端通过 etcd 动态获取服务地址,替代了传统的静态配置,提高了系统的灵活性和可扩展性。

  3. 配置中心:集中管理分布式应用的配置参数,如数据库地址、限流阈值等,通过 Watch 机制实现配置变更时的实时推送,无需重启服务,提升了系统的维护效率。

  4. 分布式锁:利用 etcd 的原子操作(如 Compare-and-Swap)实现分布式锁,解决多节点并发操作共享资源的冲突问题,保证操作的原子性和一致性。

  5. 元数据存储:如 Milvus 向量数据库,依赖 etcd 存储元数据(集合信息、索引配置等),确保分布式环境下元数据的一致性,这是 Milvus 集群能够正常、高效运行的重要保障。

三、Docker 安装配置 etcd

通过 Docker 安装 etcd 是较为简单的方式,适合单机测试或开发环境,也能满足 Milvus 开发环境对 etcd 的需求,具体步骤如下:

1. 拉取 etcd 镜像

etcd 官方提供了 Docker 镜像,可直接拉取最新版本:

docker pull quay.io/coreos/etcd:v3.5.5
2. 启动 etcd 容器(单机模式)

单机模式适合开发测试,需指定数据存储路径、客户端端口(2379)和集群通信端口(2380),并设置初始集群配置:

docker run -d \--name etcd \-p 2379:2379  # 客户端通信端口(供应用访问,Milvus将通过此端口连接etcd)-p 2380:2380  # 集群节点间通信端口(单机模式可忽略,但需映射)-e ALLOW_NONE_AUTHENTICATION=yes  # 允许无密码访问(开发环境)-e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379  # 对外暴露的客户端地址-e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379  # 监听客户端连接的地址-e ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380  # 集群内广播的节点地址-e ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380  # 监听集群节点连接的地址-e ETCD_INITIAL_CLUSTER=default=http://0.0.0.0:2380  # 初始集群配置(单机节点)-v /data/etcd:/bitnami/etcd  # 挂载本地目录持久化数据(避免容器删除后数据丢失,对于Milvus的元数据存储至关重要)bitnami/etcd:latest
  • 单机模式简化启动
docker run -d  --name etcd  -p 2379:2379  -p 2380:2380  -e ALLOW_NONE_AUTHENTICATION=yes   -v /data/etcd:/bitnami/etcd    quay.io/coreos/etcd:v3.5.5
  • 参数说明:

    • ALLOW_NONE_AUTHENTICATION=yes:关闭认证(生产环境需开启,见下方补充)。

    • 端口映射:2379是应用访问 etcd 的端口,Milvus 将通过该端口与 etcd 进行通信,2380用于集群节点间通信。

    • 数据持久化:-v /data/etcd:/bitnami/etcd将容器内数据目录映射到本地/data/etcd,防止数据丢失,这对于 Milvus 元数据的持久化存储非常重要。

3. 验证 etcd 运行状态

进入容器内部,使用etcdctl(etcd 命令行工具)测试:

# 进入容器
docker exec -it etcd /bin/bash
# 写入测试数据
etcdctl put mykey "hello etcd"
# 读取数据
etcdctl get mykey
# 预期输出:
# mykey
# hello etcd

若能正常读写,说明 etcd 安装成功,可满足 Milvus 对 etcd 的基本需求。
在这里插入图片描述

4. 生产环境补充配置(可选)
  • 开启认证:设置用户名密码,避免无权限访问,保障 Milvus 元数据的安全:
# 启动时添加认证参数(替换单机模式命令中的环境变量)-e ALLOW_NONE_AUTHENTICATION=no -e ETCD_ROOT_PASSWORD=your_strong_password  # 根用户密码

访问时需指定认证:etcdctl --user root:your_strong_password get mykey,Milvus 连接 etcd 时也需配置相应的认证信息。

  • 集群模式:生产环境需部署 3/5 节点集群,通过ETCD_INITIAL_CLUSTER配置多个节点地址(如node1=http://ip1:2380,node2=http://ip2:2380),以提高 etcd 的可用性和容错性,进而保障 Milvus 集群的稳定运行。
http://www.dtcms.com/a/295260.html

相关文章:

  • 算法竞赛阶段二-数据结构(34)数据结构链表STL vector
  • 数据结构-4(常用排序算法、二分查找)
  • ​​GOFLY LIVE CHAT:Golang製オープンソース・ライブチャットシステム​
  • PHP文件下载
  • 嵌入式学习-(李宏毅)机器学习(2)-day29
  • 天线增益方向图是怎么绘制的?
  • 【ROS1】09-ROS通信机制——参数服务器
  • JavaSE:学习输入输出编写简单的程序
  • 从java到vue3:第二天
  • 字符串和对象的深拷贝和浅拷贝
  • 教务管理系统学员管理系统模块设计
  • Ubuntu-安装Epics教程
  • 从零构建 Node20+pnpm+pm2 环境镜像:基于 Dockerfile 的两种方案及持久化配置指南
  • NPM/Yarn完全指南:前端开发的“基石“与“加速器“
  • 用LangChain重构客服系统:腾讯云向量数据库+GPT-4o实战
  • AI风险治理“实战”落地:CISO如何将GenAI纳入GRC管控体系
  • 前端面试专栏-前沿技术:30.跨端开发技术(React Native、Flutter)
  • 从零构建:Jenkins与Kubernetes集成的完整指南
  • 借助 VR 消防技术开展应急演练,检验完善应急预案​
  • 血液样本的分类与应用
  • 论文阅读--《Besting the Black-Box: Barrier Zones for Adversarial Example Defense》
  • Elasticsearch 高级查询语法 Query DSL 实战指南
  • 2025年“创新杯”(原钉钉杯) A题 建模思路
  • Java 实现 C/S 架构详解:从基础到实战,彻底掌握客户端/服务端编程
  • Socket编程入门:从IP到端口全解析
  • OSPF路由协议单区域
  • MSOP/DIFOP端口 vs. IP地址的关系以及每个IP下面有什么自己的东西
  • 征服 Linux 网络:核心服务与实战解析
  • RWA与DeFi(去中心化金融)的关系是什么?RWA在DeFi中扮演什么角色?
  • 香草社游戏系列原声大碟OST合集全无损 FLAC格式 30GB