井底之蛙:教你快速搭建Elasticsearch搜索集群,So Easy!

bigdataway 提交于 周二, 03/20/2018 - 09:26

简介

井底之蛙:教你快速搭建Elasticsearch搜索集群,So Easy!

应之前读者的要求,本文主要详细介绍一下如快速搭建一个简单的 Elasticsearch 5.x集群。相比较Redis、Mongodb来说, Elasticsearch的集群搭建还是比较简单的,因为它的设计理念就是开箱即用。至于,Elasticsearch相关的一些理论知识,这里不做过多阐述,可自行百度,也可留言讨论,说说你自己的理解。

实战

准备

Linux:

192.168.184.129 Red Hat Enterprise Linux Server release 6.4 (Santiago)

192.168.184.132 Red Hat Enterprise Linux Server release 6.4 (Santiago)

192.168.184.133 Red Hat Enterprise Linux Server release 6.4 (Santiago)

JDK:

jdk-8u151-linux-x64.rpm

Elasticsearch:

elasticsearch-5.6.3.tar.gz

安装

1、分别上传jdk和elasticsearch至三台服务器

井底之蛙:教你快速搭建Elasticsearch搜索集群,So Easy!

2、安装java环境,由于Elasticsearch5.x需要jdk1.8

[root@localhost mnt]# rpm -ivh jdk-8u151-linux-x64.rpm

井底之蛙:教你快速搭建Elasticsearch搜索集群,So Easy!

3、新建elasticsearch目录

[root@localhost mnt]# mkdir elasticsearch

井底之蛙:教你快速搭建Elasticsearch搜索集群,So Easy!

4、解压elasticsearch-5.6.3.tar.gz至elasticsearch

[root@localhost mnt]# tar -zvxf elasticsearch-5.6.3.tar.gz -C elasticsearch

井底之蛙:教你快速搭建Elasticsearch搜索集群,So Easy!

:解压前,要保证elasticsearch这个目录存在

5、添加或修改elasticsearch配置

进入elasticsearch-5.6.3目录:

[root@localhost mnt]# cd elasticsearch/elasticsearch-5.6.3

新建data目录:

[root@localhost elasticsearch-5.6.3]# mkdir data

新建logs目录:

[root@localhost elasticsearch-5.6.3]# mkdir logs

编辑配置文件:

[root@localhost elasticsearch-5.6.3]# vi config/elasticsearch.yml

#设置集群名称,用以区分同一网段下的不同集群

cluster.name: elasticsearch

#设置节点名称,不同的节点名称不一样

node.name: node-129

#指定该节点是否有资格被选举成为master,如果master节点挂了会重新选举master

node.master: true

#设置该节点是否存储数据

node.data: true

注: a、当master为false,而data为true时,会对该节点产生严重负荷b、当master为true,而data为false时,该节点作为一个协调者c、当master为false,data也为false时,该节点就变成了一个负载均衡器

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

index.number_of_shards: 5

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

index.number_of_replicas: 1

#设置索引数据的存储路径

path.data: /mnt/elasticsearch/elasticsearch-5.6.3/data

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

path.logs: /mnt/elasticsearch/elasticsearch-5.6.3/logs

#设置对外网络地址

network.host: 192.168.184.129

#设置节点tcp端口

transport.tcp.port: 9300

#设置http端口

http.port: 9200

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

discovery.zen.ping.unicast.hosts: ["192.168.184.129:9300", "192.168.184.132:9300", "192.168.184.133:9300"]

#设置集群中最小master资格节点数,N = nodes/2 + 1

discovery.zen.minimum_master_nodes: 2

#设置集群中自动发现其它节点时,ping连接的超时时间

discovery.zen.ping.timeout: 10s

#设置是否多播发现节点

discovery.zen.ping.multicast.enabled: false

#设置是否可以通过正则或者_all删除或者关闭索引,false为允许,true为不允许

action.destructive_requires_name: true

#设置是否跨域访问

http.cors.enabled: true

#允许跨域访问的域名地址,设置成"*"是高风险的,这说明部署的ES集群允许被任何地方跨域请求,所以建议在实际生产环境中,最好根据需求设定允许访问的域名地址

http.cors.allow-origin: "*"

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

6、建立用户组和用户,由于Elasticsearch 5.x不允许以root用户启动,所以需新建一个普通用户

[root@localhost elasticsearch-5.6.3]# groupadd example

[root@localhost elasticsearch-5.6.3]# useradd jdzw -g example -p 123456

7、修改系统部分参数值

a、[root@localhost elasticsearch-5.6.3]# vi /etc/security/limits.conf

添加如下内容:

jdzw soft nofile 65536

jdzw hard nofile 131072

jdzw soft nproc 2048

jdzw hard nproc 4096

注:jdzw为用户名

b、[root@localhost elasticsearch-5.6.3]# vi /etc/sysctl.conf,添加如下内容:

vm.max_map_count=655360

然后,重新启动机器

[root@localhost elasticsearch-5.6.3]# reboot

8、指定elasticsearch目录所有者和所属工作组

[root@localhost mnt]# chown -R jdzw:example elasticsearch

9、设置执行权限,这里需以root用户设置

[root@localhost elasticsearch-5.6.3]# chmod +x bin/elasticsearch

10、关闭防火墙或开放相应端口(这里简单粗暴点)

[root@localhost mnt]# service iptables stop

11、切换jdzw用户启动elasticsearch

[root@localhost elasticsearch-5.6.3]# su jdzw

[root@localhost elasticsearch-5.6.3]# ./bin/elasticsearch

或以后台运行的方式启动

[jdzw@localhost elasticsearch-5.6.3]$ nohup bin/elasticsearch > example.out 2>&1 &

同理,其他两台机器,也做相同配置,但是注意节点名称要有所不同。

访问

依次浏览器访问:http://192.168.184.129:9200、http://192.168.184.132:9200和http://192.168.184.133:9200,返回如下结果则表示搭建成功。

{

"name" : "node-129",

"cluster_name" : "example",

"cluster_uuid" : "_na_",

"version" : {

"number" : "5.6.3",

"build_hash" : "1a2f265",

"build_date" : "2017-10-06T20:33:39.012Z",

"build_snapshot" : false,

"lucene_version" : "6.6.1"

},

"tagline" : "You Know, for Search"

}

至此,一个简单的Elasticsearch集群就搭建成功了,至于如何通过head插件来查看集群状态和数据等,在后面的文章中再做详细说明吧,现在已经凌晨12:30点了,明天还得早起工作,祝大家晚安。

本着学习与分享的精神,以上内容仅仅是小弟学习和工作中的一点点总结,不免存在错误之处,请不吝指出。

分类