[Elasticsearch] 시스템 구조

임유진·2025년 7월 20일

클라우드/인프라

목록 보기
4/25
post-thumbnail

1. 클러스터 구성 (Cluster Settings)

  • 클러스터와 노드 구성

    • Elasticsearch 클러스터는 여러 노드(Elasticsearch 인스턴스)로 구성되며, HTTP(9200~)와 TCP(9300~) 포트를 사용해 통신
    • 서버당 여러 노드를 실행할 수도 있음
    • 서로 다른 노드가 동일한 cluster.name을 가져야 하나의 클러스터로 묶임
  • 하나의 서버에서 여러 클러스터 실행

    • 각 노드 설정에서 cluster.namenode.name을 지정하여, 동일 서버에서 서로 다른 클러스터에 속하는 노드를 실행할 수 있음
  • 디스커버리(Discovery)

    • discovery.seed_hosts를 통해 처음 네트워크 상의 노드를 찾아 동일 클러스터 여부를 확인하고 바인딩
    • 값이 없거나 포함 노드가 없으면 새로운 클러스터를 생성

2. 인덱스와 샤드 (Index & Shards)

  • 인덱스와 샤드 구조

    • 인덱스는 도큐먼트의 집합이며, 내부적으로 루씬 샤드(shard) 단위로 분할되어 여러 노드에 분산
  • Primary Shard와 Replica

    • 버전 7.x 기준 기본 샤드는 1개, 이전 버전엔 5개.
    • 기본 복제본(replica)은 1개이며, 노드 수에 따라 primary와 replica 샤드가 분산되어 저장
    • 한 노드가 다운되어도, 다른 노드의 replica가 primary로 승격되어 데이터 유실 없이 동작 지속 가능
  • 샤드 개수 설정

    • number_of_shards는 인덱스 생성 시만 설정 가능하며, 이후 변경하려면 재색인이 필요
    • number_of_replicas는 언제든지 변경 가능 (_settings API 통해 조정)

3. 마스터 노드와 데이터 노드 (Master & Data Nodes)

  • 마스터 노드 (Master Node)

    • 클러스터 메타데이터, 샤드 위치, 상태 등을 관리
    • node.master: true면 후보가 될 수 있고, 기본 설정이기도 함
    • 하나의 클러스터엔 반드시 최소 하나의 마스터가 있어야 하며, 현재 마스터가 다운되면 후보 노드로 재선출
    • 노드가 많아질 경우 전용 마스터 후보 노드만 지정해 (node.master: true, node.data: false), 나머지는 마스터 기능 제외해 부담을 줄일 수 있음
  • 데이터 노드 (Data Node)

    • 실제 색인·저장·검색·분석 기능
    • 마스터 전용 노드와 분리해 구성 가능(node.data: true/false)
  • Split‑Brain 문제

    • 마스터 후보 노드 수가 적고 minimum_master_nodes가 적절히 설정되지 않으면 네트워크 분리 시 클러스터가 두 개 생성될 수 있고, 이후 병합 시 데이터 불일치가 발생할 수 있음
    • 이를 방지하기 위해 마스터 후보는 홀수(예: 3개 이상) 로 설정하며, minimum_master_nodes = (total/2)+1 또는 Elasticsearch 7.x 이상에선 cluster.initial_master_nodes로 제어

🔧 전체 요약

항목핵심 요약
클러스터 구성같은 cluster.name, discovery.seed_hosts 기반 노드 발견 및 결합
인덱스/샤드 구조인덱스 = 도큐먼트 그룹. Primary + Replica 샤드를 통해 분산 저장 및 가용성 확보
샤드 설정shards는 생성 시 고정, replicas는 동적으로 조정 가능
노드 역할 분리마스터 전용 노드(클러스터 관리), 데이터 노드(데이터 저장 및 처리)로 분리
Split‑brain 방지마스터 후보 노드는 홀수 구성, 최소 안정 노드 수 설정 필요

참고

profile
말하는 고구마

0개의 댓글