ElasticSearch 集群管理


集群介绍

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

为什么要集群,原来的项目都是单体架构,一旦机器挂了,那就不能进行工作了。若是我们用了三台机器,都存储一样的东西,这三个同时对外提供服务,一旦有一个挂了还不影响,这就是集群来解决高可用。集群还可以解决负载均衡的问题。

集群总结下:集群解决的问题就是:1、让系统高可用。2、分担请求压力。

但是以后业务数据越来越多,每个机器已经无法存储了,那怎么办?
不能是买个更好的机器吧,那也太土豪了吧,那我们就用很多个机器来存储数据,那么就变成了集群分布式架构。集群分布式架构就是原来每个机器都存一样的数据,现在A、B两台机器合在一起存一整个ES数据,C、D一起存一整个ES数据。
分布式解决的问题:1、分担存储和计算的压力,提速。2、解耦。

ElasticSearch 集群特点

1、ElasticSearch天然支持分布式,不用引用第三方的插件、组件。
2、ElasticSearch的设计隐藏了分布式本身的复杂性。ES把分布式设计的复杂性隐藏了,让用户少量的配置就可以完成分布式的搭建。你就搭建好集群就行,内部ES如何操作我们不用担心。

ElasticSearch集群分布式架构相关概念

1、 集群(cluster):一组拥有共同的cluster name的节点,节点就是ES的一个实例。

2、 节点(node):集群中的一个ElasticSearch实例。
3、 索引(index):es存储数据的地方,相当于关系数据库中的database概念。
4、 分片(shard):索引可以被拆分为不同的部分进行存储,成为分片。在集群环境下,一个索引的不同分片可以拆分到不同的节点中。


一个索引被分片成了 0、1、2,分别存在了三个节点中。他们就是拥有共同名称的节点,作为一个集群。但是不能遇到故障,万一ES-node-1挂掉了,那就完蛋了。接下来引入下面的概念。
5、 主分片(Primary shard):相对于副本分片的定义。
6、 副本分片(Replica shard):每个主分片可以有一个或多个副本,数据和主分片一样。
但是每个节点都是自己的主分片和副本分片,机器一旦挂了还是完蛋了,那就让副本分片存在其他节点中。不要把鸡蛋放在一个篮子里,以上说的是实现过程,ES都帮我们处理了,不需要我们操心了。

搭建集群

前提:ES可是个吃货,配置一定要调高。 建议2核2G。



Linux操作如下:


Linux操作如下:




node.master: true,nide.data: true 这两个都有true就是证明他都有竞争主节点的资格。

Linux操作如下:
若之前配置过单节点,那就把原来的删除掉。


配置第二台

Linux操作如下:

配置第三台:

Linux操作如下:

最后对日志文件进行授权

启动前要配置JVM的内存大小,不然就会报下方的错误。建议将三台的配置都改了,不然3G弄满了。

修改为256M

Linux操作如下:

启动三个服务 ./elasticsearch 一定不要用root权限启动。

访问下,访问不到就是防火墙的事了,那就切回root权限,关闭防火墙即可。命令:systemctl stop firewalld

这时候我们访问集群,在路径后面加 /_cat/health?v,这个时候应该是不成功的

报了主节点没发现的异常。
这时我们启动第二台的elasticsearch,再次访问


若在启动第三台,他就不会选举了,一号还是主节点。

使用Kibana配置和管理集群

Kibana配置就是把ES集群的地址配置到Kibana上。

Linux操作如下:

然后去bin目录,启动


打开浏览器访问下

点击stack monitoring

刚开始是关着的,给他打开



点击node

JAVAAPI访问集群

创建个索引

添加数据

创建实体,里面有三个ES的host、port。并创建get、set、toString方法。

application.yml

配置Client

通过集群的方式访问ES

以上代码跟之前学习的没有区别,集群就是把多台机器配置即可,那数据存到哪里了?分片呢?我们往下接着学习

集群原理

分片配置

在创建索引时,如果不设置指定的分片配置,默认主分片为1片,副本分片为1片。

之前我们创建的索引,在主节点上有数据,子节点也有数据,下图可以看到,主分片在2节点上,副本分片在主节点上。

那如何设置分片呢?


生成完一共6个节点,每个节点存的都不一样,任何一个挂了都不影响其他,这就是ES帮我们处理的。

现在模拟把第三台服务器挂掉

我们再查询下数据,也是可以访问的

回到kibana,3号已经挂掉了。


我们刷下页面,ES他会重新分配分片。

他又重新分配了,这就是节点的自平衡。不得不说这操作太嚣张了!!!!!
若你再把3号启动了,他又给你处理了,嚣张,嚣张。
知识点:分片与自平衡:当节点挂掉后,挂掉的节点分片会自平衡到其他节点中。

在ElasticSearch中,每个查询在每个分片的单个线程中执行,但是,可以并行处理多个分片。分片数量一旦确定好,不能修改。
那问题又来了,设置多少个分片合适呢?
索引分片推荐配置方案:
1、 每个分片推荐大小10G~30G之间
2、 分片数量推荐 = 节点数量 * 1~3倍 比如你3个节点,推荐分片就是3~9个
思考:比如有1000GB的数据,应该有多少个分片?多少个节点?
40个分片 20个节点 1000除以 25G等于40 40除以2等于20节点

路由原理

文档存入对应的分片,ES计算分片编号的过程,成为路由。
那么ES怎么知道一个文档应该存入哪个分片呢?
查询时,根据文档id查询文档,ES又该去哪个分片中查询数据呢?


由于5号文档在2号节点上,他的副本分片就对应在1号节点上。

假如我们在查id为5的文档,但是我们算完在2节点上,但是2节点挂了,那么他就会去1节点上找数据。

脑裂



我们见下图,8个节点本来1号是主节点,后来3、4、7、8不认1号为主节点,让3号为主节点,这样出现两个集群这就是脑裂。

那如何解决呢?
把服务器停掉,在修复好,再启动。这个问题既然没有好的办法去解决,那就规避脑裂出现的可能。

那什么情况下可能出现脑裂呢?
第一种:网络原因


在外网上每个节点相互通信有延迟,3号访问1,1没给响应,4,7,8也发现1没响应,他们以为1挂了,那就揭竿而起了,3当了主节点
第二种:节点负载
主节点要处理数据,他工作量太大了,假死了。3,4,7,8又访问不了他了,就又揭竿而起了。


第三种:JVM内存回收

总结:

那如何避免呢?

集群扩容

集群停了,重新搭建即可,原来3个的配置文件,改为配置4个、5个等,即可。

ElasticSearch 集群管理相关推荐

  1. ElasticSearch集群管理

    目录 1 集群介绍 2 ES集群相关概念 3 集群搭建 4 kibina管理集群 5 JavaAPI 访问集群 6 分片配置 7 路由原理 8 脑裂 1 集群介绍 集群和分布式: ​ 集群:多个人做一 ...

  2. Elasticsearch - 集群管理工具Head插件

    elasticsearch-head elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es.或直接下 ...

  3. 【Elasticsearch入门】Elasticsearch集群管理

    1.集群节点监控 在 Elasticsearch的运行期间,一个很重要的方面就是监控.这使得系统管理员能够检测并预防可能性的问题,或至少知道失败时会发生什么. Elasticsearch提供了非常详细 ...

  4. elasticsearch集群管理插件之cerebro安装配置

    1.了解cerebro cerebro是一个开源(MIT许可)elasticsearch web管理工具,使用Scala.Play Framework.AngularJS和Bootstrap构建.ce ...

  5. Elasticsearch集群原理、安装和基本使用

    Elasticsearch(ES)是一个基于Lucene构件的开源.分布式.RESTful接口全文搜索引擎.ES还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的 ...

  6. Elasticsearch中的document数据格式,简单的集群管理,商品的索引的CRUD操作(学习资料记录)

    1.Document数据格式 面向文档的搜索分析引擎 (1)应用系统的数据结构都是面向对象的,复杂的. (2)对象数据存储到数据库中,只能拆解开来,变为扁平的多张表,每次查询的时候还得还原回对象格式, ...

  7. 数据源管理 | 搜索引擎框架,ElasticSearch集群模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.集群环境搭建 1.环境概览 ES版本6.3.2,集群名称esmaster,虚拟机centos7. 服务群 角色划分 说明 en-maste ...

  8. elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)

    一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...

  9. ElasticSearch安装、IK、映射、索引管理、搜索管理和集群管理

    ElasticSearch 一.ElasticSearch 1.1 概念 1.2 原理与应用 1.2.1 索引结构 1.2.3 RESTful应用 二.ElasticSearch安装 2.1 Wind ...

最新文章

  1. 安全配置交换机端口 提高网络安全性
  2. mysql 逗号 join_关于sql:MySQL中逗号分隔的连接和语法连接有什么区别?
  3. VTK:可视化算法之PlateVibration
  4. Tomcat+Nginx+Memcached集群部署
  5. ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试撒擦撒擦是
  6. java 伪异步 netty,大话netty系列之--伪异步BIO
  7. java web Jersey_使用CXF和Jersey框架来进行Java的WebService编程
  8. leetcode题解25-K个一组翻转链表
  9. [翻译]进化游戏的层次结构 - 用组件来重构你的游戏实体
  10. Flutter原理 flutter架构、flutter UI系统、BuildContext、Widget与Element、命中测试hitTest、flutter显示流程分析
  11. 使用tomcat7-maven-plugin部署Web项目
  12. ie浏览器和谷歌浏览器控件不同_win7系统怎么重置ie浏览器 重置ie浏览器操作方法【详解】...
  13. 怎么将几张pdf合并成一张_怎么把多个PDF合并成一个PDF?分享合并PDF文件最简单的方法...
  14. N1盒子使用T1遥控和电视一起开关机以及按键设置
  15. Eclipse和IDEA哪个好
  16. 如何启用计算机的远程服务,如何启用远程Windows命令行管理程序
  17. hbuilder发生了错误请参阅日志文件1545838571032
  18. Unity3d C#实现程序的加密狗验证功能(PC)
  19. .NET应用程序安全操作概述
  20. 推荐一个记事本程序(替代windows记事本)

热门文章

  1. 2020-03-23
  2. git设置账户名密码
  3. RPC(Remote Procedure Call Protocol)远程通信框架
  4. 自考计算机网络工程本科考哪些科,自考网络工程本科考试科目有哪些
  5. Android 装备选择
  6. 易语言调用大漠插件制作游戏脚本的教程
  7. 连接远程报错:出现身份验证错误
  8. 魅族16s Pro上手体验:补齐16s硬件上的不足,增强了拍照能力
  9. prettier批量格式化等命令
  10. 专题·树链剖分【including 洛谷·【模板】树链剖分