Elasticsearch集群的搭建

目录

      • 一、Elasticsearch集群的概念
      • 二、搭建Elasticsearch集群
      • 三、Elasticsearch集群脑裂现象探讨

一、Elasticsearch集群的概念

集群:
ES节点:运行的ES实例
ES集群:由若干节点组成,这些节点在同一个网络内,cluster-name相同

节点:

master节点:

​ 集群中的一个节点会被选为master节点,它将负责管理集群范畴的变更,例如创建或删除索引,添加节点到集群或从集群删除节点。master节点无需参与文档层面的变更和搜索,这意味着仅有一个master节点并不会因流量增长而成为 瓶颈。任意一个节点都可以成为 master 节点.

data节点:

​ 持有数据和倒排索引。默认情况下,每个节点都可以通过设定配置文件elasticsearch.yml中的node.data属性为 true(默认)成为数据节点。如果需要一个专门的主节点,应将其node.data属性设置为false

Client节点:

​ 如果将node.master属性和node.data属性都设置为false,那么该节点就是一个客户端节点,扮演一个负载均衡的角色,将到来的请求路由到集群中的各个节点

分片:
(1)单个节点由于物理机硬件限制,存储的文档是有限的,如果一个索引包含海量文档,则不能在单个节点存储。ES提供分 片机制,同一个索引可以存储在不同分片(数据容器)中,这些分片又可以存储在集群中不同节点上
(2)分片分为 主分片(primary shard) 以及 从分片(replica shard)
(3)主分片与从分片关系:从分片只是主分片的一个副本,它用于提供数据的冗余副本
(4)从分片应用:在硬件故障时提供数据保护,同时服务于搜索和检索这种只读请求
(5)是否可变:索引中的主分片的数量在索引创建后就固定下来了,但是从分片的数量可以随时改变
(6)索引默认创建的分片:默认设置5个主分片和一组从分片(即每个主分片有一个从分片对应),但是从分片没有被启用(主从分片在同一个节点上没有意义),因此集群健康值显示为黄色(yellow)

二、搭建Elasticsearch集群

修改 elasticsearch.yml 这个配置文件如下:

# 配置集群名称,保证每个节点的名称相同,如此就能都处于一个集群之内了 
cluster.name: elasticsearch-cluster 

# 每一个节点的名称,必须不一样 
node.name: es-node1 

# http端口(使用默认即可) 
http.port: 9200 

# 主节点,作用主要是用于来管理整个集群,负责创建或删除索引,管理其他非master节点
node.master: true 

# 数据节点,用于对文档数据的增删改查 
node.data: true 

# 集群列表 
discovery.seed_hosts: ["192.168.130.101", "192.168.130.102", "192.168.130.103"] 

# 启动的时候使用一个master节点 
cluster.initial_master_nodes: ["es-node1"]

可以通过如下命令查看配置文件的内容:

more elasticsearch.yml | grep ^[^#]

三、Elasticsearch集群脑裂现象探讨

什么是脑裂

​ 如果发生网络中断或者服务器宕机,那么集群会有可能被划分为两个部分,各自有自己的master来管理,那么这就是脑裂。

脑裂解决方案

​ master主节点要经过多个master节点共同选举后才能成为新的主节点。不能通过单个节点选举为master,而需要一半以上的节点同意才可以,。

解决实现原理:半数以上的节点同意选举,节点方可成为新的master。

discovery.zen.minimum_master_nodes=(N/2)+1 

N为集群的中master节点的数量,也就是那些 node.master=true 设置的那些服务器节点总数。

ES 7.X

​ 在最新版7.x中, minimum_master_node 这个参数已经被移除了,这一块内容完全由es自身去管理,这样就避免了脑裂的问题,选举也会非常快。

你可能感兴趣的:(Java)