docker搭建elasticsearch(docker安装ElasticSearch:7.8.0集群的详细教程)
docker搭建elasticsearch
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
下载elsticsearch 7.8.0
docker pull elasticsearch:7.8.0
创建一个网络es_net 用来放elasticsearch集群
docker network create --subnet=172.18.0.0/24 es_net
根据官网的dockerFile文件中的信息 WORKDIR /usr/share/elasticsearch可以得知 elasticsearch 的安装位置在/usr/share/elasticsearch目录下,为了方便后面的操作,创建数据卷将elasticsearch产生的数据映射到主机中,防止es宕机数据无法恢复。
创建数据卷
docker volume create es_data01 docker volume create es_data02 docker volume create es_data03 #公共配置文件,以及插件存放位置 docker volume create es_conf docker volume create es_plugins
分别存放数据、配置、插件
创建3个yml配置文件
意味着只要启动ElasticSearch然后通过ES自带的RestFul风格的操作既可以完成集群的搭建
dockerhub中官方的启动方式是单节点的启动
先单独启动3个ElasticSearch节点
启动es01
docker run -it -d --restart always -p 9201:9200 -p 9301:9300 \ --name es01 --network=es_net --ip=172.18.0.101 \ -v es_data01:/usr/share/elasticsearch/data \ -v es_conf:/usr/share/elasticsearch/conf \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
启动es02
docker run -it -d --restart always -p 9202:9200 -p 9302:9300 \ --name es02 --network=es_net --ip=172.18.0.102 \ -v es_data02:/usr/share/elasticsearch/data \ -v es_conf:/usr/share/elasticsearch/conf \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
启动es03
docker run -it -d --restart always -p 9203:9200 -p 9303:9300 \ --name es03 --network=es_net --ip=172.18.0.103 \ -v es_data03:/usr/share/elasticsearch/data \ -v es_conf:/usr/share/elasticsearch/conf \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
通过PUT方式
通过linux的curl命令操作即可
在es02和es03上通过
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' { "persistent" : { "cluster" : { "remote" : { "leader" : { "seeds" : [ "127.0.0.1:9300" ] } } } } } '
更新persistent
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' { "persistent" : { "indices.recovery.max_bytes_per_sec" : "50mb" } } '
更新transient
curl -X PUT "localhost:9200/_cluster/settings?flat_settings=true&pretty" -H 'Content-Type: application/json' -d' { "transient" : { "indices.recovery.max_bytes_per_sec" : "20mb" } } '
删除transient配置内容
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' { "transient" : { "indices.recovery.max_bytes_per_sec" : null } } '
删除所有transient设置
curl -X PUT "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,这些端口是用来进行集群通信的
也就是三个节点绑定端口分别是-p 9300:9300,-p 9301:9300,-p 9302:9300,
同时我们可以推出使用-p 9200:9200,-p 9201:9200,-p 9202: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,指定节点的内部网络ip 172.18.0.100需要和es_net同网段
docker run -it -d --restart always -p 9200:9200 -p 9300:9300 \ --name es01 --network=es_net --ip=172.18.0.100 \ -v es_data01:/usr/share/elasticsearch/data \ -v /var/lib/docker/volumes/es_conf/_data/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
ES_JAVA_OPTS指定使用的es的内存,防止启动es占用太多内存空间
--restart always开机自启
数据卷映射略,唯一需要注意的是配置文件es01.yml映射到了内部的es启动时,引使用的配置文件。
es-node2启动命令
docker run -it -d --restart always -p 9201:9200 -p 9301:9300 \ --name es02 --network=es_net --ip=172.18.0.101 \ -v es_data02:/usr/share/elasticsearch/data \ -v /var/lib/docker/volumes/es_conf/_data/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
es-node3启动命令
docker run -it -d --restart always -p 9202:9200 -p 9302:9300 \ --name es03 --network=es_net --ip=172.18.0.102 \ -v es_data03:/usr/share/elasticsearch/data \ -v /var/lib/docker/volumes/es_conf/_data/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
到此这篇关于docker安装ElasticSearch:7.8.0集群的文章就介绍到这了,更多相关docker安装ElasticSearch集群内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- idea生成dockerfile(idea集合docker实现镜像打包一键部署)
- docker可用容量查看(docker 查看jvm内存占用方式)
- dubbo和项目搭建(使用docker部署dubbo项目的方法步骤)
- docker镜像和容器(使用docker build kit构建树莓派上可用的Docker镜像)
- docker推荐单个容器运行(docker容器状态的转换实现)
- 使用docker对集群进行管理(使用docker搭建kong集群操作)
- docker镜像保存教程(docker镜像导入导出备份迁移的操作)
- docker是k8s 编排必备容器工具(Docker部署ELK7.3.0日志收集服务最佳实践)
- docker 运行容器命令详细参数详解(Docker Hub运行原理及实现过程解析)
- docker容器无法启动(Docker 无法停止或删除容器服务问题的解决方案)
- linux hadoop client 连接hbase(使用docker部署hbase的方法)
- docker启动失败容器目录结构(docker容器中安装vim问题解决)
- docker远程部署(Docker内网穿透frp部署实现过程解析)
- docker搭建编译开发环境(Shell脚本构建Docker 半自动化编译打包发布应用操作)
- docker 镜像mysql(解决docker拉取mysql镜像太慢的情况)
- dockerfile构建镜像两种方式(通过Dockerfile构建Docker镜像的方法步骤)
- 涉及3条地铁线路 成都这4座轨道交通站点有新名字了(涉及3条地铁线路)
- 来了 成都轨道交通5条线路刷新 进度条(成都轨道交通5条线路刷新)
- 一部手机两套系统 OPPO Find X3的正确打开方式你知道吗(一部手机两套系统)
- OPPO用户看过来 汇总几个春节实用技巧,轻松搞定多设备联动玩法(汇总几个春节实用技巧)
- 北京旅游攻略(北京旅游攻略5日游及其花费)
- 四川旅游攻略(四川旅游攻略自由行攻略)
热门推荐
- linux中apache是否启动怎么查看(Linux apache取消300错误页面Multiple Choices简单步骤)
- css设置超链接样式
- dedecms无缩略图怎么设置(DEDECMS系统分页标签自定义二次开发实例)
- mysql怎么迁移数据(如何把本地mysql迁移到服务器数据库)
- element-ui 菜单悬停样式(js如何构造elementUI树状菜单的数据结构详解)
- 云主机与服务器有什么区别(云服务器是什么,云主机干什么用的?)
- css3盒子布局(CSS3弹性伸缩布局之box布局)
- laravel如何使用预处理(Laravel项目中timeAgo字段语言转换的改善方法示例)
- sql server 报错(sql server利用不同语种语言显示报错错误消息的方法示例)
- mysql的使用步骤(MySQL infobright的安装步骤)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9