Docker 简单部署 ElasticSearch【包括集群的搭建】

一、ElasticSearch是什么?

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:

分布式的实时文件存储,每个字段都被索引并可被搜索
分布式的实时分析搜索引擎
可以扩展到上百台服务器,处理PB级结构化或非结构化数据

 拉取镜像

docker pull elasticsearch:7.2.0
docker pull mobz/elasticsearch-head:5
docker pull kibana:7.2.0

运行容器

ElasticSearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口,就可以访问到Docker容器中的ElasticSearch服务了,同时我们把这个容器命名为es。

docker run -d --restart=always --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.2.0

 配置跨域

 进入容器

由于要进行配置,因此需要进入容器当中修改相应的配置信息。

docker exec -it es /bin/bash

 进行配置

# 显示文件
ls
结果如下:
LICENSE.txt README.textile config lib modules
NOTICE.txt bin data logs plugins

# 进入配置文件夹
cd config

# 显示文件
ls
结果如下:
elasticsearch.keystore ingest-geoip log4j2.properties roles.yml users_roles
elasticsearch.yml jvm.options role_mapping.yml users

# 修改配置文件
vi elasticsearch.yml

# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

 重启容器

由于修改了配置,因此需要重启ElasticSearch容器。

docker restart es

展示如下:

 

运行kibana容器

#docker run -it -d -e ELASTICSEARCH_URL=http://192.168.100.10:9200 --restart=always --name kibana -p 5601:5601 kibana:7.2.0
docker run -d  --restart=always --name kibana  --link es:elasticsearch -p 5601:5601 kibana:7.2.0 

如果遇到如下情况:请查看日志(docker logs kibana)

 错误:

我这里的修改如下:

运行Head容器:

docker run -d --restart=always  --name es_head -p 9100:9100 mobz/elasticsearch-head:5

展示如下:

 参考:https://www.cnblogs.com/stellar/p/9967347.html

后来发现dejavu 这个工具也不错:docker run --name=dejavu -p 1358:1358 -d appbaseio/dejavu 运行效果如下:

 

ES集群配置 

#创建数据文件挂载目录,并开放通信端口
pwd
mkdir -p ES/config
cd ES
mkdir data1
mkdir data2
mkdir data3
sudo chmod 777 data1
sudo chmod 777 data2
sudo chmod 777 data3
cd config
sudo ufw allow 9300 #firewall-cmd --add-port=9300/tcp
sudo ufw allow 9301 #firewall-cmd --add-port=9301/tcp
sudo ufw allow 9302 #firewall-cmd --add-port=9302/tcp

使用vi命令在config下分别创建如下文件:es1.yml,es2.yml,es3.yml

es1.yml

cluster.name: hzmt-es-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.100.19
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["192.168.100.19:9300","192.168.100.19:9301","192.168.100.19:9302"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3"]

es2.yml

cluster.name: hzmt-es-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.100.19
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["192.168.100.19:9300","192.168.100.19:9301","192.168.100.19:9302"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3"]

es3.yml

cluster.name: hzmt-es-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 192.168.100.19
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["192.168.100.19:9300","192.168.100.19:9301","192.168.100.19:9302"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3"]

注:本机虚拟机ip:192.168.100.19 读者请自行更改

调高JVM线程数限制数量,修改配置vi /etc/sysctl.conf 修改配置vim /etc/sysctl.conf, 增加vm.max_map_count=262144 , 然后启动配置sysctl -p​​​​​​​ 这一步是为了防止启动容器时,报出如下错误:
bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

 启动ElasticSearch集群容器

 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /root/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /root/ES/data1:/usr/share/elasticsearch/data --name ES01 elasticsearch:7.2.0
 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 -v /root/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /root/ES/data2:/usr/share/elasticsearch/data --name ES02 elasticsearch:7.2.0
 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9202:9202 -p 9302:9302 -v /root/ES/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /root/ES/data3:/usr/share/elasticsearch/data --name ES03 elasticsearch:7.2.0

注:设置-e ES_JAVA_OPTS="-Xms256m -Xmx256m" 是因为/etc/elasticsearch/jvm.options 默认jvm最大最小内存是2G,读者启动容器后 可用docker stats命令查看

在浏览器地址栏访问http://192.168.100.19:9200/_cat/nodes?pretty 查看节点状态

 

 

 注:节点名称带表示为主节点*

参考:

https://www.cnblogs.com/stellar/p/9967347.html

https://blog.csdn.net/belonghuang157405/article/details/83301937

posted on 2019-12-24 15:26  dz45693  阅读(2607)  评论(0编辑  收藏  举报

导航