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

【ELasticsearch】搭建有负载均衡 ELB 的 ES 集群

搭建有负载均衡 ELB 的 ES 集群

  • 1. 为什么要这样设计(封装 ELB)?
  • 2.如果没有这层负载均衡呢 ?
  • 3.外来的请求会打到集群哪一个节点上 ?
  • 4.优先是专属协调节点吗?
  • 5.ELB 需要对接所有节点吗,还是协调节点就可以了?

在公有云上为 Elasticsearch 集群封装一层 ELB(Elastic Load Balancer)或类似的负载均衡器,核心目的是 解耦、简化客户端访问、提高可用性、增强可维护性

1. 为什么要这样设计(封装 ELB)?

  • 单一入口点
    • 简化客户端配置:客户端应用无需知道集群内部有多少个节点、哪些节点是协调节点、哪些节点宕机了。它们只需要配置一个稳定的 ELB DNS 名称或 IP 地址即可。这大大简化了客户端的连接逻辑和配置管理。
  • 高可用性
    • 故障转移:如果某个协调节点(或普通节点)发生故障、进行滚动重启或维护,ELB 的健康检查机制能够自动检测到该节点不健康,并将其从后端服务器池中移除,将流量无缝路由到其他健康的节点。客户端几乎感知不到后端节点的变化。
    • 避免单点故障:ELB 本身通常是高可用的(跨可用区部署),并且将流量分散到多个后端节点,避免了客户端直接连接到一个可能宕机的节点导致服务中断。
  • 负载均衡
    • 流量分发: 将传入的搜索、索引等请求均匀地(根据配置的策略,如轮询、最少连接数等)分发到集群中的多个协调节点或普通节点上。这防止了单个节点因请求过多而过载,充分利用集群资源,提高整体吞吐量和响应速度。
  • 可扩展性
    • 当需要水平扩展集群(增加节点)时,只需将新节点(尤其是协调节点)注册到 ELB 的后端目标组即可。客户端配置无需任何修改,新节点就能立即开始分担负载。
    • 同样,缩减集群时,移除节点后 ELB 会自动停止向其发送流量。
  • 安全与隔离
    • 提供了一个额外的网络边界。ELB 可以承担 SSL / TLS 终止、基础访问控制(如安全组 / IP 白名单)等任务,减少直接暴露 ES 节点给外部网络的风险。可以将 ES 节点部署在私有子网,仅允许 ELB 访问,增强安全性。
  • 简化运维
    • 节点维护、升级、替换对客户端透明。运维人员可以更自由地管理后端节点,而不用担心影响客户端连接。
    • 集中管理访问入口和流量策略。

2.如果没有这层负载均衡呢 ?

  • 客户端复杂性剧增
    • 客户端必须配置集群中所有可能的协调节点(或所有节点)的地址列表。
    • 客户端需要实现 节点发现机制:定期获取集群状态,了解哪些节点在线、哪些是协调节点(如果用了专属协调节点角色)。Elasticsearch 客户端库(如 Java High-Level REST Client)虽然内置了嗅探功能,但这增加了客户端逻辑的复杂度和资源消耗(网络请求、解析)。
    • 客户端需要实现 故障转移和重试逻辑:当连接某个节点失败时,客户端需要尝试列表中的下一个节点。这不是所有客户端库都完美支持的,且需要仔细配置。
  • 可用性风险
    • 单点故障敏感:如果客户端配置的初始连接节点列表不全,或者某个关键节点宕机而客户端未能及时感知或切换到其他节点,就会导致服务中断。
    • 滚动重启/维护困难:在维护期间(如节点升级),如果客户端恰好连接到了即将重启的节点,请求会失败。需要更复杂的协调或容忍客户端错误。
  • 负载不均风险
    • 客户端实现的连接策略可能不够智能,导致某些节点负载过高,而其他节点闲置。尤其在小规模客户端或特定访问模式下更明显。
  • 可扩展性挑战
    • 每次添加或移除节点,都需要更新所有客户端的配置(节点列表),这在大型分布式系统中是运维噩梦,容易出错且效率低下。
  • 安全暴露面增大:更多节点需要暴露在客户端可访问的网络中,增加了安全加固的复杂度和攻击面。

3.外来的请求会打到集群哪一个节点上 ?

  • 默认情况(无专属协调节点):在标准的 Elasticsearch 集群中,默认情况下所有节点都具备 masterdataingest 角色,同时也隐含了 coordinating(协调)角色。这意味着任何节点都能接收客户端请求。如果客户端(或 ELB)将请求发送到一个普通的数据节点,该节点会:
    • 1️⃣ 解析请求。
    • 2️⃣ 确定涉及哪些分片(主分片或副本分片)。
    • 3️⃣ 将子请求转发给持有这些分片的其他数据节点。
    • 4️⃣ 汇总结果,返回给客户端。该节点承担了协调工作。
  • 使用专属协调节点:为了优化性能(特别是大型集群或高负载场景),可以配置专属协调节点。这些节点设置:
    node.roles: [ remote_cluster_client, coordinator ] # ES 7.8+
    # 或者更传统的显式禁用其他角色:
    node.roles: [ ] # ES 7.8+ 空角色默认就是协调节点
    # 或者 (旧版本方式,效果类似)
    node.master: false
    node.data: false
    node.ingest: false
    
    • 这些节点不存储数据,不参与主节点选举,不执行预处理管道。
    • 它们只负责接收客户端请求、分解查询、分发子请求到数据节点、聚合结果、返回响应。
    • 优势:解放了数据节点和主节点的 CPU、内存资源,让它们专注于核心的数据存储、检索和管理任务。协调节点更容易横向扩展,处理大量并发客户端连接。这是生产环境的最佳实践,尤其是规模较大的集群。

结论: 无论是否有专属协调节点,外来请求最初都会打到接收该请求的那个节点上。这个节点可能是:

  • 一个普通的数据节点(默认角色)。
  • 一个专属的协调节点(如果配置了)。
  • 甚至是一个主节点(虽然不推荐直接连接主节点)。

4.优先是专属协调节点吗?

  • 强烈推荐优先使用专属协调节点! 原因如上所述:性能优化、资源隔离、更好的扩展性。
  • ELB 的目标:ELB 配置的目标就是将所有客户端的流量引导到这些专属协调节点上(或者在没有专属协调节点时,引导到所有普通节点上)。这样确保了请求由最适合处理协调工作的节点来处理。
  • 优先” 的含义:在 ELB 配置中,你会将后端服务器池(目标组)明确指定为这些专属协调节点的 IP & 端口。ELB 只会在这些协调节点之间进行负载均衡。客户端无法(也不应该)直接访问数据节点或主节点(除非特殊管理需求)。

5.ELB 需要对接所有节点吗,还是协调节点就可以了?

  • 只需要对接协调节点!
  • 绝对不要将 ELB 对接所有节点(包括数据节点、主节点):
    • 性能浪费/干扰:让数据节点处理协调工作消耗其本应用于数据操作的宝贵资源(CPU、内存、网络)。主节点尤其脆弱,应避免处理任何用户请求流量。
    • 潜在风险:意外的大量请求打到主节点可能导致集群不稳定(主节点负责集群状态管理、索引创建等关键操作)。
    • 安全:减少了不必要的网络暴露面。
  • 🚀 最佳实践:在集群中部署一组专属协调节点(数量根据负载预估和冗余需求确定,通常至少 2−32-323 个)。ELB 的后端目标组只包含这些专属协调节点的 IP 地址和端口(通常是 920092009200)。所有外部客户端流量都通过 ELB 发送到这些协调节点。
http://www.dtcms.com/a/302961.html

相关文章:

  • TongESBv7报错:DatabaseConnectionException: no connection available(by lqw)
  • 正则表达式 速查速记
  • 多数据库学习之VastbaseG100海量数据库入门实践
  • Spring AI 1.0 提供简单的 AI 系统和服务
  • opencv 模块裁剪 按需安装指定模块
  • 《零基础入门AI: 从轮廓查找到形态学变换(OpenCV图像预处理)》
  • 【数据架构09】人工智能及数据智能架构篇
  • Charles中文版深度解析,轻松调试API与优化网络请求
  • 产品需求如何系统化管理
  • 简明量子态密度矩阵理论知识点总结
  • Spring Boot 2整合Druid的两种方式
  • shell学习从入门到精通(第二部分)
  • 第六届物联网、人工智能与机械自动化国际学术会议 (IoTAIMA 2025)
  • 暑期自学嵌入式——Day10(C语言阶段)
  • springboot校园外卖配送系统
  • Stm32中USB 对时钟的要求
  • 使用 Scrapy 框架定制爬虫中间件接入淘宝 API 采集商品数据
  • 案例开发 - 日程管理 - 第三期
  • HOT100——链表篇Leetcode206. 反转链表
  • IP核乘法器NCO的使用
  • 多目标优化分解方法:加权和与罚函数边界交叉
  • 数据分析入门,深入浅出的数据分析
  • 基于 JWT 的登录验证功能实现详解
  • (多线程)等待一个线程-join() 获取当前线程的引用 线程的六种状态 线程休眠 线程的调度执行中的细节
  • 【边缘填充】——图像预处理(OpenCV)
  • 边缘计算+前端实时性:本地化数据处理在设备监控中的响应优化实践
  • MOEA/D(Multi-Objective Evolutionary Algorithm based on Decomposition)简介
  • 互信息:理论框架、跨学科应用与前沿进展
  • 从卷积到ResNet
  • Light Sci. Appl.:基于结构激发的方解石ghost极化激元红外光电子应用