ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ElasticSearch学习十一 集群管理

2022-06-25 23:02:32  阅读:177  来源: 互联网

标签:十一 存储 脑裂 集群 分片 ElasticSearch 节点 es


十一、集群管理

11.1、概述

集群:多个人做一样事情

分布式:多个人做不一样的事情

单节点架构

 

 

 

单节点架构,所有的数据都存储在一个节点上,会比较容易出问题,比如网络问题、磁盘坏道、服务器停机等等。

集权架构

 

 

 

集群架构是部署多个节点,每个节点都存储所有的数据。如果数据很多,一个节点无法存储,此时就演变成集群分布式架构

 

集群分布式架构

 

在集群分布式架构中,es-node1与es-node2为一组,两个节点一起存储所有的数据。同样的,es-node2与es-node5为一组,es-node3与es-node6为一组。

 

总结:

集群解决的问题是 让系统高可用解决请求压力。

分布式解决的问题是 分担存储和计算的压力,提速。解耦

es集群相关概念

集群(cluster): 一组拥有共同cluster name的节点

节点(node):集群中的一个Elasticsearch实例

索引(index): es存储数据的地方,相当于关系数据库中的database概念

分片(shard): 索引可以被拆成不同的部分进行存储,每一个部分都称之为分片。在集群环境下,一个索引的不同分片可以拆分到不同的节点中。

主分片(primary shard): 相对于副本分片的定义。

副本分片(Replica shard): 每个主分片可以有一个或多个副本分片,数据和主分片一样。

 

存储方式一

蓝颜色的 0 、1 、2是同一个索引的不同分片,绿色的0 是蓝色的0的副本分片,同样的绿1是蓝1的副本分片,绿2是蓝2的副本分片。

缺点:如果ES-node-1节点挂了,第0个分片就全部不可以访问,就会造成系统不可用。

 

 

 

存储方式二

 

 

11.2、集群的监控

在kibana进行集群的监控

 

 

11.3、分片配置

在创建索引时,如果不设置分片数量,默契情况下是一个主分片,一个副本分片。

 

 

 

创建索引时指定分片

​
PUT test_index
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
    
  },
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      }
    }
  }
}

创建好的索引分片分布情况

 

 

分片与自平衡:当节点挂掉之后,挂掉的节点分片会自平衡到其他节点中

在elasticsearch中,每个查询在每个分片的单线程中执行,但是,可以处理多个分片。

分片数量一旦确定好,便不能更改

索引分片配置方案(推荐):

1、每个分片推荐大小10G到30G之间

2、分片数量一般是节点的一倍到三倍之间

 

1000G数据,25G一个分片,40个分片,20个节点

11.4、路由原理

根据文档id进行哈希,然后根据哈希值进行取模,最后算出要存储的数据应该存储在哪个分片或者算出要查询的数据在哪个分片。

因此分片确定好之后就不能更改,因为分片的数量决定了数据查询与存储的位置。

 

 

11.5、脑裂

什么是脑裂

一个正常的ES集群中只有一个主节点(Master),主节点负责管理整个集群。如创建或者删除索引,跟踪哪些节点是集群的一部分,并决定哪些分片配给相关的节点。

 

集群的所有节点都会选择同一个节点作为主节点。

 

脑裂问题的出现主要是因为从节点(slave)在选择主节点(Master)上出现了分歧,导致一个集群中出现多个主节点,从而使得集群分裂,使得集群处于异常状态。

 

 

 

脑裂产生的原因

1、网络原因:网络延迟

  • 一般es集群会在内网部署,也可能在外网部署,比如阿里或华为云

  • 内网一般不会出现脑裂问题,如果外网网络延迟大,可能造成脑裂

2、节点负载

  • 主节点的角色既为master又为data。当数据访问量大时,可能会导致Master节点停止响应(假死状态)。

    #是不是有资格成为主节点
    node.master: true
    #是否时存储数据的节点
    node.data: true

3、JVM内存回收

  • 当Master节点设置的jvm内存较小时,引发JVM的大规模内存回收,造成ES进程失去响应。

 

如何避免脑裂

1、如果时网络原因造成的脑裂,可以把discovery.zen.ping.timeout超时时间配置大一点。默认是3秒,配置成10s

2、节点负载: 角色分离

候选主节点配置成:

#是不是有资格成为主节点
node.master: true
#是否时存储数据的节点
node.data: false

数据节点配置成

#是不是有资格成为主节点
node.master: false
#是否时存储数据的节点
node.data: true

 

3、JVM内存回收: 修改config/jvm.options文件的-Xms 和 -Xmx为服务器内存的一半。

 

标签:十一,存储,脑裂,集群,分片,ElasticSearch,节点,es
来源: https://www.cnblogs.com/cplinux/p/16412652.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有