美文网首页ELK服务器技术
用Docker搭建elasticsearch集群

用Docker搭建elasticsearch集群

作者: GoGooGooo | 来源:发表于2017-12-19 15:13 被阅读111次

    概述

    用docker进行elasticsearch的部署非常简单,如果要实现集群配置,需要进行一些特殊的处理,本文介绍如何利用docker进行elasticsearch集群的搭建。

    具体的配置可以参照该 示例

    主节点配置

    docker-compose.yml配置文件

    es:
      image: elasticsearch
      volumes:
        - ./es:/usr/share/elasticsearch/data
        - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      ports:
        - 9200:9200
        - 9300:9300
    

    其中的./es:/usr/share/elasticsearch/data是将elasticsearch的数据文件挂在到本机的一个目录上,这儿指定的本机目录是./es,可以修改为其它有权限的目录。

    如果没有docker compose环境,那么可以用docker swarm进行搭建,如:
    docker-es.yml

    version: '3.2'
    
    services:
      es:
        image: elasticsearch
        networks:
          - net
        volumes:
          - /app/es/data:/usr/share/elasticsearch/data
          - /app/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
        ports:
          - target: 9200
            published: 9200
            protocol: tcp
            mode: host
          - target: 9300
            published: 9300
            protocol: tcp
            mode: host
        deploy:
          mode: global
    
    networks:
      net:
        driver: overlay
        internal: false
        ipam:
          driver: default
          config:
            - subnet: 10.0.66.0/24
    

    elasticsearch.yml配置文件

    cluster.name: elasticsearch_cluster
    node.name: node-master
    node.master: true
    node.data: true
    http.port: 9200
    network.host: 0.0.0.0
    network.publish_host: master-ip
    discovery.zen.ping.unicast.hosts: ["master-ip"]
    

    network.publish_host: master-ip指定了本机ip,需要将master-ip修改为真实的机器ip。discovery.zen.ping.unicast.hosts中的master-ip同样需要修改为真实的机器ip。

    启动服务

    首先确认一下/etc/sysctl.conf配置文件中的vm.max_map_count是否大于655360,如果不是,或者配置文件中没有该配置,则用root用户将该配置修改为vm.max_map_count=655360,并执行命令sysctl -p否则启动时elasticsearch会报错。

    执行docker-compose up -d,就可以正常启动了。

    数据节点配置

    docker-compose.yml配置文件

    与主节点的配置相同。

    elasticsearch.yml配置文件

    cluster.name: elasticsearch_cluster
    node.name: node-data-1
    node.master: false
    node.data: true
    http.port: 9200
    network.host: 0.0.0.0
    network.publish_host: data-ip
    discovery.zen.ping.unicast.hosts: ["master-ip"]
    

    与主节点配置的区别在于以下几点:

    node.name: node-data-1
    node.master: false
    network.publish_host: data-ip
    

    node.name是数据节点的名字,node.master要设置为false,network.publish_host设置为数据节点的机器ip。

    启动服务

    启动步骤同主节点。

    主节点和数据节点都启动完成后,在主节点服务器上执行 curl http://master-ip:9200/_cat/nodes 命令(将命令中的master-ip修改为主节点的机器ip)可以看到集群中节点的状态。

    相关文章

      网友评论

        本文标题:用Docker搭建elasticsearch集群

        本文链接:https://www.haomeiwen.com/subject/gdabwxtx.html