Elasticsearch集群节点配置详解

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

 

2.elasticsearch-servicewrappernode

1)安装linux

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

2)使用github

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

 

Parametervim

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

 

 

3、配置浅涉

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即为本地文件系统,能够设置为本地文件系统,分布式文件系统,HadoopHDFS,和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节点的初始列表,能够经过这些节点来自动发现新加入集群的节点

 

 

4、集群配置多个节点

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,等待一会后,查看集群状态,会发现该节点没有了。

相关文章
相关标签/搜索