elasticsearch集群配置
配置文件elasticsearch.yml
集群名和节点名:
#cluster.name: elasticsearch
#node.name: "node1"
是否参与master选举和是否存储数据
#node.master: true
#node.data: true
基本节点类型说明
- 主(master)节点:在一个节点上当node.master设置为True(默认)的时候,它有资格被选作为主节点,控制整个集群。
- 数据(data)节点:在一个节点上node.data设置为True(默认)的时候。该节点保存数据和执行数据相关的操作,如增删改查,搜索,和聚合。
- 客户端节点:当一个节点的node.master和node.data都设置为false的时候,它既不能保持数据也不能成为主节点,该节点可以作为客户端节点,可以响应用户的情况,并把相关操作发送到其他节点。
- 默认情况下,节点配置是同时作为一个主节点和一个数据节点。这是非常方便的小集群,但随着集群的发展,分离主节点和数据节点就是必要的。
主节点资格说明
- 主资格节点的主要职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。默认情况下任何一个集群中的节点都有可能被选为主节点。
- 主节点也可以协调节点,路由搜索和从客户端新增数据到数据节点,但最好不要使用这些专用的主节点。一个重要的原则是,尽可能做尽量少的工作。创建一个独立的主节点的配置为:
node.master: true
node.data: false
数据节点说明
数据节点主要是存储索引数据的节点,主要对文档进行增删改查操作,聚合操作等。数据节点对cpu,内存,io要求较高,在优化的时候需要监控数据节点的状态,当资源不够的时候,需要在集群中添加新的节点。数据节点的配置如下: node.master: false
node.data: true
客户端节点说明
客户端节点只能处理路由请求,处理搜索,分发索引操作等。负责协调主节点和数据节点,客户端节点加入集群可以得到集群的状态,根据集群的状态可以直接路由请求。客户端节点的配置如下:node.master: false
node.data: false
节点协调
节点协调,搜索请求或批量增加索引请求等可能涉及在不同的数据节点上操作。<br> 在这些请求会分成两个阶段,一是接收客户端的请求 ,二是协调节点执行相关操作。
当数据分散在不同的节点上的时候,协调节点将请求转发到数据节点,每个数据节点在本地执行请求并把结果传输给协调节点,然后协调节点收集各个数据节点的结果转换成一个单一的请求结果返回。所以需要客户端有足够的内存和cpu来处理各个节点的返回结果。
复制和分片
每个索引可以被分成多个分片。一个索引也可以被复制0次(即没有复制) 或多次。一旦复制了,每个索引就有了主分片(作为复制源的分片)和复制分片(主分片的拷贝)。 分片和复制的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时候动态地改变复制的数量,但是你不能再改变分片的数量。
默认情况下,Elasticsearch中的每个索引分配5个主分片和1个复制。这意味着,如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个复制分片(1个完全拷贝),这样每个索引总共就有10个分片。