Docker安装ElasticSearch以及集群搭建
Docker安装ElasticSearch以及集群搭建
Mr.Zhang运行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
本文转自: