Elasticsearch5.6.16之集群搭建
本地环境
节点一:
1 | [root@CentOS7_node1 src]# hostname |
节点二:
1 | [root@CentOS7_node2 src]# hostname |
节点三:
1 | [root@CentOS7_node3 src]# hostname |
ES安装
所需ES版本为:elasticsearch-5.6.16.tar.gz
所需JDK版本为:jdk-8u161-linux-x64.tar.gz
下载地址:https://pan.baidu.com/s/1wdzQokfMFXDtTY2BXg2Fbw
节点一
部署JDK环境
1 | [root@CentOS7_node1 src]# tar xf jdk-8u161-linux-x64.tar.gz -C /usr/local/ |
安装elasticsearch
1 | [root@CentOS7_node1 src]# tar xf elasticsearch-5.6.16.tar.gz -C /usr/local/ |
更改elasticsearch.yml配置文件
注:以下修改的配置文件详解请点击:https://www.dockerc.com/elasticsearch_config/
1 | [root@CentOS7_node1 config]# cat elasticsearch.yml |
更改jvm.options配置文件
堆内存的初始内存和最大内存建议保持一致,因为我在设置不一致的时候产生了错误
内存大小根据物理资源情况给定
1 | [root@CentOS7_node1 config]# vim jvm.options |
创建数据及日志目录
1 | [root@CentOS7_node1 ~]# mkdir -pv /data/dockerc/{data1,data2,data3,logs} |
注:现在node1算是配置完了,但是还不能启动,因为我们配置了discvery,如果超过150s*6次未检测到node2和node3将会启动失败
修改elasticsearch潜在问题
1.修改文件描述符
1 | echo '* soft nofile 65536' >> /etc/security/limits.conf |
2.修改max_map_count值
1 | 临时设置: |
3.无法分配内存问题
1 | [root@CentOS7_node1 ~]# echo '* soft memlock unlimited' >> /etc/security/limits.conf |
节点二
注:node2就除了elasticsearch.yml不一致之外,其它无区别,除配置文件外,其它一律和node1保持一致
elasticsearch配置文件
1 | [root@CentOS7_node2 ~]# cat /usr/local/elasticsearch-5.6.16/config/elasticsearch.yml |
配置文件修改完成以后,同样不要启动elasticsearch
节点三
配置除配置文件外其余和node2一样,配置文件如下
1 | [root@CentOS7_node3 ~]# cat /usr/local/elasticsearch-5.6.16/config/elasticsearch.yml |
启动Elasticsearch
三个节点启动时间尽量不要差很久,以下三条启动信息,我只截取了一部分,但是我的服务启动时正常的
节点一启动信息
1 | root@CentOS7_node1 ~]# su elasticsearch /usr/local/elasticsearch-5.6.16/bin/elasticsearch |
启动的时候有个WARN警告信息,是因为刚启动还没找到谁是主节点,所以参生了一条警告信息,不过当集群建立后,很快就没了
节点二启动信息
1 | [2019-05-10T00:17:51,244][INFO ][o.e.b.BootstrapChecks ] [elasticsearch-node2] bound or publishing to a non-loopback address, enforcing bootstrap checks |
节点三启动信息
1 | [root@CentOS7_node3 ~]# su elasticsearch /usr/local/elasticsearch-5.6.16/bin/elasticsearch |
简单看下我们的主节点时哪台设备
1 | [root@CentOS7_node1 config]# curl -XGET 'http://10.211.55.7:9201/_cat/nodes?v' |
安装插件
安装elasticsearch最出名的插件叫elasticsearch-head,但是elasticsearch-head由nodejs开发,所以需要nodejs环境,然后使用npm命令来管理,所以我们先安装nodejs环境,3个节点安装一台就可以了,因为在一台上就可以看到所有的节点状态
安装nodejs
1 | [root@CentOS7_node1 src]# curl --silent --location https://rpm.nodesource.com/setup_10.x | bash - |
安装git
编译安装nodejs完成后,要开始下载elasticsearch-head插件了,但是此插件在github上:https://github.com/mobz/elasticsearch-head#running-with-built-in-server,下载方式还必须要使用git方式来克隆下载:下载链接:https://github.com/mobz/elasticsearch-head.git
所以我们还需要安装git来下载此插件
1 | [root@CentOS7_node1 src]# yum install git -y |
克隆elasticsearch-head插件
1 | [root@CentOS7_node1 local]# git clone git://github.com/mobz/elasticsearch-head.git |
启动elasticsearch-head插件
elasticsearch-head插件默认和elasticsearch一样是前台启动,我这里给他送到后台运行
elasticsearch-head插件默认占用9100端口来提供服务
1 | [root@CentOS7_node1 elasticsearch-head]# nohup npm run start & |
服务虽然启动了,但是如果让elasticsearch-head插件连接Elasticsearch,我们还需要修改配置来实现
修改插件配置文件
1 | [root@CentOS7_node1 elasticsearch-head]# pwd |
修改elasticsearch-head/_site/app.js文件
1 | 进入vi之后直接搜索9200然后会自动跳转到目的地,把9200前面的localhost修改为我们需要对外访问的节点地址,然后再把9200修改为我们对外的端口,一般都是把9200修改为9100端口 |
修改完成后,我们需要重新启动elasticsearch-head插件
1 | 杀掉grunt进程,此进程是elasticsearch-head插件进程 |
访问测试
在浏览器中输入我们修改elasticsearch-head/_site/app.js文件的IP和端口

我们访问了9100端口,但是9100端口只不过是grunt插件的端口,我们要通过此插件来连接es集群,所以下面要输入连接es集群端口的http链接,但是并没有连接上,原因是因为未在elasticsearch.yml文件中开启以下参数
1 | http.cors.enabled: true |
修改node1的elasticsearch.yml
1 | [root@CentOS7_node1 elasticsearch-head]# echo 'http.cors.enabled: true' >> /usr/local/elasticsearch-5.6.16/config/elasticsearch.yml |
重启es和grunt
1 | [root@CentOS7_node1 elasticsearch-head]# ps -ef|grep java |
再次尝试连接

再次连接发现还是并没有连接上,xuwl犯了一个煞笔错误,我的10.211.55.7的端口是9201
修改端口再次连接

在这个窗口里可以很直观的看到节点以及集群的状态信息
扩展
elasticsearch-head插件详解,还请查看这篇文章:https://www.dockerc.com/elasticsearch-head/
其实ES的cerebro这款插件挺好的,更美观的展现ES cluster节点信息,界面美观,安装简单,功能强大,如果感兴趣去看cerebro插件讲解:https://www.dockerc.com/elasticsearch-cerebro/
转载于: