`

elasticsearch 集群

    博客分类:
  • ELK
 
阅读更多

elasticsearch 集群

搭建elasticsearch的集群

现在假设我们有3台es机器,想要把他们搭建成为一个集群

基本配置

每个节点都要进行这样的配置:

cluster.name: baichebao-cluster

这个是配置集群的名字,为了能进行自动查找

node.name: "baichebao-node-1"

这个是配置当前节点的名字,当然每个节点的名字都应该是唯一的

node.master: false
node.data: true

这两个配置有4种配置方法,表示这个节点是否可以充当主节点,这个节点是否充当数据节点。
如果你的节点数目只有两个的话,为了防止脑裂的情况,需要手动设置主节点和数据节点。其他情况建议直接不设置,默认两个都为true.

network.host: "0.0.0.0"

绑定host,0.0.0.0代表所有IP,为了安全考虑,建议设置为内网IP

transport.tcp.port: 10800

节点到节点之间的交互是使用tcp的,这个设置设置启用的端口

http.port: 9700

这个是对外提供http服务的端口,安全考虑,建议修改,不用默认的9200

discovery.zen.ping.multicast.enabled: false
discovery.zen.fd.ping_timeout: 100s
discovery.zen.ping.timeout: 100s
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts: ["12.12.12.12:10801"]

这几个是集群自动发现机制

discovery.zen.ping.multicast.enabled 这个设置把组播的自动发现给关闭了,为了防止其他机器上的节点自动连入。
discovery.zen.fd.ping_timeoutdiscovery.zen.ping.timeout是设置了节点与节点之间的连接ping时长
discovery.zen.minimum_master_nodes 这个设置为了避免脑裂。比如3个节点的集群,如果设置为2,那么当一台节点脱离后,不会自动成为masterdiscovery.zen.ping.unicast.hosts 这个设置了自动发现的节点。

action.auto_create_index: false

这个关闭了自动创建索引。为的也是安全考虑,否则即使是内网,也有很多扫描程序,一旦开启,扫描程序会自动给你创建很多索引。

在bin/elasticsearch里面增加两行:

ES_HEAP_SIZE=4g
MAX_OPEN_FILES=65535

这两行设置了节点可以使用的内存数和最大打开的文件描述符数。

好了,启动三个节点他们就会互相自己连起来成为集群了。

自动选举

elasticsearch集群一旦建立起来以后,会选举出一个master,其他都为slave节点。
但是具体操作的时候,每个节点都提供写和读的操作。就是说,你不论往哪个节点中做写操作,这个数据也会分配到集群上的所有节点中。

这里有某个节点挂掉的情况,如果是slave节点挂掉了,那么首先关心,数据会不会丢呢?不会。如果你开启了replicate,那么这个数据一定在别的机器上是有备份的。
别的节点上的备份分片会自动升格为这份分片数据的主分片。这里要注意的是这里会有一小段时间的yellow状态时间。

如果是主节点挂掉怎么办呢?当从节点们发现和主节点连接不上了,那么他们会自己决定再选举出一个节点为主节点。
但是这里有个脑裂的问题,假设有5台机器,3台在一个机房,2台在另一个机房,当两个机房之间的联系断了之后,每个机房的节点会自己聚会,推举出一个主节点。
这个时候就有两个主节点存在了,当机房之间的联系恢复了之后,这个时候就会出现数据冲突了。
解决的办法就是设置参数:

discovery.zen.minimum_master_nodes

为3(超过一半的节点数),那么当两个机房的连接断了之后,就会以大于等于3的机房的master为主,另外一个机房的节点就停止服务了。

对于自动服务这里不难看出,如果把节点直接暴露在外面,不管怎么切换master,必然会有单节点问题。所以一般我们会在可提供服务的节点前面加一个负载均衡。

自动发现

elasticsearch的集群是内嵌自动发现功能的。

意思就是说,你只需要在每个节点配置好了集群名称,节点名称,互相通信的节点会根据es自定义的服务发现协议去按照多播的方式来寻找网络上配置在同样集群内的节点。
和其他的服务发现功能一样,es是支持多播和单播的。多播和单播的配置分别根据这几个参数:

discovery.zen.ping.multicast.enabled: false
discovery.zen.fd.ping_timeout: 100s
discovery.zen.ping.timeout: 100s
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts: ["12.12.12.12:10801"]

多播是需要看服务器是否支持的,由于其安全性,其实现在基本的云服务(比如阿里云)是不支持多播的,所以即使你开启了多播模式,你也仅仅只能找到本机上的节点。
单播模式安全,也高效,但是缺点就是如果增加了一个新的机器的话,就需要每个节点上进行配置才生效了。

参考文档

http://kibana.logstash.es/content/elasticsearch/principle/auto-discovery.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-zen.html

分享到:
评论

相关推荐

    springboot整合ElasticSearch集群

    springboot 2.0.2集成elasticsearch5.5.1,并使用集群模式,亲测可用!!!

    elasticsearch集群安装包

    在本篇中,我们将深入探讨如何进行 Elasticsearch(简称 ES)集群的安装。 首先,了解集群的概念至关重要。在 Elasticsearch 中,集群是一组节点(运行 Elasticsearch 的服务器),它们共同存储数据并处理搜索和...

    elasticsearch集群节点监控脚本异常通过mail465发送邮件通知.rar

    标签"es 集群节点监控"表明脚本专注于Elasticsearch集群的节点监控,这通常包括检查节点是否在线、是否有未分配的分片、是否达到设定的负载阈值等。例如,脚本可能会检查 `_cluster/health` API以获取整体集群的健康...

    CentOS7下搭建多节点Elasticsearch集群.docx

    CentOS7 下搭建多节点 Elasticsearch 集群 Elasticsearch 是一个基于 Lucene 的搜索服务器,提供了实时搜索、数据分析、数据存储等功能。 CentOS7 是一个流行的 Linux 发行版,搭建多节点 Elasticsearch 集群可以...

    Elasticsearch集群安装配置.docx

    Elasticsearch集群安装配置 Elasticsearch 是一个基于 Apache Lucene 的搜索和数据分析引擎,支持实时搜索、数据分析和报表生成等功能。为了实现高可用性和高性能,Elasticsearch 集群安装配置是非常重要的。本文将...

    elasticsearch集群化搭建

    ### Elasticsearch集群化搭建详解 #### 一、概述 Elasticsearch 是一款基于 Lucene 的分布式搜索引擎,它提供了全文检索、结构化检索以及分析等功能。在实际应用中,为了提高 Elasticsearch 的稳定性和性能,通常...

    ElasticSearch集群部署方式

    ### ElasticSearch集群部署方式 ElasticSearch是一种分布式搜索与分析引擎,适用于全文检索、结构化检索等场景。本文档将详细介绍ElasticSearch集群部署的方法及其配置,并解释如何针对不同的操作系统进行配置,...

    Elasticsearch集群.pdf

    下面我们就来深入探讨如何搭建一个基于Elasticsearch的集群环境,并实现一些高级功能,比如head插件的安装与使用,以及ES用户认证的创建。 首先,为了安装Elasticsearch,需要准备以下软件环境: - Java环境:...

    Go-vulcanizer一个用于与Elasticsearch集群交互的golang库

    1. **集群健康检查**:利用Go-vulcanizer,可以实时获取集群的健康状态,包括节点的状态、索引的分配情况以及集群的整体运行状况,这对于监控和维护ES集群至关重要。 2. **数据迁移**:在扩展或调整Elasticsearch...

    ES集群部署方案.pptx

    ES(Elasticsearch)集群部署是指将多个 ES 节点组成的集群,以提高搜索和索引的性能和可用性。下面是 ES 集群部署方案的详细解释: 集群配置 在 ES 集群中,每个节点都需要配置集群名称(cluster.name)、节点...

    一键部署elasticsearch集群/单机版shell脚本(适用于Centos7 x86服务器)

    该安装包实现利用给定参数安装单机版或者集群版es数据库,指定参数后安装过程全自动,自动修改系统内核,配置jdk,自动识别并配置内存,自动根据节点数配置集群脑溢节点配置数。涉及到以下操作 1、自动检测配置java...

    Kubernetes持久化部署elasticsearch7.15.0分布式集群

    原文链接:https://blog.csdn.net/m0_37814112/article/details/122965720 说明:包含elasticsearch7.15.0集群3节点、5节点、7节点等三种方式的K8S部署yaml文件、镜像文件,里面有详细的README.txt部署参考

    Go-Golang程序从一组kafka主题中读取记录并将它们写入elasticsearch集群

    本项目涉及到一个用Go编写的程序,它实现了从Apache Kafka主题中读取数据,并将这些数据写入Elasticsearch集群。Kafka是一个分布式流处理平台,而Elasticsearch则是一种流行的全文搜索引擎和实时数据分析工具。接...

    ElasticSearch集群搭建.doc

    在本文中,我们将深入探讨如何搭建Elasticsearch集群以及索引分片的相关概念。Elasticsearch是一个分布式的、实时的搜索和分析引擎,它能够处理大量数据并提供高效的检索服务。在多节点环境下构建Elasticsearch集群...

    ElasticSearch集群统计Bigdesk.zip

    可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。版本对应关系表: Bigdesk Elasticsearch 2.4.0 1.0.0.RC1 ... 1.0.x n/a 1.0.0.Beta1 ... 1.0.0...

    CentOS7下Elasticsearch高可用集群方案-完整部署记录(个人珍藏版)

    在本文中,我们将深入探讨如何在CentOS 7操作系统上部署Elasticsearch的高可用性集群。Elasticsearch是一款流行的开源搜索引擎和分析引擎,广泛应用于日志分析、实时数据分析等领域。构建一个高可用的Elasticsearch...

Global site tag (gtag.js) - Google Analytics