MST
星途 面试题库

面试题:ElasticSearch集群allocation过程中节点筛选的主要因素有哪些

在ElasticSearch集群的allocation过程里,会对节点进行筛选以决定分片放置位置。请详细阐述主要的节点筛选因素都有哪些,并简要说明它们是如何影响分片分配的。
14.7万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

节点属性

  • 自定义属性:通过设置节点的自定义属性(如rackzone等),可依据业务需求对节点分类。例如设置rack属性区分不同机架的节点,在分配分片时,可利用requireincludeexclude参数,要求分片分配到特定属性值的节点上,避免多个副本分片集中在同一机架,提高数据的可用性和容灾能力。
  • 内置属性:如node.role,标记节点的角色(如masterdataingest等),数据分片默认不会分配到master角色节点,只会分配到具有data角色的节点,保证主节点专注于集群管理,不承担数据存储和检索压力。

节点资源

  • 磁盘空间:Elasticsearch会监控节点的磁盘使用情况。如果节点磁盘空间不足(默认设置当磁盘使用率达到85%时),新的分片将不会分配到该节点,以防止因磁盘满导致的写入失败等问题。同时,对于已在磁盘空间紧张节点上的分片,可能会触发重新分配,迁移到有足够磁盘空间的节点。
  • 内存:节点内存影响其处理能力,虽然Elasticsearch不会像磁盘空间那样严格基于内存使用率来筛选节点,但内存不足会影响节点性能。如果节点内存持续处于高负载状态,可能在集群重新平衡分片时,该节点被优先考虑减少分配的分片数量,以保障整体性能。
  • CPU:类似内存,CPU使用率过高会影响节点性能。虽然不会直接基于CPU使用率来阻止分片分配,但在集群进行重新平衡时,CPU长期高负载的节点可能会被分配较少的分片,以避免因节点性能问题影响整个集群的搜索和写入效率。

节点健康状态

  • 节点连通性:如果节点与集群断开连接(如网络故障),该节点会被标记为不可用,其上的分片会被视为丢失。集群会尝试将这些丢失的分片重新分配到其他可用节点上,以保持数据的完整性和可用性。
  • 节点错误状态:若节点出现内部错误(如进程崩溃、文件损坏等),即使节点仍在集群中连接,也可能被标记为不健康。不健康的节点可能会被减少分配新的分片,同时已在该节点上的分片可能会被重新分配到健康节点,以确保数据的正常读写和集群的稳定性。

集群拓扑和副本策略

  • 副本分配:为保证数据的高可用性,副本分片不会分配到与主分片相同的节点上。集群会在不同节点间均匀分配副本分片,以实现负载均衡和数据冗余。例如,一个索引有一个主分片和两个副本分片,这三个分片会尽量分配到不同的节点。
  • 跨机架和跨区域分配:结合节点的自定义属性(如rackzone等),集群可以按照拓扑结构进行分片分配。例如,通过配置可确保不同副本分片分布在不同机架或不同区域的节点上,防止因单个机架或区域故障导致数据丢失,提高容灾能力。