您的位置:首页 > 运维架构 > Docker

基于docker 搭建Elasticsearch分布式集群

2018-02-27 19:47 941 查看
基于docker 搭建Elasticsearch分布式集群
准备2台机器,这里有192.168.0.164 和192.168.0.107 192.168.0.164 作为master

192.168.0.107 作为普通node

1. 环境

1.docker 环境

2.Elasticsearch5.6.4

3.Elasticsearch-head:5 插件

2. 下载

head 只需要在一台机器上装就行了,直接和master节点装在164上。sudo docker pull elasticsearch:5.6.4

sudo docker pull mobz/elasticsearch-head:5

3. 设置elasticsearch 配置环境

3.1. master[192.168.0.164] 配置

(1)创建master节点配置文件:es-1.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  创建data文件夹:esdata-1
(2)启动master节点
配置文件 和 data所在目录都设置在物理机器上,这里-v 映射下就可以了docker run -d --name es-1 -p 9200:9200 -p 9300:9300 -v /Users/mangues/Desktop/database/Elasticsearch/es-1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/mangues/Desktop/database/Elasticsearch/esdata-1:/usr/share/elasticsearch/data elasticsearch:5.6.4

3.2. node[192.168.0.107] 配置

(1)创建子节点配置文件:es-2.ymlcluster.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]创建data文件夹:esdata-2
(2)启动node[192.168.0.107] 子节点docker run -d --name es-2 -p 9200:9200 -p 9300:9300 -v /Users/mangues/Desktop/database/Elasticsearch/es-2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/mangues/Desktop/database/Elasticsearch/esdata-2:/usr/share/elasticsearch/data elasticsearch:5.6.4

4.  开启head查看

docker run --name elasticsearch-head-5 -p 9100:9100 mobz/elasticsearch-head:5
打开链接 http://192.168.0.164:9100/ 查看节点状态



5. 安装ik 中文分词插件

进入容器,安装ik(注意安装与es匹配的ik分词器)(推荐这种方法)$ sudo docker exec -it 容器id(或容器名) /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

安装完后需要重启es节点的docker容器后,ik分词器才会生效,如执行命令:sudo docker restart es-1
集群状态下,每个节点都需要分别安装ik分词器。
注意
采用下述方法安装ik时,在重启es时可能会报错,导致安装ik失败。./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)

...分词效果验证参考github:https://github.com/medcl/elasticsearch-analysis-ik/blob/v5.6.4/README.md

6. 其他

1、安装docker-ui 可视化docker管理工具sudo docker run -d --name ui-for-docker -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、Es启动报错问题
问题ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]解决办法: 1、切换到root用户修改配置sysctl.conf

vi /etc/sysctl.conf

添加下面配置:

vm.max_map_count=655360

并执行命令:

sysctl -p

然后,重新启动elasticsearch,即可启动成功。

转载地址:
点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: