Docker安装ElasticSearch以及集群搭建

运行ElasticSearch

1、拉取ElasticSearch镜像,已6.5.4版本为例

docker pull elasticsearch:6.5.4

2、创建所需文件

mkdir -p /mydata/elasticsearch/config

mkdir -p /mydata/elasticsearch/data

echo “http.host: 0.0.0.0″>>/mydata/elasticsearch/config/elasticsearch.yml

注意:http.host: 0.0.0.0冒号后有一空格。

3、文件夹赋权

chmod-R 777elasticsearch/

4、命令启动

docker run –name elasticsearch -p 9200:9200
-p 9300:9300
-e “discovery.type=single-node”
-e ES_JAVA_OPTS=”-Xms64m -Xmx128m”
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins
-d elasticsearch:6.5.4

参数说明:

–name elasticsearch:将容器命名为 elasticsearch-p 9200:9200:将容器的9200端口映射到宿主机9200端口-p 9300:9300:将容器的9300端口映射到宿主机9300端口,目的是集群互相通信-e

“discovery.type=single-node”:单例模式-e ES_JAVA_OPTS=”-Xms64m -Xmx128m”:配置内存大小-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/>

config/elasticsearch.yml:将配置文件挂载到宿主机-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data:将数据文件夹挂载到宿主机-v /mydata/elasticsearch/plugins:/

usr/share/elasticsearch/plugins:将插件目录挂载到宿主机(需重启)-d elasticsearch:7.7.0:后台运行容器,并返回容器ID

安装 ElasticSearch集群

1、基于Elasticsearch6.8.5版本

docker pull elasticsearch6.8.5

2、创建ES挂载目录

创建3个文件夹 用于存放ES挂载地址:es01、es02、es03

[root@CentOS7 ~]# mkdir /es-cluster

[root@CentOS7 ~]# cd /es-cluster/

[root@CentOS7 es-cluster]# mkdir es01

[root@CentOS7 es-cluster]# mkdir es02

[root@CentOS7 es-cluster]# mkdir es03

3、创建配置文件及数据存放目录

我们以es01 为例,cd es01,增加es01.yml配置文件:

es01.ymlcluster.name: elasticsearch-clusternode.name: es-node1network.bind_host: 0.0.0.0network.publish_host: 10.211.55.4http.port: 9200

  • transport.tcp.port: 9300
  • http.cors.enabled: truehttp.cors.allow-origin: “*”
  • node.master: truenode.data: truediscovery.zen.ping.unicast.hosts: [“10.211.55.4:9300″,”10.211.55.4:9301″,”10.211.55.4:9302”]discovery.zen.minimum_master_nodes: 2

其他两个es配置文件类似:

es02.ymlcluster.name: elasticsearch-clusternode.name: es-node2network.bind_host: 0.0.0.0network.publish_host: 10.211.55.4http.port: 9201

  • transport.tcp.port: 9301
  • http.cors.enabled: truehttp.cors.allow-origin: “*”
  • node.master: truenode.data: truediscovery.zen.ping.unicast.hosts: [“10.211.55.4:9300″,”10.211.55.4:9301″,”10.211.55.4:9302”]discovery.zen.minimum_master_nodes: 2

es03.ymlcluster.name: elasticsearch-clusternode.name: es-node2network.bind_host: 0.0.0.0network.publish_host: 10.211.55.4http.port: 9202

  • transport.tcp.port: 9302
  • http.cors.enabled: truehttp.cors.allow-origin: “*”
  • node.master: truenode.data: truediscovery.zen.ping.unicast.hosts: [“10.211.55.4:9300″,”10.211.55.4:9301″,”10.211.55.4:9302”]discovery.zen.minimum_master_nodes: 2

由于默认es实例是1g,太吃内存了,我们修改一下jvm参数,每个es目录下放一个jvm.option文件:-Xms128m-Xmx128m

4、创建es容器并启动

dockercreate –name es01–net host -v /es-cluster/es01/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /es-cluster/es01/jvm.options:/usr/share/

elasticsearch/config/jvm.options -v /es-cluster/es01/data:/usr/share/elasticsearch/data elasticsearch:6.8.5dockercreate –name es02–net host -v /es-cluster/es02/es02.

yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /es-cluster/es02/jvm.options:/usr/share/elasticsearch/config/jvm.options -v /es-cluster/es02/data:/usr/

share/elasticsearch/data elasticsearch:6.8.5dockercreate –name es03–net host -v /es-cluster/es03/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /

es-cluster/es03/jvm.options:/usr/share/elasticsearch/config/jvm.options -v /es-cluster/es03/data:/usr/share/elasticsearch/data elasticsearch:6.8.5

创建完docker容器后,启动es容器:

dockerstart es01 es02 es03

通过 docker ps -a 查看启动情况如图所示,启动失败了,我们通过 docker logs es01 查看启动日志:

data目录访问权限异常,我们给一下权限:

chmod777es01/data/ -R

chmod777es02/data/ -R

chmod777es03/data/ -R

重新启动一下:

dockerstart es01 es02 es03

本文转自:

https://www.cnblogs.com/chinda/p/13125625.html

https://www.cnblogs.com/niceyoo/p/11342903.html