-
docker-compose.yml 활용하여 Elasticsearch Cluster 만들기Elasticsearch 2024. 10. 25. 20:42
동작 테스트를 위해 만들었던 Elasticsearch Cluster docker-compose.yml 파일을 공유하려고 합니다.
본래는 보안모드로 구성하려 했으나 빠른 테스트를 위해 보안설정을 하지 않았습니다.
클러스터의 구성은 아래와 같습니다.
Elasticsearch Cluster
마스터 노드 : 1개
데이터 노드 : 4개 (node.attr.tier을 통해 노드 구분)
- Hot Node : 3개
- Warm Node : 1개
KIbana
++ Hot, Warm 설정은 node.roles 설정이 아닌 node.attr.tier 설정입니다.docker-compose.yml
version: '3.8' services: # 마스터노드 설정 master: image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} container_name: master environment: - node.name=master - cluster.name=${CLUSTER_NAME} - discovery.seed_hosts=hot01,hot02,hot03,warm - cluster.initial_master_nodes=master - bootstrap.memory_lock=true - xpack.security.enabled=false - node.roles=[master] ulimits: # 메모리 제한 해제 (Elasticsearch) memlock: soft: -1 hard: -1 volumes: - data_master:/usr/share/elasticsearch/data # 메모리 제한 설정 (Docker container) : 전체 메모리 사용량 제한 mem_limit: ${ES_MEM_LIMIT} ports: - ${ES_PORT}:9200 hot01: depends_on: - master image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} container_name: hot01 environment: - node.name=hot01 - cluster.name=${CLUSTER_NAME} - discovery.seed_hosts=master,hot02,hot03,warm - cluster.initial_master_nodes=master - bootstrap.memory_lock=true - xpack.security.enabled=false - node.attr.tier=hot - node.roles=[data] ulimits: memlock: soft: -1 hard: -1 volumes: - data_hot01:/usr/share/elasticsearch/data mem_limit: ${ES_MEM_LIMIT} ports: - 9201:9200 hot02: depends_on: - master - hot01 image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} container_name: hot02 environment: - node.name=hot02 - cluster.name=${CLUSTER_NAME} - discovery.seed_hosts=master,hot01,hot03,warm - cluster.initial_master_nodes=master - bootstrap.memory_lock=true - xpack.security.enabled=false - node.attr.tier=hot - node.roles=[data] ulimits: memlock: soft: -1 hard: -1 volumes: - data_hot02:/usr/share/elasticsearch/data mem_limit: ${ES_MEM_LIMIT} ports: - 9202:9200 hot03: depends_on: - master - hot01 - hot02 image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} container_name: hot03 environment: - node.name=hot03 - cluster.name=${CLUSTER_NAME} - discovery.seed_hosts=master,hot01,hot02,warm - cluster.initial_master_nodes=master - bootstrap.memory_lock=true - xpack.security.enabled=false - node.attr.tier=hot - node.roles=[data] ulimits: memlock: soft: -1 hard: -1 volumes: - data_hot03:/usr/share/elasticsearch/data mem_limit: ${ES_MEM_LIMIT} ports: - 9203:9200 warm: depends_on: - master - hot01 - hot02 - hot03 image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} container_name: warm environment: - node.name=warm - cluster.name=${CLUSTER_NAME} - discovery.seed_hosts=master,hot01,hot02,hot03 - cluster.initial_master_nodes=master - bootstrap.memory_lock=true - xpack.security.enabled=false - node.attr.tier=warm - node.roles=[data] ulimits: memlock: soft: -1 hard: -1 volumes: - data_warm:/usr/share/elasticsearch/data mem_limit: ${ES_MEM_LIMIT} ports: - 9204:9200 kibana: image: docker.elastic.co/kibana/kibana:${STACK_VERSION} container_name: kibana ports: - ${KIBANA_PORT}:5601 environment: - ELASTICSEARCH_HOSTS=http://master:9200 mem_limit: ${KB_MEM_LIMIT} depends_on: - master - hot01 - hot02 - hot03 - warm volumes: data_master: driver: local data_hot01: driver: local data_hot02: driver: local data_hot03: driver: local data_warm: driver: local #네트워크 설정 networks: default: name: elastic external: true # 기존에 만들어둔 네트워크 사용.env
#ELASTIC_PASSWORD=elastic #KIBANA_PASSWORD=elastic STACK_VERSION=8.15.3 CLUSTER_NAME=docker-cluster ES_PORT=9200 KIBANA_PORT=5601 ES_MEM_LIMIT=1000000000 KB_MEM_LIMIT=1000000000docker-copose.yml과 .env를 같은 파일내에 두고 docker-compose up을 실행시키면 Elasticsearch cluster를 구성할 수 있습니다.
아무도 안들어오지만 혹여라도 보신분들은 테스트 시 잘 사용하셨으면 좋겠네요ㅎ
다음에 기회가 된다면 보안설정도 추가한 docker-compose 파일도 작성해보도록 하겠습니다..!'Elasticsearch' 카테고리의 다른 글
인덱스 샤드 설정에 대해 (0) 2025.03.22 Curator를 활용한 Snapshot 테스트 (4) 2025.01.08 Curator에 대해 (5) 2024.10.09 Elasticsearch ILM 탐색기 (2) 2024.06.29 Elasticsearch_security 설정 (6) 2024.05.05