节点发现

启动一个Elasticsearch节点时,该节点会开始寻找具有相同集群名字并且可见的主节点。如果找到主节点,该节点加入一个已经组成了的集群;如果没有找到,该节点成为主节点(如果配置允许)。形成集群和寻找节点的过程称为发现
发现模块有两个目的:

  • 选出一个主节点
  • 发现集群中的新节点

发现的类型

默认没有安装额外插件的情况下,Elasticsearch允许使用Zen发现,它提供了多播和单播发现。

选择多播还是单播,首先需要确定网络是够处理多播消息。如果可以,使用多播更简单。如果不能处理多播,使用单播发现。单播发现更加安全:不想任何节点误加入你的集群中。

主节点

主节点检查所有其他节点,看它们是否有响应(其他节点也ping主节点)。主节点还将接受加入集群的新节点。如果主节点断开连接了,其余节点将从中选择一个新的主节点,这些过程都是基于配置自动完成的。

配置主节点和数据节点

默认情况下,Elasticsearch允许节点同时成为主节点和数据节点。

主节点的选取的配置

如果一个多节点的集群因为某些原因有几个节点断开了,这样剩下的两簇节点会形成两个具有相同名字的集群。这称为脑裂

为了防止脑裂发生,Elasticsearch提供了discovery.zen.minimum_master_nodes属性。定义了形成一个集群,有主节点资格并互相连接的节点的最小数目。

设置集群名

一般情况下建议设置集群的名字。

配置多播

多播是zen发现的默认方法。

  • discovery.zen.ping.multicast.group:用于多播请求的群组地址,默认是224.2.2.4
  • discovery.zen.ping.multicast.port:多播通信的端口号,默认54328
  • discovery.zen.ping.multicast.ttl:多播被认为有效的时间,默认3s
  • discovery.zen.ping.multicast.address:Elasticseach应该绑定的地址。默认是null,意味着elasticsearch将尝试绑定到系统可见的所有网络接口。

要禁用多播,在elasticsearch.yml文件中添加discovery.zen.ping.multicast.enabled属性为false。

配置单播

因为单播的工作方式,需要指定至少一个接收单播消息的主机。为此,在elasticsearch.yml文件中添加discovery.zen.ping.unicast.hosts属性。该属性指定了所有形成集群的主机。指定的主机中保证最少有一个工作。

也可以定义一个Elasticsearch可以使用的端口范围:

主机之间用逗号隔开,并指定预计用于单播消息的端口。

节点的ping设置

主节点和集群中的其他节点会互相ping。可以设置的属性如下:

这些值可以根据实际网络状况进行调节。

时光之门与恢复模块

除了索引和索引里面的数据,Elasticsearch还需要保存类型映射和索引级别的设置等元数据。此信息需要被持久化到别处,以便集群恢复事读取。

时光之门可以当做一个集群数据和元数据的安全避风港。每次启动集群,所有所需数据从时光之门读取,更改集群,使用时光之门模块保存。

时光之门

时光之门有多个类型,不过目前除了local类型,其他已经废弃,需要在elasticsearch.yml文件中添加gateway.type属性,值为local。local类型的写操作不是异步的。所以每当写操作完成,都可以确保数据已经被写入gateway(即它被索引或存储在事务日志中)。

恢复控制

除了选择时光之门类型外,Elasticsearch允许配置何时启动最初的恢复过程。恢复是初始化所有分片和副本的过程,从事务日志中读取所有数据,并应用到分片上。

假设有一个10个Elasticsearch节点组成的集群。应该通知Elasticsearch节点数目,设置gataway.expected_nodes属性为10。当集群中节点数据等于10时,Elasticsearch将立刻开始恢复过程。

也可以在8个节点之后开始恢复,设置gateway.recover_after_nodes属性为8。可以将它设置为任何我们想要的值,但应该把它设置为一个值以确保集群状态快照的最新版本可用,一般在大多数节点可用时开始恢复。

我们希望gateway在集群形成后的10分钟以后开始恢复,设置gateway.recover_after_time属性为10m。在gateway.recover_after_nodes属性指定数目的节点形成集群后,需要等待多长时间再开始恢复。

额外的gateway恢复选项

Elasticsearch--集群&时光之门和恢复控制的更多相关文章

  1. Elasticsearch集群 管理

    第7章 深入Elasticsearch集群 启动一个Elasticsearch节点时,该节点会开始寻找具有相同集群名字并且可见的主节点.如 果找到主节点,该节点加入一个已经组成了的集群:如果没有找到, ...

  2. 我的ElasticSearch集群部署总结--大数据搜索引擎你不得不知

    摘要:世上有三类书籍:1.介绍知识,2.阐述理论,3.工具书:世间也存在两类知识:1.技术,2.思想.以下是我在部署ElasticSearch集群时的经验总结,它们大体属于第一类知识“techknow ...

  3. Elasticsearch 集群 单服务器 超级详细教程

    前言 之前了解了Elasticsearch的基本概念.将spring boot + ElasticSearch + head插件 搞通之后.紧接着对es进行下一步的探索:集群.查阅资料的过程中,找到了 ...

  4. 使用Elasticsearch Operator快速部署Elasticsearch集群

    转载自:https://www.qikqiak.com/post/elastic-cloud-on-k8s/ 随着 kubernetes 的快速发展,很多应用都在往 kubernetes 上面迁移,现 ...

  5. 【Elasticsearch】深入Elasticsearch集群

    7.1 节点发现启动Elasticsearch的时候,该节点会寻找有相同集群名字且课件的主节点,如果有加入,没有自己成为主节点,负责发现的模块两个目的 选出主节点以及发现集群的新节点7.1.1发现的类 ...

  6. elasticsearch 集群

    elasticsearch 集群 搭建elasticsearch的集群 现在假设我们有3台es机器,想要把他们搭建成为一个集群 基本配置 每个节点都要进行这样的配置: cluster.name: ba ...

  7. Elasticsearch集群中处理大型日志流的几个常用概念

    之前对于CDN的日志处理模型是从logstash agent==>>redis==>>logstash index==>>elasticsearch==>&g ...

  8. elasticsearch 集群配置

    2015-10-10 09:56 by 轩脉刃, 999 阅读, 1 评论, 收藏, 编辑 elasticsearch 集群 搭建elasticsearch的集群 现在假设我们有3台es机器,想要把他 ...

  9. [译]使用explain API摆脱ElasticSearch集群RED苦恼(转)

    "哔...哔...哗",PagerDuty的报警通知又来了. 可能是因为你又遭遇了节点宕机, 或者服务器机架不可用, 或者整个ElasticSearch集群重启了. 不管哪种情况, ...

随机推荐

  1. html2canvas 导出包含滚动条的内容

    import html2canvas from 'html2canvas'; exportPDF() { // 导出为 pdf let dom = document.querySelector('yo ...

  2. 在webkit中如何避免触发layout(重排)

    很多web开发者都已经意识到,在脚本执行中,DOM操作的用时可能比js本身执行时间要长很多,其中潜在的消耗基本上是由于触发了layout(即重排reflow:由DOM树构建为Render渲染树的过程) ...

  3. Django 使用UEditor

    Django package 的一些包不支持upload file, 而且 有几个支持的不是收费的就是要开csrf ,这对于苦逼程序猿来说始终是件恼火的事.所以经过查阅各种资料.看了各种各样的配置do ...

  4. 利用JS 阻止表单提交

    情景一:不存在Ajax异步操作 1 使用背景:会议室预定管理系统中,当表单提交的时候需要验证预约的时间是否符合预定规则(不需要通过访问服务器),否则提示错误信息,阻止表单提交. 2 相关技术点: fo ...

  5. Spring 各种注解(@)的含义与认识

    依赖注入,从字面上理解,即是:以注入的方式实现依赖: Spring 容器负责创建应用程序中的 bean,并通过 DI(依赖注入)来协调这些对象之间的关系.当描述 bean 如何进行装配(autowir ...

  6. BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs

    BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2 ...

  7. P4317 花神的数论题 dp

    这题我一开始就想到数位dp了,其实好像也不是很难,但是自己写不出来...常规套路,f[i][j][k][t],从后往前填数,i位,j代表是否卡着上沿,k是现在有几个1,t是想要有几个.记忆化搜索就ok ...

  8. 转3xian之所在 (一位ACM大牛的博文)

    3xian的经历和见解...我深思... 最后一天,漫天飘起了雪花,假装欢送我离去. 这次WF之战不太顺利,早期的C题大概花了1秒钟构思,然而由于输出格式多了一个空格直到两个半小时才逃脱Wrong A ...

  9. Linux的gnu c下itoa的代替函数用sprintf(转载)

    转自:http://www.linuxidc.com/Linux/2011-01/31600.htm int number = 12345; char string[25]; // itoa(numb ...

  10. python3.6 + selenium2.53.1 查询数据库并将返回的内容中每一行的内容转换成class对象

    环境: win10 python3.6 selenium2.53.1 准备工作:先安装pymysql python2.x链接数据库使用MySQLdb,而python3.x链接数据库使用pymysql ...