elasticsearch 集群

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_timeout和discovery.zen.ping.timeout是设置了节点与节点之间的连接ping时长
discovery.zen.minimum_master_nodes 这个设置为了避免脑裂。比如3个节点的集群,如果设置为2,那么当一台节点脱离后,不会自动成为master。
discovery.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

from:http://www.cnblogs.com/yjf512/p/4865930.html

时间: 2024-08-08 09:42:41

elasticsearch 集群的相关文章

ElasticSearch集群服务器配置

一.安装 简单的安装与启动于前文ElasticSearch初探(一)已有讲述,这里不再重复说明. 二.启动 1.自带脚本启动 1)bin/elasticsearch,不太任何参数,默认在前端启动 2)bin/elasticsearch-d,带参-d,表示在后台作为服务线程启动 还可以设置更多的参数:bin/elasticsearch-Xmx2g-Xms2g-Des.index.store.type=memory--node.name=my-node 注意:如果是在局域网中运行elasticsea

剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段

转载:http://www.infoq.com/cn/articles/anatomy-of-an-elasticsearch-cluster-part02 共识——裂脑问题及法定票数的重要性 共识是分布式系统的一项基本挑战.它要求系统中的所有进程/节点必须对给定数据的值/状态达成共识.已经有很多共识算法诸如Raft.Paxos等,从数学上的证明了是行得通的.但是,Elasticsearch却实现了自己的共识系统(zen discovery),Elasticsearch之父Shay Banon在

(转)Elasticsearch集群的脑裂问题

转自 http://blog.csdn.net/cnweike/article/details/39083089 所谓脑裂问题(类似于精神分裂),就是同一个集群中的不同节点,对于集群的状态有了不一样的理解. 今天,Elasticsearch集群出现了查询极端缓慢的情况,通过以下命令查看集群状态: curl -XGET 'es-1:9200/_cluster/health' 发现,集群的总体状态是red,本来9个节点的集群,在结果中只显示了4个:但是,将请求发向不同的节点之后,我却发现即使是总体状

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

摘要:世上有三类书籍:1.介绍知识,2.阐述理论,3.工具书:世间也存在两类知识:1.技术,2.思想.以下是我在部署ElasticSearch集群时的经验总结,它们大体属于第一类知识“techknowledge(技术)”.但其中也穿插一些我个人的理解.敬请指正. 关键词:ElasticSearch, 搜索引擎, 集群, 大数据, Solr, 大数据 三类书籍 和 两类知识: 有一些书是对某一新知识领域的介绍,将此知识领域从头到尾.从内而外剖开了分析,吸收这些知识主要在于“记忆”,(也有“领会”)

Elasticsearch集群知识笔记

Elasticsearch集群知识笔记 Elasticsearch内部提供了一个rest接口用于查看集群内部的健康状况: curl -XGET http://localhost:9200/_cluster/health response结果: { "cluster_name": "format-es", "status": "green", ... } 这里的status有3种状态,分别是green(所有主分片和复制分片都可用

ElasticSearch集群搭建

一.前言 先介绍ElasticSearch的几个核心概念. 集群(cluster): 一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能.一个集群由一个唯一的名字标识,这个名字默认就是"elasticsearch".这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群. 节点(node): 一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能.和集群类似,一个节点也是由一个名字来标识的,默

Elasticsearch 集群版本升级步骤及注意事项

Elasticsearch 自从1.0.7版本之后,集群各节点的滚动式升级已不需要重启集群,相比之前的升级模式来看,可以非常平滑的渡过升级过程.这里将叙述集群滚动式升级及其注意事项. 1.升级前的准备工作 从Elasticsearch 的官方网站 https://www.elastic.co/downloads/elasticsearch 下载最新版本的Elasticsearch,为了线上方便对数据包的管理,一版选择 .gz.tar 格式或者 .zip 格式文件. 解压缩最新版本文件压缩包到指定

剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作

剖析Elasticsearch集群系列涵盖了当今最流行的分布式搜索引擎Elasticsearch的底层架构和原型实例. 本文是这个系列的第一篇,在本文中,我们将讨论的Elasticsearch的底层存储模型及CRUD(创建.读取.更新和删除)操作的工作原理. Elasticsearch是当今最流行的分布式搜索引擎,GitHub. SalesforceIQ.Netflix等公司将其用于全文检索和分析应用.在Insight,我们用到了Elasticsearch的诸多不同功能,比如: 全文检索 比如找

【ELK】03、ElasticSearch集群

上一篇主要学习了ES及其插件的安装,这一篇主要学习ES集群及其节点管理 一.ES集群概述 1.ES集群简介 ES就是为高可用和可扩展而生的,服务器的扩展可以通过购置性能更强的服务器(垂直扩展或者向上扩展,Vertical Scale/Scaling Up),亦或是通过购置更多的服务器(水平扩展或者向外扩展,Horizontal Scale/Scaling Out)来完成.尽管ES能够利用更强劲的硬件,垂直扩展毕竟还是有它的极限.真正的可扩展性来自于水平扩展 - 通过向集群中添加更多的节点来分布负

ElasticSearch集群配置

elasticsearch集群搭建,可以把索引进行分片存储,一个索引可以分成若干个片,分别存储到集群里面,而对于集群里面的负载均衡,副本分配,索引动态均衡(根据节点的增加或者减少)都是elasticsearch自己内部完成的,一有情况就会重新进行分配. 下面先是介绍几个关于elasticsearch的几个名词 1.cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字面上理解就是无中心节点,