介绍
介绍
使用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'
总结
今天福哥带着大家学习了使用Docker基于ES6搭建ES集群的方法,ES集群在高可用方面和扩容方面要比ES单机要强太多了。
不过,ES集群的维护也需要更多的知识和技巧,后面福哥会陆续将ES集群的各种维护技巧教给大家,敬请期待~~