elasticsearch集群各个节点

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/q936889811/article/details/90515352

相关参数配置介绍:

单播:discovery.zen.ping.unicast.hosts

设置:discovery.zen.ping.unicast.hosts: [“172.1.0.44”,“172.1.0.43”]

使用master候选节点作为单播列表,discovery.zen.ping.unicast.hosts设置为所有的master-eligible node的ip地址。

候选节点:discovery.zen.minimum_master_nodes

discovery.zen.minimum_master_nodes:选项对集群的稳定极其重要。当集群中有两个masters节点时,此参数可以防止集群脑裂。主节点在集群中拥有最高权限,决定索引创建、分片移动等,如果出现多个masters节点,表示多个主节点对集群有控制权限,从而无法保证数据的完整一致性,出现集群脑裂。

discovery.zen.minimum_master_nodes选项配置master候选节点的法定个数(配置的值为:(master候选节点/2)+1),当elasticsearch没有足够master候选节点时,就不进行master节点选举,需等master候选节点足够了才进行选举。

以下几种配置情况:

  • 如果有10个节点(data节点保存数据,同时为master节点),法定数就是6。
  • 如果有3个候选master节点,和100个data节点,法定数就是2,只要计算master的节点数就可以了。
  • 如果有两个节点,法定数是2,但是这意味着如果有一个节点挂掉,整个集群就不可用了。设置成1可以保证集群的功能,但是就无法保证集群脑裂了,像这样的情况,你最好至少保证有3个节点。

不同节点

1、master节点(Master-eligible node):

node.master: true表示为master的候选节点,可以参加选举,官方称为master-eligible node。elasticsearch正常运行时只能有一个master,大于1时会发生脑裂。主节点将在节点重新启动期间持久化群集状态保存在data/目录(就像data节点一样)

主节点负责轻量级群集范围的操作,例如创建或删除索引,跟踪哪些节点是群集的一部分,以及决定将哪些分片分配给哪些节点。集群运行状况对于拥有稳定的主节点非常重要。

官方建议:

索引和搜索数据是CPU,内存和I/O密集型工作,可能会对节点资源造成压力。为确保主节点稳定且不受压力,在较大的群集中最好分割专用主节点和专用数据节点之间的角色。

虽然主节点也可以表现为协调节点 并将搜索和索引请求从客户端路由到数据节点,但最好不要将专用主节点用于此目的。对于集群的稳定性而言,符合主节点的节点尽可能少地工作是很重要的。

node.master: true
node.data: false
2、data节点(Data node):

node.data: true表示为数据节点,会分配在该node上的shard的数据存储,并负责这些shared的写入、查询等。此节点操作的I/O、内存和cpu属于密集型。官方建议:最好使用专用的master和data节点分离。

node.master: false
node.data: true
3、proxy节点:

node.master和node.data都为false时,该节点作为clinet(代理)节点,接收请求并转发、结果聚合等。任何一个集群内的node都可以执行任何请求,其会负责将请求转发给对应的node进行处理。确保足够的内存和CPU以便处理收集阶段。

node.master: false
node.data: false
4、预处理节点(Ingest Node)

ingest节点可以执行由一个或多个ingest处理器组成的预处理管道。根据ingest处理器执行的操作类型和所需资源,具有专用摄取节点可能是有意义的,这些节点仅执行此特定任务。

node.ingest: false
5、tribe节点(Tribe node):

tribe节点一种特殊类型的仅协调节点,充当跨多个群集联合客户端。tribe节点的工作原理是从所有连接的集群中检索集群状态,并将它们合并为全局集群状态。但是tribe节点不能创建index

cat  /etc/elasticsearch/elasticsearch.yml 

tribe:
    es1:
      cluster.name: my-application
      discovery.zen.ping.unicast.hosts: ["172.1.0.44","172.1.0.43"]
    es2:
      cluster.name: my-application2
      discovery.zen.ping.unicast.hosts: ["172.1.0.2","172.1.0.34"]
    on_conflict: prefer_es2
node.name: tribe-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 172.31.0.2
http.port: 9200
node.master: false
node.data: false

如果没有配置on_conflict则会报一下错误:

java.lang.IllegalArgumentException: use of security on tribe nodes requires setting [tribe.on_conflict] to specify the name of the tribe to prefer such as [prefer_t1] as the security index can exist in multiple tribes but only one can be used by the tribe node
	at org.elasticsearch.xpack.security.Security.addTribeSettings(Security.java:881) ~[?:?]

tribe.on_conflict的命名规则:prefer_[tribeName]。

使用tribe.on_conflict 设置,避免多集群相同索引冲突,使部落节点选择优先选择指定一个集群索引。它默认为any,但可以设置为drop(删除有冲突的索引),或者在tribe 配置指定的prefer_[tribeName]索引。

关于tribe介绍参考:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/modules-tribe.html

除此以外其他节点:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/modules-node.html

展开阅读全文

没有更多推荐了,返回首页