同福

Docker搭建Elasticsearch6.8.15集群环境【20220905】

介绍

介绍

使用Docker搭建服务器运行环境是非常方便的,这一块Elasticsearch就做了非常友好,基本上通过环境变量就可以完成大部分配置。

今天福哥就带着大家使用Docker搭建一个ES的集群环境,别掉队哦~~

集群

分片shard

ES索引会将数据分散到不同的shard当中存储,这样做可以实现多个节点数据的分布式搜索,避免单个节点的故障。一个索引的分片数量在创建之初就必须设计好,后期就不能修改了。

副本replica

ES索引的分片可以设置副本,每一个分片可以设置多个副本,副本可以提高索引的容错性,当某个节点上的某个索引的分片出现了损坏,可以通过副本来进行恢复。

安装

docker-compose-es-cluster.yml

为了发布,福哥使用docker-compose进行docker的配置,官方也是推荐的这种方式。

福哥设计的ES集群是三个节点的,每个ES节点JVM限制最大为512m,三个ES节点名称分别为tfes01、tfes02和tfes03。

最后的docker-compose-es-cluster.yml配置如下:

version: "3.2"

services:
  tfes01:
    image: registry.tongfu.net:5000/elasticsearch:6.8.15
    container_name: tfes01
    environment:
      - node.name=tfes01
      - cluster.name=tfes-cluster
      - discovery.zen.ping.unicast.hosts=tfes01,tfes02,tfes03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /data/docker.data/tfes01/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200

  tfes02:
    image: registry.tongfu.net:5000/elasticsearch:6.8.15
    container_name: tfes02
    environment:
      - node.name=tfes02
      - cluster.name=tfes-cluster
      - discovery.zen.ping.unicast.hosts=tfes01,tfes02,tfes03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /data/docker.data/tfes02/data:/usr/share/elasticsearch/data

  tfes03:
    image: registry.tongfu.net:5000/elasticsearch:6.8.15
    container_name: tfes03
    environment:
      - node.name=tfes03
      - cluster.name=tfes-cluster
      - discovery.zen.ping.unicast.hosts=tfes01,tfes02,tfes03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /data/docker.data/tfes03/data:/usr/share/elasticsearch/data

目录

福哥为每个ES节点建立了一个数据目录,授权目录所有者为1000这是容器里的es用户ID,这些目录会映射到ES容器里面做持久化保存。

curl 'http://localhost:9200/_cat/indices'

home/topic/2022/0905/17/baf1416933d54b902f4fdcfb86e148b9.png

总结

今天福哥带着大家学习了使用Docker基于ES6搭建ES集群的方法,ES集群在高可用方面和扩容方面要比ES单机要强太多了。

不过,ES集群的维护也需要更多的知识和技巧,后面福哥会陆续将ES集群的各种维护技巧教给大家,敬请期待~~