美文网首页es集群
Elasticsearch(二)Docker安装部署

Elasticsearch(二)Docker安装部署

作者: frederickhou | 来源:发表于2020-03-18 12:18 被阅读0次
    1_BmvPfSSm2G8C-khX1rhCGg.png

    Elasticsearch docker 安装部署

    Elasticsearch(ES) 的docker镜像运用 Centos:7作为基础镜像。发布过的相关Docker镜像包可以在www.docker.elastic.co官网进行查。源码托管在Github上。

    单节点安装

    拉取镜像包

    docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.1
    

    其他的版本镜像包可以去www.docker.elastic.co进行下载。

    运行一个单节点集群的服务

    运行一个单节点集群服务用来开发或者测试。并且要指定单节点发现来绕过引导检查。详细引导检查请查看引导检查

    docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.1
    

    多节点集群安装

    使用Docker Compose 启动一个多节点集群

    • 1 创建一个docker compose文件docker-compose.yml

        version: '2.2'
        services:
          es01:
            image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
            container_name: es01
            environment:
              - node.name=es01
              - cluster.name=es-docker-cluster
              - discovery.seed_hosts=es02,es03
              - cluster.initial_master_nodes=es01,es02,es03
              - bootstrap.memory_lock=true
              - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
            ulimits:
              memlock:
                soft: -1
                hard: -1
            volumes:
              - data01:/usr/share/elasticsearch/data
            ports:
              - 9200:9200
            networks:
              - elastic
          es02:
            image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
            container_name: es02
            environment:
              - node.name=es02
              - cluster.name=es-docker-cluster
              - discovery.seed_hosts=es01,es03
              - cluster.initial_master_nodes=es01,es02,es03
              - bootstrap.memory_lock=true
              - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
            ulimits:
              memlock:
                soft: -1
                hard: -1
            volumes:
              - data02:/usr/share/elasticsearch/data
            networks:
              - elastic
          es03:
            image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
            container_name: es03
            environment:
              - node.name=es03
              - cluster.name=es-docker-cluster
              - discovery.seed_hosts=es01,es02
              - cluster.initial_master_nodes=es01,es02,es03
              - bootstrap.memory_lock=true
              - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
            ulimits:
              memlock:
                soft: -1
                hard: -1
            volumes:
              - data03:/usr/share/elasticsearch/data
            networks:
              - elastic
      
        volumes:
          data01:
            driver: local
          data02:
            driver: local
          data03:
            driver: local
      
        networks:
          elastic:
            driver: bridge
      

    此Docker Compose 例子文件将创建一个3个节点的Elasticsearch集群。节点es01 监听 localhost:9200 并且在Docker网络中节点es02 和es03要和es01通信。

    请记录此配置文件导出的端口号:9200,并且要在所有网络接口上配置Linux的iptables端口开放信息,这样Elasticsearch服务就有权限公开访问了。如果您不想公开端口9200,而是使用反向代理,请在docker-compose.yml文件中将9200:9200替换为127.0.0.1:9200:9200。 然后只能从主机本身访问Elasticsearch。

    #开发9200端口
    iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
    service iptables save
    

    卷data01,data02,和data01直接存储着节点数据,没有用持久化存储,此种配置在重启服务后数据可能丢失

    • 2 确保为Docker Engine分配了至少4GiB的内存

      如果docker compose 没有安装请查看docs.docker.com网站进行安装

        sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
        sudo chmod +x /usr/local/bin/docker-compose 
      

      查看版本

        # docker-compose --version
        docker-compose version 1.25.4, build 8d51620a
      
    • 3 运行docker compose 来创建拉起集群

        docker-compose up -d
      

      报错:
      iptables: No chain/target/match by that name
      原因:
      docker服务启动时定义的自定义链
      DOCKER由于某种原因被清掉重启docker服务及可重新生成自定义链DOCKER
      解决方案:

        iptables -t filter -F
      
        iptables -t filter -X
      
        systemctl restart docker
      

      docker 运行查看

        # docker ps|grep es0
        86b91ba4732f        docker.elastic.co/elasticsearch/elasticsearch:7.6.1   "/usr/local/bin/do..."   5 minutes ago       Up 5 minutes        0.0.0.0:9200->9200/tcp, 9300/tcp   es01
        706171c7357b        docker.elastic.co/elasticsearch/elasticsearch:7.6.1   "/usr/local/bin/do..."   5 minutes ago       Up 5 minutes        9200/tcp, 9300/tcp                 es02
        941ebc831b93        docker.elastic.co/elasticsearch/elasticsearch:7.6.1   "/usr/local/bin/do..."   5 minutes ago       Up 5 minutes        9200/tcp, 9300/tcp                 es03
      
    • 4 提交一个_cat/nodes 请求来查看节点是否被拉起来以及运行状态

        curl -X GET "localhost:9200/_cat/nodes?v&pretty"
      

      查看节点状态结果:

        # curl -X GET "localhost:9200/_cat/nodes?v&pretty"
        ip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
        172.18.0.4           22          86   8    0.16    0.58     0.70 dilm      -      es03
        172.18.0.3           16          86   7    0.16    0.58     0.70 dilm      *      es01
        172.18.0.2           27          86   7    0.16    0.58     0.70 dilm      -      es02
      
    • 5 停止集群

        #数据将会保留
        docker-compose down
      
        #数据将被清除
        docker-compose down -v
      
        #重启集群
        docker-compose up -d
      

    产品中使用注意事项

    • 1 设置 vm.max_map_count 至少为262144

        grep vm.max_map_count /etc/sysctl.conf
        vm.max_map_count=262144
      
        #如果没有设置运行如下命令
        sysctl -w vm.max_map_count=262144
      
    • 2 配置文件必须被elasticsearch用户可读

      默认情况下,Elasticsearch使用uid:gid 1000:0作为用户elasticsearch在容器内运行。

      如果您要绑定安装本地目录或文件,则elasticsearch用户必须可以读取它。 此外,该用户必须对数据和日志目录具有写权限。

      例如:准备一个本地目录通过mount来存储数据

        mkdir esdatadir
        chmod g+rwx esdatadir
        chgrp 0 esdatadir
      

    参考:官方网站

    相关文章

      网友评论

        本文标题:Elasticsearch(二)Docker安装部署

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