docker安装ElasticSearch:7.8.0集群的详细教程
ElasticSearch集群支持动态请求的方式搭建集群和静态配置文件搭建集群
关于集群的动态连接方式官方的文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html
前置准备工作
关于参数的官网说明:
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-settings.html
下载elsticsearch7.8.0
dockerpullelasticsearch:7.8.0
创建一个网络es_net用来放elasticsearch集群
dockernetworkcreate--subnet=172.18.0.0/24es_net
根据官网的dockerFile文件中的信息WORKDIR/usr/share/elasticsearch可以得知elasticsearch的安装位置在/usr/share/elasticsearch目录下,为了方便后面的操作,创建数据卷将elasticsearch产生的数据映射到主机中,防止es宕机数据无法恢复。
创建数据卷
dockervolumecreatees_data01 dockervolumecreatees_data02 dockervolumecreatees_data03 #公共配置文件,以及插件存放位置 dockervolumecreatees_conf dockervolumecreatees_plugins
分别存放数据、配置、插件
创建3个yml配置文件
动态的方式搭建ElasticSearch集群(推荐)
意味着只要启动ElasticSearch然后通过ES自带的RestFul风格的操作既可以完成集群的搭建
dockerhub中官方的启动方式是单节点的启动
先单独启动3个ElasticSearch节点
启动es01
dockerrun-it-d--restartalways-p9201:9200-p9301:9300\ --namees01--network=es_net--ip=172.18.0.101\ -ves_data01:/usr/share/elasticsearch/data\ -ves_conf:/usr/share/elasticsearch/conf\ -ves_plugins:/usr/share/elasticsearch/plugins\ -e"discovery.type=single-node"\ -eES_JAVA_OPTS="-Xms64m-Xmx128m"elasticsearch:7.8.0
启动es02
dockerrun-it-d--restartalways-p9202:9200-p9302:9300\ --namees02--network=es_net--ip=172.18.0.102\ -ves_data02:/usr/share/elasticsearch/data\ -ves_conf:/usr/share/elasticsearch/conf\ -ves_plugins:/usr/share/elasticsearch/plugins\ -e"discovery.type=single-node"\ -eES_JAVA_OPTS="-Xms64m-Xmx128m"elasticsearch:7.8.0
启动es03
dockerrun-it-d--restartalways-p9203:9200-p9303:9300\ --namees03--network=es_net--ip=172.18.0.103\ -ves_data03:/usr/share/elasticsearch/data\ -ves_conf:/usr/share/elasticsearch/conf\ -ves_plugins:/usr/share/elasticsearch/plugins\ -e"discovery.type=single-node"\ -eES_JAVA_OPTS="-Xms64m-Xmx128m"elasticsearch:7.8.0
通过PUT方式
通过linux的curl命令操作即可
在es02和es03上通过
curl-XPUT"localhost:9200/_cluster/settings?pretty"-H'Content-Type:application/json'-d' { "persistent":{ "cluster":{ "remote":{ "leader":{ "seeds":[ "127.0.0.1:9300" ] } } } } } '
更新persistent
curl-XPUT"localhost:9200/_cluster/settings?pretty"-H'Content-Type:application/json'-d' { "persistent":{ "indices.recovery.max_bytes_per_sec":"50mb" } } '
更新transient
curl-XPUT"localhost:9200/_cluster/settings?flat_settings=true&pretty"-H'Content-Type:application/json'-d' { "transient":{ "indices.recovery.max_bytes_per_sec":"20mb" } } '
删除transient配置内容
curl-XPUT"localhost:9200/_cluster/settings?pretty"-H'Content-Type:application/json'-d' { "transient":{ "indices.recovery.max_bytes_per_sec":null } } '
删除所有transient设置
curl-XPUT"localhost:9200/_cluster/settings?pretty"-H'Content-Type:application/json'-d' { "transient":{ "indices.recovery.*":null } } '
ElasticSearch通过静态配置文件的方式启动集群
失败的原因应该是启动容器的时候应该少了参数。
官网文档上说将来的版本不再使用discovery.zen.ping.unicast.hosts也就变成discovery.seed_hosts
es-node1节点的配置文件信息
vim/var/lib/docker/volumes/es_conf/_data/es01.yml
请修改注释行宿主机ip,以及es集群通信的端口地址
cluster.name:elasticsearch-cluster node.name:es-node1 network.bind_host:0.0.0.0 network.publish_host:192.168.117.231#修改为docker的宿主机ip http.port:9200#这个是容器内部的,所以不用改 transport.tcp.port:9300#这个是容器内部的,所以不用改 http.cors.enabled:true http.cors.allow-origin:"*" node.master:true node.data:true discovery.seed_hosts:["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"] discovery.zen.minimum_master_nodes:2 indices.query.bool.max_clause_count:10240 #使用一台主机的不同端口搭建,在启动docker容器的时候通过-p指定映射端口
通过上述配置文件中可知需要映射端口分别是9300、9301、9302,这些端口是用来进行集群通信的
也就是三个节点绑定端口分别是-p9300:9300,-p9301:9300,-p9302:9300,
同时我们可以推出使用-p9200:9200,-p9201:9200,-p9202:9200
做成表格:
节点 | 绑定宿主机端口1 | 绑定宿主机端口2 |
---|---|---|
es-node1 | 9200 | 9300 |
es-node2 | 9201 | 9301 |
es-node3 | 9202 | 9301 |
作用 | 对外提供服务的端口 | es1-es3集群间进行通讯的端口 |
es-node2节点的配置文件信息
vim/var/lib/docker/volumes/es_conf/_data/es02.yml
与es-node1不同的地方就是节点名改一下
cluster.name:elasticsearch-cluster node.name:es-node2 network.bind_host:0.0.0.0 network.publish_host:192.168.117.231#修改为docker的宿主机ip http.port:9200#这个是容器内部的,所以不用改 transport.tcp.port:9300#这个是容器内部的,所以不用改 http.cors.enabled:true http.cors.allow-origin:"*" node.master:true node.data:true discovery.seed_hosts:["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"] discovery.zen.minimum_master_nodes:2 indices.query.bool.max_clause_count:10240 #使用一台主机的不同端口搭建,在启动docker容器的时候通过-p指定映射端口
es-node3节点的配置文件信息
vim/var/lib/docker/volumes/es_conf/_data/es02.yml
与es-node1不同的地方就是节点名改一下
cluster.name:elasticsearch-cluster node.name:es-node3 network.bind_host:0.0.0.0 network.publish_host:192.168.117.231#修改为docker的宿主机ip http.port:9200#这个是容器内部的,所以不用改 transport.tcp.port:9300#这个是容器内部的,所以不用改 http.cors.enabled:true http.cors.allow-origin:"*" node.master:true node.data:true discovery.seed_hosts:["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"] discovery.zen.minimum_master_nodes:2 indices.query.bool.max_clause_count:10240 #使用一台主机的不同端口搭建,在启动docker容器的时候通过-p指定映射端口
依次启动集群
es-node1启动命令,docker进程别名es01
使用的网络是上面创建的网卡es_net,指定节点的内部网络ip172.18.0.100需要和es_net同网段
dockerrun-it-d--restartalways-p9200:9200-p9300:9300\ --namees01--network=es_net--ip=172.18.0.100\ -ves_data01:/usr/share/elasticsearch/data\ -v/var/lib/docker/volumes/es_conf/_data/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml\ -ves_plugins:/usr/share/elasticsearch/plugins\ -eES_JAVA_OPTS="-Xms64m-Xmx128m"elasticsearch:7.8.0
ES_JAVA_OPTS指定使用的es的内存,防止启动es占用太多内存空间
--restartalways开机自启
数据卷映射略,唯一需要注意的是配置文件es01.yml映射到了内部的es启动时,引使用的配置文件。
es-node2启动命令
dockerrun-it-d--restartalways-p9201:9200-p9301:9300\ --namees02--network=es_net--ip=172.18.0.101\ -ves_data02:/usr/share/elasticsearch/data\ -v/var/lib/docker/volumes/es_conf/_data/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml\ -ves_plugins:/usr/share/elasticsearch/plugins\ -eES_JAVA_OPTS="-Xms64m-Xmx128m"elasticsearch:7.8.0
es-node3启动命令
dockerrun-it-d--restartalways-p9202:9200-p9302:9300\ --namees03--network=es_net--ip=172.18.0.102\ -ves_data03:/usr/share/elasticsearch/data\ -v/var/lib/docker/volumes/es_conf/_data/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml\ -ves_plugins:/usr/share/elasticsearch/plugins\ -eES_JAVA_OPTS="-Xms64m-Xmx128m"elasticsearch:7.8.0
到此这篇关于docker安装ElasticSearch:7.8.0集群的文章就介绍到这了,更多相关docker安装ElasticSearch集群内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。