官方文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html
以下内容摘抄自官方文档
当一个节点被选举成为 主 节点时,它将负责管理集群范围内的所有变更;
例如 增加、删除索引,或者增加、删除节点等。而主节点并不需要涉及到文档级别的变更和搜索等操作
这里有个问题:当集群中只有一个节点时,这个节点是主节点,那么涉及到文档级别的变更和搜索等操作就不能进行了? 事实并非如此。
所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会成为瓶颈。
任何节点都可以成为主节点。
参考地址:
https://www.cnblogs.com/sanduzxcvbnm/p/12850357.html
https://www.jianshu.com/p/6e7b970b1c1d
Master Node:主节点
Master eligible Node:有资格成为主节点的节点
Data Node:数据节点
Coordinating Node:协调节点
Ingest Node:ingest 节点
部署后的成果:
合格节点,每个节点部署后不修改配置信息,默认就是一个 eligible 节点,该节点可以参加选主流程,成为Mastere节点。该节点也保存了集群节点的状态。eligible节点比Master节点更节省资源,因为它还未成为 Master 节点,只是有资格成功Master节点。
有资格成为 master 的节点;一个集群中只能有一个主节点,通过这些 eligible node 选举一个合适的节点作为当前集群中的主节点。
通过修改配置文件,设置 master eligible node 节点
node.master: true
node.data: false
node.ingest: false
通过minimum_master_nodes来避免脑裂问题
要预防数据的丢失,我们就必须设置discovery.zen.minimum_master_nodes参数为一个合理的值,这样的话,每个master-eligible node才知道至少需要多少个master-eligible node才能组成一个集群。
比如说,我们现在有一个集群,其中包含两个master-eligible nodes。然后一个网络故障发生了,这两个节点之间丢失了联络。每个节点都认为当前只有一个master-eligible node,就是它们自己。此时如果discovery.zen.minimum_master_nodes参数的默认值是1,那么每个node就可以让自己组成一个集群,选举自己为master node即可。结果就会导致出现了两个es集群,这就是脑裂现象。即使网络故障解决了,但是这两个master node是不可能重新组成一个集群了。除非某个master eligible node重启,然后自动加入另外一个集群,但是此时写入这个节点的数据就会彻底丢失。
那么如果现在我们有3个master-eligible node,同时将discovery.zen.minimum_master_nodes设置为2.如果网络故障发生了,此时一个网络分区有1个node,另外一个网络分区有2个node,只有一个node的那个网络分区,没法检测到足够数量的master-eligible node,那么此时它就不能选举一个master node出来组成一个新集群。但是有两个node的那个网络分区,它们会发现这里有足够数量的master-eligible node,那么就选举出一个新的master,然后组成一个集群。当网络故障解除之后,那个落单的node就会重新加入集群中。
discovery.zen.minimum_master_nodes,必须设置为master-eligible nodes的quorum,quorum的公式为:(master_eligible_nodes / 2) + 1。
换句话来说,如果有3个master-eligible nodes,那么那个参数就必须设置为(3 / 2) + 1 = 2,比如下面这样:
discovery.zen.minimum_master_nodes: 2
随着集群节点的上线和下限,这个参数都是要重新设置的,可以通过api来设置
PUT _cluster/settings
{
"transient": {
"discovery.zen.minimum_master_nodes": 2
}
}
此时将master node和data node分离的好处就出来了,一般如果单独规划一个master nodes的话,只要规划固定的3个node是master-eligible node就可以了,那么data node无论上线和下限多少个,都无所谓的。
作者:Shaw_Young
链接:https://www.jianshu.com/p/6e7b970b1c1d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
数据节点,该节点和索引应用创建连接、接收索引请求,该节点真正存储数据,ES集群的性能取决于该节点的个数(每个节点最优配置的情况下),data节点会占用大量的CPU、IO和内存。
修改配置文件
node.master: false
node.ingest: false
node.data: true
协调节点,该节点和检索应用创建连接、接受检索请求,但其本身不负责存储数据,可当负责均衡节点,该节点不占用io、cpu和内存。
修改配置文件
node.master: false
node.data: false
node.ingest: false
search.remote.connect: false
search.remote.connect: false
是禁用跨集群查询,防止在进行集群之间查询时发生二次路由
Ingest(进入、摄入)
ingest 节点可以看作是数据前置处理转换的节点,支持 pipeline管道 设置,可以使用 ingest 对数据进行过滤、转换等操作,类似于 logstash 中 filter 的作用,功能相当强大。
修改配置文件
node.master: false
node.data: false
node.ingest: true
search.remote.connect: false
文章地址:
1、elasticsearch 的配置文件中有两个参数:node.master 和 node.data。这两个参数搭配使用时,能够帮助提供服务器性能
node.master: false
和node.data: true
、node.ingest: false
node.master: true
和node.data: false
、node.ingest: fasle
node.master: false
和node.data: false
、node.ingest: false
2、关闭 es 数据节点服务器 中的 http功能
http.enabled: false
,同时也不要安装head、bigdesk、marvel 等监控插件,这样保证 data 节点服务器只需处理 创建、更新、删除、查询索引数据等操作3、分片的数量
基于索引分片数=数据总量/单分片数
分片(Shard):一个索引会分成多个分片存储,分片数量在索引建立后不可更改, 推荐【分片数*副本数=集群数量】
ElasticSearch在创建索引数据时,最好指定相关的shards数量和replicas, 否则会使用服务器中的默认配置参数 shards=5,replicas=1
。
因为这两个属性的设置直接影响集群中索引和搜索操作的执行。假设你有足够的机器来持有碎片和副本,那么可以按如下规则设置这两个值:
对于一个索引来说,number_of_shards只能设置一次,而number_of_replicas可以使用索引更新设置API在任何时候被增加或者减少。
这两个配置参数在配置文件的配置如下:
index.number_of_shards: 5 number_of_replicas: 1
Elastic官方文档建议:一个Node中一个索引最好不要多于三个shards.配置total_shards_per_node参数,限制每个index每个节点最多分配多少个发片.
作者:jacksu在简书
链接:https://www.jianshu.com/p/b4eda49583b5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
数据节点:2 -> 2T
主节点: 3 -> 20G
协调节点:5 -> 20G