基于docker 搭建Elasticsearch5.6.4 分布式集群

Posted mangues

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于docker 搭建Elasticsearch5.6.4 分布式集群相关的知识,希望对你有一定的参考价值。

说明:

准备2台机器,我这里有192.168.0.107 和 192.168.0.164
192.168.0.164 作为master
192.168.0.107 作为普通node

一、环境

1.docker 环境
2.Elasticsearch5.6.4
3.Elasticsearch-head:5 插件

二、下载

head 只需要在一台机器上装就行了、我直接和master节点装在164上

docker pull elasticsearch:5.6.4 
docker pull mobz/elasticsearch-head:5

三、设置elasticsearch 配置环境

1、master[192.168.0.164] 配置

es1.yml:

#集群名称 所有节点要相同
cluster.name: "mangues_es"
#本节点名称
node.name: master
#作为master节点
node.master: true
#是否存储数据
node.data: true
# head插件设置
http.cors.enabled: true
http.cors.allow-origin: "*"
#设置可以访问的ip 这里全部设置通过
network.bind_host: 0.0.0.0
#设置节点 访问的地址 设置master所在机器的ip
network.publish_host: 192.168.0.164

2、启动master

我的配置文件 和 data所在目录都设置在物理机器上,这里-v 映射下就可以了

docker run -d --name es1 -p 9200:9200 -p 9300:9300 -v /Users/mangues/Desktop/database/Elasticsearch/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/mangues/Desktop/database/Elasticsearch/esdata1:/usr/share/elasticsearch/data elasticsearch:5.6.4

3、node[192.168.0.107] 配置

es2.yml

cluster.name: "mangues_es"
#子节点名称
node.name: node
#不作为master节点
node.master: false
node.data: true

http.cors.enabled: true
http.cors.allow-origin: "*"

network.bind_host: 0.0.0.0
network.publish_host: 192.168.0.107
#设置master地址
discovery.zen.ping.unicast.hosts: [192.168.0.164]

2、启动node

docker run -d --name es2 -p 9200:9200 -p 9300:9300 -v /Users/mangues/Desktop/database/Elasticsearch/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/mangues/Desktop/database/Elasticsearch/esdata1:/usr/share/elasticsearch/data elasticsearch:5.6.4

四、开启head查看

docker run -p 9100:9100 mobz/elasticsearch-head:5

打开链接 http://192.168.0.164:9100/ 查看节点状态

五、其他

1、安装docker-ui 可视化docker管理工具
docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker

打开链接 http://192.168.0.164:9000/ 查看164机器的docker

2、问题

elasticsearch max virtual memory areas vm.max_map_count [65530] is too low

解决办法: 
1、切换到root用户修改配置sysctl.conf

vi /etc/sysctl.conf 

添加下面配置:

vm.max_map_count=655360

并执行命令:

sysctl -p

然后,重新启动elasticsearch,即可启动成功。
3. 安装ik 中文分词插件

进入容器

$ sudo docker exec -it imageId /bin/bash
$ cd plugins
$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.4/elasticsearch-analysis-ik-5.6.4.zip
$ unzip elasticsearch-analysis-ik-5.6.4.zip
$ rm elasticsearch-analysis-ik-5.6.4.zip

利用

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.4/elasticsearch-analysis-ik-5.6.4.zip

会出问题:

java.io.FileNotFoundException: /usr/share/elasticsearch/config/analysis-ik/IKAnalyzer.cfg.xml (No such file or directory)

以上是关于基于docker 搭建Elasticsearch5.6.4 分布式集群的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch5.4.3离线搭建

elasticsearch5.5.2环境搭建

elasticsearch5环境搭建

ElasticSearch5.4.1 搜索引擎搭建文档

搭建Elasticsearch5.6.8 分布式集群

elasticsearch5.3.0在windows中的开发环境搭建