首页 > 其他分享 >ElasticSearch分布式集群

ElasticSearch分布式集群

时间:2022-12-01 17:33:38浏览次数:44  
标签:副本 集群 分片 ElasticSearch 数据 节点 分布式

前言

关于ElasticSearch集群概念这里就不多废话了,详细可见ElasticSearch基本介绍ElasticSearch集群系统架构

单节点集群

我们可以创建一个索引,为这个索引创建三个分片并创建副本,如下
ElasticSearch分布式集群_elasticsearch

{
    "settings":{
        "number_of_shards":3,
        "number_of_replicas":1
    }
}

ElasticSearch分布式集群_单节点_02
上面的黄色代表集群健康值,黄色是说当前集群的全部主分区都正常运行,但是副本没有处于正常状态
绿色的0,1,2代表当前这个cat索引的分片数量,
灰色的0,1,2代表副本数量,Unassigned代表他们都没有分配到任何节点,在同一个节点上既可以保存原始数据又保存副本是没有意义的,因为一旦失去了这个节点,那么也就意味着失去了所有副本数据
注意:粗框框的是分片,稍微细一点的是副本

故障转移

当集群中只有一介节点在运行时,意味着会有一个单点故障问题-没有冗余。幸运的是,我们只需再启动一个节点即可防止数据丢失。当你在同一台机器上启动了第二个节点时,只要它和第一个节点有同样的chster.name配置,它就会自动发现集群并加入到其中。但是在不同机器上启动节点的时候,为了加入到同一集群,你需要配置一个可连接到的单播主机列表。之所以配置为使用单播发现,以防止节点无意中加入集群。只有在同一台机器上运行的节点才会自动组成集群。如果启动了第二个节点,我们的集群将会拥有两个节点的集群:所有主分片和副本分片都以被分配

上面我们演示了单节点情况下会存在数据不安全的问题,那么我么将集群的其他节点启动起来,那么这些副本就会自动分配在其他的节点上
ElasticSearch分布式集群_数据_03

水平扩容

Nolie 1和Node2上各有一个分片被迁移到了新的Node3节点,现在每个节点上都拥有2个分片,而不是之前的3个。这表示每个节点的硬件资源(CPU, RAM, I/O)将被更少的分片所共享,每个分片的性能将会得到提升。分片是一个功能完整的搜索引擎,它拥有使用一个节点上的所有资源的能力。我们这个拥有6个分片(3个主分片和3个副本分片)的索引可以最大扩容到6个节点,每个节点上存在一个分片,并且每个节点拥有的全部资源

ElasticSearch分布式集群_elasticsearch_04
如果扩容超过6个分片(3个分片3个副本)怎么办
主分片的数目在索引创建时就已经确定了下来。实际上,这个数目定义了这个索引能够存储的最大数据量。(实际大小取决于你的数据、硬件和使用场景。)但是,读操作搜索和返回数据-可以同时被主分片或副本分片所处理,所以当你拥有越多的副本分片时,也将拥有越高的吞吐量。在运行中的集群上是可以动态调整副本分片数目的,我们可以按需伸缩集群。让我们把副本数从默认的1增加到2
ElasticSearch分布式集群_单节点_05

{
	"number_of_replicas":2
}

ElasticSearch分布式集群_其他_06

节点故障

我们模拟下Master节点宕机情况,体制master节点。
ElasticSearch分布式集群_elasticsearch_07
master宕机后那么剩余节点会通过ElasticSearch内部的选举机制选出新的Master节点,这里宕机了一个节点后,不是说整个集群不可用了,只是宕机后的那台机器上的分片和副本无法工作罢了,只是整体集群的性能会下降罢了,我们重新启动一下宕机的那个节点,那么他又会自动加入集群
ElasticSearch分布式集群_数据_08

路由计算&分片控制

路由计算-添加数据
ElasticSearch分布式集群_其他_09
我们现在有条数据,这个时候我们的ElasticSearch集群这么多节点这么多分片这么多副本的怎么知道放在哪呢,首先肯定不是先放在副本中的,是先存放在分片中的,只有分片中有的数据副本中才会有,这里数据存放在那个分片不是随机的分配的,而是使用一套规则,那么这个数据刷到那个分片的过程就是路由计算,路由计算是使用hash路由来的具体公式为hash(id)%主分片数量那么通过这个公式我们就能得到三个节点的位置

分片控制-查询数据
在我们上面的数据保存成功后,p2分片中就有了数据,那么对应的R2也会有数据,那么这个时候我们查询数据的话任意访问节点即可,因为任意节点上都有P2分片或者R2的副本,任意访问的那个节点称为协调节点,这个协调节点可以让我们的请求到数据真正的分片查询(在访问的当前节点压力较大时,也已请求调度到其他节点上),通常情况下分片控制是采用轮询策略实现的
ElasticSearch分布式集群_单节点_10

标签:副本,集群,分片,ElasticSearch,数据,节点,分布式
From: https://blog.51cto.com/u_15899048/5903415

相关文章

  • SpringBoot整合ElasticSearch-SpringData
    前言之前写过一篇SpringBoot整合ElasticSearch是使用的elasticsearch-rest-high-level-client,这篇文章使用Spring-Data来操作ElasticSearch。关于ElasticSearch的搭建我......
  • ElasticSearch集群概念
    单机存在的问题单台Elasticsearch服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集......
  • Windows安装ElasticSearch
    前言习惯使用docker安装各种中间件了,但是程序包安装方式也不能丢呀。官网下载地址,我这里使用的是7.4.2,如果需要使用其他版本,更改连接后面的版本号即可!下载下载速度还......
  • ElasticSearch集群系统架构
    前言全面几篇文章主要是使用单机跑ElasticSearch的,在生产环境为了保证高可用和高吞吐量我们都会采用集群的方式部署。那么本章不涉及ElasticSearch集群的搭建,只涉及理论......
  • Windows搭建ElasticSearch集群
    前言在搭建ElasticSearch集群前,可以先看看往期文章Windows安装ElasticSearch,可以使用上篇文章中下载ElasticSearch搭建准备将下载好的ElasticSearch复制三分,node1为......
  • 集群常见的基本形式
    集群的目标高可用:,是当一台服务器停止服务后,对于业务及用户毫无影响。停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致......
  • 搜索引擎之Lucene,Solr,ElasticSearch比较
    目录1搜索引擎1.1简介1.2结构化数据和非结构化数据1.3使用全文搜索引擎条件2Lucene,Solr,ElasticSearch2.1Lucene2.2Solr2.3ElasticSearch2.4区别和选择2.4.1如何......
  • 05 定制 Rook 集群(转载)
    目录定制Rook集群placement调度概述清理重建rook集群删除资源对象删除rook源数据目录清理磁盘信息,登陆到每个节点上,将vgs和pv删除删除devicemapper映射,登陆到......
  • 04 Ceph 集群管理(转载)
    目录Ceph集群管理Ceph资源对象monitor、mgr和osd、csiprovisioner以Deployments的形式部署CSI的CephFS驱动和RBD驱动以DaemonSets的方式部署对外提供服务均......
  • 分布式锁-redission锁重试和WatchDog机制
    抢锁过程中,获得当前线程,通过tryAcquire进行抢锁,该抢锁逻辑和之前逻辑相同1、先判断当前这把锁是否存在,如果不存在,插入一把锁,返回null2、判断当前这把锁是否是属于当前线......