Elasticsearch Docker - ES, Kibana

JunMyung Lee·2022년 12월 1일
0

Elasticsearch

목록 보기
4/37

로컬에서 Docker를 통해 ES 환경을 구축해보자. 환경은 8.5.2이다. (현재 글을 작성하는 최신버전)

Direct Image pull

이전까지 테스트를 진행할때는, 직접 ElasticsearchKibana의 이미지를 다운로드(Pull)하고, 두 이미지를 각각 띄울때 같은 네트워크로 연결하여 띄웠었다.

# Elasticsearch
docker run -d --name elasticsearch --net elastic -p 9200:9200 -p 9300:9300 -t docker.elastic.co/elasticsearch/elasticsearch:8.5.2
# Kibana
docker run -d --name kibana --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.5.2

문제는 없지만, 두개의 이미지를 따로 관리하면서 매번 각각 설정하는것은 불편한 감이 있다.

Docker-compose

docker-compose란?

복수 개의 컨테이너를 실행시키는 도커 애플리케이션이 정의를 하기 위한 툴. 여러개의 컨테이너로부터 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여 관리를 간단하게 하는 것으로, 여러개의 컨테이너 설정 내용을 하나의 yaml 파일에 모아서 사용한다.

Set elasticsearch & kibana

version: '3.6'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.5.2
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02
      - cluster.initial_master_nodes=es01,es02
      - bootstrap.memory_lock=true
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.5.2
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01
      - cluster.initial_master_nodes=es01,es02
      - bootstrap.memory_lock=true
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  kibana:
    image: docker.elastic.co/kibana/kibana:8.5.2
    container_name: kibana
    ports:
      - 5601:5601
    environment:
      - ELASTICSEARCH_HOSTS=["http://es01:9200"]
    depends_on:
      - es01
    networks:
      - elastic
    
volumes:
  data01:
    driver: local
  data02:
    driver: local
networks:
  elastic:
    driver: bridge

구글링을 해서 나온 elasticsearch 7.x의 docker-compose.yml이다. 하지만 8버전에서는 그대로 적용하면 bootstrap check fail 관련된 에러가 발생하면서 실행되질 않는다.
해당 이유는 보안때문.. 로컬에서의 테스트 용이므로 보안은 필요없는데 이제는 필수적으로 체크하는 요소가 되어버린것 같다.
다음과 같은 옵션 설정이 필요하다.

xpack.security.enabled=false

물론, 실제 서버에 올릴때는 xpack 보안 설정이 필수

Run

docker-compose -f ./docker-compose.yml up -d


0개의 댓글