전체 그래프
Elasticsearch

Installation

data-engineeringelasticsearchinstallationdocker

상위: Elasticsearch

요약

Elasticsearch의 Docker 기반 설치 방법과 주요 환경 설정(Cluster, Node, Network, JVM)에 대해 설명합니다.

Docker 기반 설치

장점

  • OS 환경 격리
  • 환경 세팅 단순화 및 재현성 보장
  • Docker Compose를 활용한 멀티 컨테이너 환경 구성 용이

Docker Compose 예시

services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.17.1
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=elastic-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - node.roles=master,data,ingest
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - shared_esdata:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic

volumes:
  shared_esdata:

networks:
  elastic:

주요 설정

Cluster & Node

  • cluster.name: 클러스터 식별자. 동일한 이름을 가진 노드들이 클러스터를 형성합니다.
  • node.name: 노드 식별자.
  • node.roles: 노드의 역할 지정 (master, data, ingest 등).

Discovery

  • discovery.seed_hosts: 클러스터에 합류하기 위해 통신할 다른 노드들의 주소 목록.
  • cluster.initial_master_nodes: 클러스터가 처음 시작될 때 마스터로 선출될 수 있는 노드 목록 (부트스트랩 시 필수).

Memory (JVM)

  • ES_JAVA_OPTS: JVM 힙 메모리 설정.
  • -Xms, -Xmx를 동일하게 설정하는 것을 권장합니다 (최대 32GB 이하, 시스템 메모리의 50% 이하).

Network & Paths

  • network.host: 0.0.0.0으로 설정하여 외부 접근 허용.
  • path.data: 데이터 저장 경로 (볼륨 마운트 권장).
  • path.logs: 로그 저장 경로.