ElasticSearch集群服务器配置

一、安装

简单的安装与启动于前文ElasticSearch初探(一)已有讲述,这里不再重复说明。

二、启动

1.自带脚本启动

1)bin/elasticsearch,不太任何参数,默认在前端启动

2)bin/elasticsearch-d,带参-d,表示在后台作为服务线程启动

还可以设置更多的参数:bin/elasticsearch-Xmx2g-Xms2g-Des.index.store.type=memory--node.name=my-node

注意:如果是在局域网中运行elasticsearch集群也是很简单的,只要cluster.name设置一致,并且机器在同一网段下,启动的es会自动发现对方,组成集群。

2.elasticsearch-servicewrapper

1)安装

到github,https://github.com/elastic/elasticsearch-servicewrapper下载,把service拷贝到ES_HOME/bin目录下。

2)使用

ES_HOME/bin/service/elasticsearch + console/start/stop...


Parameter


Description


console


Runthe elasticsearch in the foreground.


start


Runelasticsearch in the background.


stop


Stopselasticsearch if its running.


install


Installelasticsearch to run on system startup (init.d / service).


remove


Removeselasticsearch from system startup (init.d / service).

在service目录下有个elasticsearch.conf配置文件,主要是设置一些java运行环境参数,其中比较重要的是下面的

参数:

#es的home路径,不用用默认值就可以

set.default.ES_HOME=<Pathto ElasticSearch Home>

#分配给es的内存大小

set.default.ES_HEAP_SIZE=1024

#启动等待超时时间(以秒为单位)

wrapper.startup.timeout=300

#关闭等待超时时间(以秒为单位)

wrapper.shutdown.timeout=300

#ping超时时间(以秒为单位)

wrapper.ping.timeout=300

三、配置浅涉

elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。

cluster.name:elasticsearch

配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

node.name:"FranzKafka"

节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。

node.master:true

指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。

node.data:true

指定该节点是否存储索引数据,默认为true。

index.number_of_shards:5

设置默认索引分片个数,默认为5片。

index.number_of_replicas:1

设置默认索引副本个数,默认为1个副本。

path.conf:/path/to/conf

设置配置文件的存储路径,默认是es根目录下的config文件夹。

path.data:/path/to/data

设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例:

path.data:/path/to/data1,/path/to/data2

path.work:/path/to/work

设置临时文件的存储路径,默认是es根目录下的work文件夹。

path.logs:/path/to/logs

设置日志文件的存储路径,默认是es根目录下的logs文件夹

path.plugins:/path/to/plugins

设置插件的存放路径,默认是es根目录下的plugins文件夹

bootstrap.mlockall:true

设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit-l
unlimited`命令。

network.bind_host:192.168.0.1

设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。

network.publish_host:192.168.0.1

设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。

network.host:192.168.0.1

这个参数是用来同时设置bind_host和publish_host上面两个参数。

transport.tcp.port:9300

设置节点间交互的tcp端口,默认是9300。

transport.tcp.compress:true

设置是否压缩tcp传输时的数据,默认为false,不压缩。

http.port:9200

设置对外服务的http端口,默认为9200。

http.max_content_length:100mb

设置内容的最大容量,默认100mb

http.enabled:false

是否使用http协议对外提供服务,默认为true,开启。

gateway.type:local

gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器,其它文件系统的设置方法下次再详细说。

gateway.recover_after_nodes:1

设置集群中N个节点启动时进行数据恢复,默认为1。

gateway.recover_after_time:5m

设置初始化数据恢复进程的超时时间,默认是5分钟。

gateway.expected_nodes:2

设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。

cluster.routing.allocation.node_initial_primaries_recoveries:4

初始化数据恢复时,并发恢复线程的个数,默认为4。

cluster.routing.allocation.node_concurrent_recoveries:2

添加删除节点或负载均衡时并发恢复线程的个数,默认为4。

indices.recovery.max_size_per_sec:0

设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。

indices.recovery.concurrent_streams:5

设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。

discovery.zen.minimum_master_nodes:1

设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)

discovery.zen.ping.timeout:3s

设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。

discovery.zen.ping.multicast.enabled:false

设置是否打开多播发现节点,默认是true。

discovery.zen.ping.unicast.hosts:["host1",
"host2:port","host3[portX-portY]"]

设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点

四、集群配置多个节点

1.概述

本例子的集群将部署4个节点:

10.0.0.11 es1

10.0.0.209 es2

10.0.0.206 es3

10.0.0.208 es4

2.集群配置

上文提到过,只要集群名相同,且机器处于同一局域网同一网段,es会自动去发现其他的节点。

2.1es2的配置

vimES_HOME/config/elasticsearch.yml

在文件尾部添加一下内容:

cluster.name:elasticsearch #集群的名称,同一个集群该值必须设置成相同的

node.name:"es2" #该节点的名字

node.master:true #该节点有机会成为master节点

node.data:true #该节点可以存储数据

node.rack:rack2 #该节点所属的机架

index.number_of_shards:5 #shard的数目

index.number_of_replicas:3 #数据副本的数目

network.bind_host:0.0.0.0 #设置绑定的IP地址,可以是IPV4或者IPV6

network.publish_host:10.0.0.209 #设置其他节点与该节点交互的IP地址

network.host:10.0.0.209 #该参数用于同时设置bind_host和publish_host

transport.tcp.port:9300 #设置节点之间交互的端口号

transport.tcp.compress:true #设置是否压缩tcp上交互传输的数据

http.port:9200 #设置对外服务的http端口号

http.max_content_length:100mb #设置http内容的最大大小

http.enabled:true #是否开启http服务对外提供服务

discovery.zen.minimum_master_nodes:2 #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)

discovery.zen.ping.timeout:120s #设置集群中自动发现其他节点时ping连接的超时时间

discovery.zen.ping.multicast.enabled:true #设置是否打开多播发现节点

discovery.zen.ping.unicast.hosts:["10.0.0.209:9300","10.0.0.206:9300","10.0.0.208:9300"]
#设置集群中的Master节点的初始列表,可以通过这些节点来自动发现其他新加入集群的节点

2.2es3的配置

相似地,在206的机子上

vimES_HOME/config/elasticsearch.yml

在文件尾部添加一下内容:

cluster.name:elasticsearch #集群的名称,同一个集群该值必须设置成相同的

node.name:"es3" #该节点的名字

node.master:true #该节点有机会成为master节点

node.data:true #该节点可以存储数据

node.rack:rack3 #该节点所属的机架

index.number_of_shards:5 #shard的数目

index.number_of_replicas:3 #数据副本的数目

network.bind_host:0.0.0.0 #设置绑定的IP地址,可以是IPV4或者IPV6

network.publish_host:10.0.0.206 #设置其他节点与该节点交互的IP地址

network.host:10.0.0.206 #该参数用于同时设置bind_host和publish_host

transport.tcp.port:9300 #设置节点之间交互的端口号

transport.tcp.compress:true #设置是否压缩tcp上交互传输的数据

http.port:9200 #设置对外服务的http端口号

http.max_content_length:100mb #设置http内容的最大大小

http.enabled:true #是否开启http服务对外提供服务

discovery.zen.minimum_master_nodes:2 #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)

discovery.zen.ping.timeout:120s #设置集群中自动发现其他节点时ping连接的超时时间

discovery.zen.ping.multicast.enabled:true #设置是否打开多播发现节点

discovery.zen.ping.unicast.hosts:["10.0.0.209:9300","10.0.0.206:9300","10.0.0.208:9300"]
#设置集群中的Master节点的初始列表,可以通过这些节点来自动发现其他新加入集群的节点

2.3 208的机子上的es配置就参考上面两个节点的

2.4验证结果

启动节点:

ES_HOME/bin/service/elasticsearchstart

成功启动各个节点后,浏览器打开http://10.0.0.209:9200/_plugin/head/,界面会列出各个节点的信息。

3.节点添加和删除

3.1添加节点非常简单,几乎与上面设置节点的步骤一致。

在10.0.0.11机子上,vimES_HOME/config/elasticsearch.yml

cluster.name:elasticsearch #集群的名称,同一个集群该值必须设置成相同的

node.name:"es5" #该节点的名字

node.master:false #该节点有机会成为master节点

node.data:true #该节点可以存储数据

node.rack:rack5 #该节点所属的机架

index.number_of_shards:5 #shard的数目

index.number_of_replicas:3 #数据副本的数目

network.bind_host:0.0.0.0 #设置绑定的IP地址,可以是IPV4或者IPV6

network.publish_host:10.0.0.11 #设置其他节点与该节点交互的IP地址

network.host:10.0.0.11 #该参数用于同时设置bind_host和publish_host

transport.tcp.port:9300 #设置节点之间交互的端口号

transport.tcp.compress:true #设置是否压缩tcp上交互传输的数据

http.port:9200 #设置对外服务的http端口号

http.max_content_length:100mb #设置http内容的最大大小

http.enabled:true #是否开启http服务对外提供服务

discovery.zen.minimum_master_nodes:2 #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)

discovery.zen.ping.timeout:120s #设置集群中自动发现其他节点时ping连接的超时时间

discovery.zen.ping.multicast.enabled:true #设置是否打开多播发现节点

discovery.zen.ping.unicast.hosts:["10.0.0.209:9300","10.0.0.206:9300","10.0.0.208:9300"]
#设置集群中的Master节点的初始列表,可以通过这些节点来自动发现其他新加入集群的节点

写好配置,启动此es节点。

查看集群的状态:

elasticsearch采用广播的方式自动发现节点,需要等待一段时间才能发现新的节点:

耐心等待...最后可以在此界面看到各个节点的信息。

3.2节点删除

在想要删除节点的机子上,运行ES_HOME/bin/service/elasticsearchstop,等待一会后,查看集群状态,会发现该节点没有了。

参考文献:

https://www.elastic.co/guide/en/elasticsearch/reference/current/setup.html#jvm-version

http://s2t148.blog.51cto.com/3858027/996928

http://www.searchtech.pro/articles/2013/02/18/1361194291548.html

http://blog.csdn.net/dingzfang/article/details/42776299

时间: 2024-10-05 04:45:04

ElasticSearch集群服务器配置的相关文章

剖析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的一个概念就是去中心化,字面上理解就是无中心节点,