Elasticsearch 高负载场景优化指南
1. 节点配置与集群角色分配
在 Elasticsearch 中,为了确保集群的高可用性和容错性,需要对每个节点进行合理的配置。首先,在elasticsearch.yml配置文件中,每个 Elasticsearch 节点都需要添加以下属性:
cluster.routing.allocation.awareness.attributes: server_name这一配置的作用是告知 Elasticsearch 不要将主分片及其副本放置在node.server_name属性值相同的节点上,之后 Elasticsearch 会自动处理其他相关事宜。
对于较大的集群,需要为节点分配特定的角色,主要包括以下三种:
-主合格节点(Master Eligible Node):负责管理集群状态,如节点加入、离开等操作。
-数据节点(Data Node):用于存储和处理数据。
-查询聚合节点(Query Aggregator Node):负责向其他节点发送部分查询,收集并合并结果,然后响应客户端查询。
默认情况下,每个 Elasticsearch 节点都具备成为主节点、存储数据和作为查询聚合节点的能力。但在实际应用中,为了避免主节点压力过大导致集群不稳定,通常会对节点角色进行划分。以下是一个典型的大型集群