• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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集群(推荐)

    意味着只要启动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集群间进行通讯的端口
    也就是说宿主机(192.168.117.231)的9200-9202,9300-9302端口都会被es集群使用


    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集群内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:Nginx如何配置负载均衡
    下一篇:Nginx常见的错误配置举例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    docker安装ElasticSearch:7.8.0集群的详细教程 docker,安装,ElasticSearch,7.8.0,