본문 바로가기

개발노트

ElasticSearch Docker 로 띄울 때 Docker Daemon 메모리를 확인하자

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 이상으로 설정을 해주니 문제가 없어졌다.

도움이 된 SO : https://stackoverflow.com/questions/62006956/elasticsearch-multi-node-cluster-one-node-always-fails-with-docker-compose

 

 

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

반응형