4.Elasticsearch集群部署详解

转载 2018年04月17日 11:42:38

原文地址:blog.csdn.net/laoyang360 https://blog.csdn.net/wojiushiwo987/article/details/72850834

1、题记

之前应用都是Elasticsearch单节点,随着业务的拓展、数据量的增多,部署分布式Elasticsearch刻不容缓。

本文以Elaticsearch2.3.4版本为基础,讲解Elasticsearch三个节点的分布式部署、核心配置的含义以及分布式部署遇到的坑。

2、三节点 Elasticsearch 分布式部署。

步骤1:配置好主节点Master信息。

# ======================== Elasticsearch Configuration =========================
 13 # ---------------------------------- Cluster -----------------------------------
 14 #
 15 # Use a descriptive name for your cluster:
 16 # 簇名称,分布式部署,确保该名称唯一。
 17 cluster.name: my-application
 18 #
 19 # ------------------------------------ Node ------------------------------------
 20 #
 21 # Use a descriptive name for the node:
 22 # 节点名称
 23 node.name: laoyng
 24 node.master: true
 25 node.data: true
 26 #
 27 # Add custom attributes to the node:
 28 #
 29 # node.rack: r1
 30 #
 31 # ----------------------------------- Paths ------------------------------------
 32 # 数据存储
 33 # Path to directory where to store the data (separate multiple locations by comma):
 34 #
 35 path.data: /data/elasticsearch/data
 36 path.logs: /data/logs/elasticsearch
 37 path.plugins: /data/elasticsearch/plugins
 38 path.scripts: /data/elasticsearch/scripts
 39 #
 40 # Path to log files:
 41 #
 42 # path.logs: /path/to/logs
 43 #
 44 # ----------------------------------- Memory -----------------------------------
 45 #
 46 # Lock the memory on startup:
 47 #
 48 bootstrap.mlockall: true
 49 #
 50 # Make sure that the `ES_HEAP_SIZE` environment variable is set to about half the memory
 51 # available on the system and that the owner of the process is allowed to use this limit.
 52 #
 53 # Elasticsearch performs poorly when the system is swapping the memory.
 54 #
 55 # ---------------------------------- Network -----------------------------------
 56 #
 57 # Set the bind address to a specific IP (IPv4 or IPv6):
 58 # IP地址
 59 network.host: 110.10.11.130
 60 #
 61 # Set a custom port for HTTP:
 62 # 端口
 63 http.port: 9200

 68 # --------------------------------- Discovery ----------------------------------
 69 #
 70 # Pass an initial list of hosts to perform discovery when new node is started:
 71 # The default list of hosts is ["127.0.0.1", "[::1]"]
 76 discovery.zen.ping.unicast.hosts: [" 110.10.11.130 :9300", "10.118.110.112:9300", "110.0.11.143:9300"]
 77 # Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
 78 #
 79 # discovery.zen.minimum_master_nodes: 3
 80 #
 81 discovery.zen.minimum_master_nodes: 2
 82 # For more information, see the documentation at:
 85 # ---------------------------------- Gateway -----------------------------------
 86 #
 87 # Block initial recovery after a full cluster restart until N nodes are started:
 88 #
 89 # gateway.recover_after_nodes: 3
 90 gateway.recover_after_nodes: 3
 91 gateway.recover_after_time: 5m
 92 gateway.expected_nodes: 1
 93 #
 97 # ---------------------------------- Various -----------------------------------
 98 #
 99 # Disable starting multiple nodes on a single system:
100 #
101 # node.max_local_storage_nodes: 1
102 #
103 # Require explicit names when deleting indices:
104 #
105 # action.destructive_requires_name: true
106 #index.analysis.analyzer.ik.type : “ik”
107 script.engine.groovy.inline.search: on
108 script.engine.groovy.inline.aggs: on
109 indices.recovery.max_bytes_per_sec: 100mb
110 indices.recovery.concurrent_streams: 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87

步骤2:拷贝到节点2 cient节点;修改节点名称信息。

只列举不一样的配置:

node.name: laoyng02
node.master: true
node.data: false
network.host: 10.118.110.112
  • 1
  • 2
  • 3
  • 4

步骤3:拷贝到节点3 data节点;修改节点名称

只列举不一样的配置:

node.name: laoyng03
node.master: false
node.data:  true
network.host:  110.0.11.143
  • 1
  • 2
  • 3
  • 4

步骤4:分别运行Master,client,data节点(顺序无关)

./elasticsearch -d
  • 1

部署成功标志

这里写图片描述

2、部署节点原理

多机集群中的节点可以分为master nodes和data nodes,在配置文件中使用Zen发现(Zen discovery)机制来管理不同节点。Zen发现是ES自带的默认发现机制,使用多播发现其它节点。只要启动一个新的ES节点并设置和集群相同的名称这个节点就会被加入到集群中。(所以,同集群的集群名称一致,才能便于自动发现)

Elasticsearch集群中有的节点一般有三种角色:master node、data node和client node。

1)master node——master节点点主要用于元数据(metadata)的处理,比如索引的新增、删除、分片分配等。 
2)client node——client 节点起到路由请求的作用,实际上可以看做负载均衡器。

3)data node——data 节点上保存了数据分片。它负责数据相关操作,比如分片的 CRUD,以及搜索和整合操作。这些操作都比较消耗 CPU、内存和 I/O 资源;

3.elasticearch配置含义解释

1)集群名和节点名:

#cluster.name: elasticsearch
#node.name: "Franz Kafka"
  • 1
  • 2

2)是否参与master选举和是否存储数据

#node.master: true
#node.data: true
  • 1
  • 2

3)分片数和副本数

#index.number_of_shards: 5
#index.number_of_replicas: 1
  • 1
  • 2

4)master选举最少的节点数,这个一定要设置为N/2+1,其中N是:具有master资格的节点的数量,而不是整个集群节点个数。

#discovery.zen.minimum_master_nodes: 2
  • 1

5)discovery ping的超时时间,拥塞网络,网络状态不佳的情况下设置高一点

#discovery.zen.ping.timeout: 3s
  • 1

6)关闭自动发现节点:

discovery.zen.ping.multicast.enabled: false
  • 1

单播模式安全,也高效,但是缺点就是如果增加了一个新的机器的话,就需要每个节点上进行配置才生效了。

多播是需要看服务器是否支持的,由于其安全性,其实现在基本的云服务(比如阿里云)是不支持多播的,所以即使你开启了多播模式,你也仅仅只能找到本机上的节点。

7)定义发现的节点:

discovery.zen.ping.unicast.hosts: [" 110.10.11.130 :9300", "10.118.110.112:9300", "110.0.11.143:9300"]
  • 1

此处也可以写成hostname的形式。 
注意,分布式系统整个集群节点个数N要为奇数个!!

4、分布式部署遇到的坑

三节点不能联通的原因:

1、各节点的hostname没有正确设置,和节点名称设置为一致。

2、关闭防火墙,service iptables stop;否则,打开防火墙会导致无法正常通信,head插件不能看到节点数据信息。

参考: 
1、[官网部署参考]: 
https://www.elastic.co/guide/en/elasticsearch/guide/current/deploy.html

2、http://blog.csdn.net/napoay/article/details/52202877

centos7 部署Elasticsearch单机/集群并安装head插件实现ES集群的可视化管理

centos7 部署Elasticsearch并安装head插件实现ES集群的可视化管理最近看了es的一些介绍想自己动手安装学习下,毕竟不实际运行是不会遇到坑的,嗯,你没看错,全是坑,闲言少叙,直接整...
  • u014180504
  • u014180504
  • 2017-12-06 18:45:36
  • 499

Crate安装和配置

关键字:elastichsearch、crate.io、sql 之前介绍过ElasticSearch,它部署简单,搜索聚合功能强大,而且和其他大数据框架整合起来使用,有一点比较不方便,就是查询都需要通...
  • l19901215
  • l19901215
  • 2017-02-21 19:58:03
  • 551

redis集群部署

  • 2018年04月08日 11:24
  • 2KB
  • 下载

Redis集群部署详细

Redis集群部署文档(centos6系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如...
  • permanent_2008
  • permanent_2008
  • 2015-04-13 09:35:50
  • 413

使用curl命令操作elasticsearch And 使用http 查询ES

第一:_cat系列  _cat系列提供了一系列查询elasticsearch集群状态的接口。你可以通过执行  curl -XGET localhost:9200/_cat  获取所有_cat系列...
  • z69183787
  • z69183787
  • 2017-04-12 13:59:36
  • 4860

ubuntu12.04+Elasticsearch2.3.3伪分布式配置,集群状态分片调整

1、什么是Elashticsearch 1.1 Elashticsearch介绍   Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。能够快速搜索数十...
  • qq_26840065
  • qq_26840065
  • 2016-08-18 10:56:11
  • 994

redis 集群部署教程

redis 集群部署,1、安装ruby 2、启动redis各个节点,按配置文件启动 3、开放端口 4、使用命令创建节点:...
  • u011464536
  • u011464536
  • 2017-11-10 15:23:31
  • 129

cognos8.3 集群部署初探

  • 2009年08月06日 15:10
  • 385KB
  • 下载

AT&T汇编指令 AT&T汇编伪指令

最近一直在看OS方面的东西,其中要用到许多AT&T汇编,下面是在网上打到的关于它的伪指令方面的中英文对照版本。英文版本也可以输入如下命令来查看:     info as        read...
  • hunwo
  • hunwo
  • 2011-03-29 22:04:00
  • 1707

ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决

说起来甚是惭愧,博主在写这篇文章的时候,还没有系统性的学习一下ES,只知道可以拿来做全文检索,功能很牛逼,但是接到了任务不想做也不行, leader让我搭建一下分布式的ES集群环境,用来支持企业...
  • zhaohongyan6
  • zhaohongyan6
  • 2017-05-04 09:57:55
  • 287
收藏助手
不良信息举报
您举报文章:4.Elasticsearch集群部署详解
举报原因:
原因补充:

(最多只允许输入30个字)