elasticsearch 集群详解

ES为什么要实现集群

在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。

如果使用ES集群,会将单台服务器节点的索引文件使用分片技术,分布式的存放在多个不同的物理机器上,从而可以实现高可用、容错性等。

es核心存放的是索引。

什么是分片技术

将数据拆分成多台节点进行存放。

ES是如何解决高并发

ES是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用 分片机制、集群发现、分片负载均衡请求路由。

Shards 分片:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

Replicas分片:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

ES集群核心原理分析

1、每个索引会被分成多个分片shards进行存储,默认创建索引是分配5个分片进行存储,每个分片都会分布式部署在多个不同的节点上进行部署,该分片成为primary shards 主分片。

查看索引分片信息

http://192.168.0.110:9200/myindex/_settings

结果为:

{
    "myindex":{
        "settings":{
            "index":{
                "creation_date":"1559964953858",
                "number_of_shards":"5",  //主分片
                "number_of_replicas":"1", //副分片
                "uuid":"PPLrlfo6Re2z6KMrVfaMWg",
                "version":{
                    "created":"6040399"
                },
                "provided_name":"myindex"
            }
        }
    }
}

在ES 中每一个主的分片都有一个对应的副分片,这里总共由10分片。

注意:索引的主分片数量定义好后,不能被修改。主分片数量一旦定义好之后就不能修改,但是副分片的数量是可以修改的。

2、每一个主分片为了实现高可用,都会有自己对应的备分片,主分片对应的备分片不能存放同一台服务器上,主分片可以和其他备分片存放在同一个node节点上。

单台 ES 服务器中是没有副分片的。

documnet routing(数据路由)

当客户端发起创建document的时候,es需要确定这个document放在该index哪个shard上。这个过程就是数据路由。

路由算法:shard = hash(routing) % number_of_primary_shards

如果number_of_primary_shards在查询的时候取余发生的变化,无法获取到该数据

ES是相关名词

Cluster:代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

Shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。  replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

Recovery:代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

ES集群环境搭建

服务集群配置

修改配置文件

目录:/usr/local/es/elasticsearch-6.4.3/config

vi elasticsearch.yml

cluster.name: myes  ###保证三台服务器节点集群名称相同

node.name: node-1 #### 每个节点名称不一样 其他两台为node-1 ,node-2

network.host: 192.168.212.110 #### 实际服务器ip地址

discovery.zen.ping.unicast.hosts: ["192.168.0.105", "192.168.0.108","192.168.212.110"]##多个服务集群ip

discovery.zen.minimum_master_nodes: 1

关闭防火墙 systemctl stop firewalld.service

默认底层开启9300 集群

验证集群效果

http://192.168.0.110:9200/_cat/nodes?pretty

注意克隆data文件会导致数据不同步

报该错误解决办法

failed to send join request to master

因为克隆导致data文件也克隆呢,直接清除每台服务器data文件,data目录:/usr/local/es/elasticsearch-6.4.3/data 。

效果如下,第一张图是添加索引,第二张是查询索引。注意它们的 ip 不一致,这样说明集群环境搭建成功了。

原文地址:https://www.cnblogs.com/ming-blogs/p/11001282.html

时间: 2024-08-06 18:24:16

elasticsearch 集群详解的相关文章

Centos7安装mariadb galera cluster数据库集群 & 详解

#Galera集群特点 集群之间无延时,同步复制.而master-slave主从异步复制,存在延迟. active-active多主,集群内部服务器都是同时写,必须等所有集群内所有数据库都完成数据写入,才会反馈完成,所以不存在数据丢失的情况. 集群节点自动故障转移,如果集群中单个节点故障,失效节点会自动被清除. 扩展方便,只要将新的节点添加到集群,新节点自动复制数据. #Galera集群原理     #主要通过galera插件保证数据的一致性,该数据复制的过程是可认证的复制,原理如下: #解析

Linux集群详解

Linux集群详解 集群或者说是群集:其目的是为了实现将多台计算机组合以来完成特定的任务,比如天气预报,大型网络游戏,这些都需要很大的运算量,单台计算机实现成本太高,而且不显示.那么就需要通过集群的方式,将废弃的或者正在使用的计算机联合起来,结合整体的力量来解决这些问题 集群类型: 1.  负载均衡集群 load blancing ,简称LB 2.  高可用性集群 high availibility,简称 HA 3.  高性能集群 high performance,简称 HP 作用: 1.  负

Openfire Hazelcast集群详解

Openfire Hazelcast集群详解 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs 一.概述 Openfire Hazelcast插件提供了在一个集群上运行多个冗余Openfire服务器的支持.通过把Openfire运行为一个集群,可以把终端的连接分配到多台Openfire服务器上,同时还提供了服务器的故障转移.Hazelcast个插件是Openfire原集群插件的替代,它使用了开源的Hazelcast数据分布框架来代替昂

LVS集群详解

一.什么是集群 LVS(Linux Virtual Server)Linux虚拟服务器,将多台虚拟主机组织起来满足同一个需求.由国人章文嵩开发,通过LVS提供的负载均衡可实现一个高性能.高可用的服务器群集,从而以低成本实现最优的服务性能. 二.集群类型   LB:Load balancing    高可用集群 HA:High Availavility    高可用集群 HP:High Performace     高性能集群 三.lvs的常用集群方式及其详解 1.lvs是由用户空间命令和工作在内

LVS集群详解(持续更新中)

一.LVS(Linux Virtual Server)简介: 背景:在Internet的飞速发展下,对于网络宽带和服务器的要求越来越高.因此,对用硬件和软件的方法实现高可用伸缩.高可用网络服务的需求不断增长.针对高可用伸缩.高可用网络服务的需求章文嵩博士在1988年5月成立了LVS自由软件项目,是基于IP层和基于内容请求分发的负载平衡调度方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的.高可用网络服务的虚拟服务器. 项目目标:使用集群技术和Linux操作系统实现一个高性

负载均衡LVS集群详解

 一.LB--负载均衡 在负载均衡集群中需要一个分发器,我们将其称之为Director,它位于多台服务器的上面的中间层,根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来进行响应请求,而其分发的方式则是根据某个算法进行的. 二.HA--高可用 高可用顾名思义就是服务的可用性比较高,即当我们不会因为某台服务器的宕机,从而造成我们的服务不可用,其工作模式则是将一个具有故障的服务转交给一个正常工作的服务器,从而达到服务不会中断. 三.LVS: LVS:Linux Virtual Serve

linux下高可用集群详解

1.高可用集群简单效果图 1.1.Messaging Layer:主要收集节点间的事务资源心跳等信息,分别有以下几种: heartbeatV1 heartbeatV2 heartbeatV3 corosync cman keepalived ultramokey 1.2.CRM:cluster resourse manager,对Messaging Layer收集到的资源进行管理,分别有以下几种: Heartbeat v1 自带的资源管理器:haresources Heartbeat v2 自带

高性能MySQL集群详解(二)

一.通过Keepalived搭建MySQL双主模式的高可用集群系统 1.MySQL Replication介绍: MySQL Replication是MySQL自身提供的一个主从复制功能,其实也就是一台MySQL服务器(称为Slave)从另一台MySQL服务器(称为Master)上复制日志,然后解析日志并应用到自身的过程.MySQL Replication是单向.异步复制,基本复制过程为:Master服务器首先将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志的循环,这些日志文件可以发送到

Rabbitmq集群详解

Rabbitmq简介 1.什么是rabbitmq? MQ全称为MessageQueue,消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.RabbitMQ 是一个由 Erlang 语言开发的 AMQP(高级消息队列协议) 的开源实现.RabbitMQ 属于消息中间件,主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然. 2.rabbitmq特点 可靠性(Reliability)Rabb