https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
위 문서에 잘 나와있다.
이 중에서 docker compose 를 이용하여 multiple nodes 를 띄우는 방식으로 진행을 했다.
version: '2.2'
services:
es01:
image: elasticsearch:7.17.0
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:
- elasticsearch-poc
es02:
image: elasticsearch:7.17.0
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
ports:
- 9201:9201
networks:
- elasticsearch-poc
es03:
image: elasticsearch:7.17.0
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
ports:
- 9202:9202
networks:
- elasticsearch-poc
kib01:
image: kibana:7.17.0
container_name: kib01
ports:
- 5601:5601
environment:
ELASTICSEARCH_URL: http://es01:9200
ELASTICSEARCH_HOSTS: http://es01:9200
networks:
- elasticsearch-poc
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elasticsearch-poc:
driver: bridge
그런데, 여러 노드들 중 2대의 노드(docker container)가 실행하는데 실패해서, `Name or service not known`, `failed to resolve host` 라는 에러가 발생했다.
그 원인은 Docker Daemon 에 할당해놓은 메모리가 부족했던 것!
원래 2GB 로 설정돼있었는데, 4GB 이상으로 설정을 해주니 문제가 없어졌다.

로컬에서 여러가지 실험을 할 수 있다. Sample Data Plugin 을 추가해서 이것저것 해보고 있다.

반응형