前言
因现在公司大数据场景的需要,为环境搭建了一套es测试集群。之前虽然在上一家公司搭建过集群,可那时还是用的es5。而且是通过tar包进行搭建的。为了提高环境的搭建速度,正好有在使用docker,而且es的docker镜像官方也提供了,遂决定使用docker-compose安装es cluster环境。
参考官网:https://www.elastic.co/guide/en/elasticsearch/reference/7.11/docker.html
一、环境准备工作
按照官网的提示一步步进行,一般不会有问题。
1、首先拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.11.2
2、编辑docker-compose.yml文件
version: ‘2.2’
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.11.2
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.11.2
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.11.2
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
文件过载地址可以更改,一般会指定data\logs\config这三个目录。如果不做挂载处理,es重启的话会丢失数据。(切记了)
另外,关于java heap的指定,一般会使用jvm.options文件,进行设置
设置 grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
sysctl -w vm.max_map_count=262144 生效
然后关闭Swapness 设置为0
二、启动集群
执行docker-compose -f xxx/xxxxx/xxx/xxx.yml up -d 创建容器并启动服务。
然后通过docker logs [容器名] 查看日志,如果有报错信息,通常是权限的问题,根据日志内容进行排查。通常不会出现无法理解的bug出现。
三、配置文件
由于本次只是用于测试,所以搭建的仅仅算是伪分布式,而且没做什么优化。/usr/share/elasticsearch/config/elasticsearch.yml 文件中可以配置一些变量,这个在官网都有说明可以参考一下。另外集群的很多参数是通过命令进行生效的,如果想精通es,官网+源码是个不错的方式。