Elasticsearch Scaling (확장 전략)

📌 Elasticsearch는 데이터 증가에 따라 확장(Scaling) 가능한 구조를 제공합니다.

  • 이를 효과적으로 운영하기 위해 다양한 샤딩 전략, 클러스터 확장, 데이터 라이프사이클 관리, 클러스터 간 검색 및 복제, 백업 및 복구 기능을 활용해야 합니다.

Hot-Warm-Cold 아키텍처

Hot-Warm-Cold 아키텍처데이터의 중요도와 접근 빈도에 따라 노드를 분리하여 성능과 비용을 최적화하는 방법입니다.

노드 유형 설명 저장 데이터 유형 하드웨어 사양
Hot 노드 가장 빈번하게 사용되는 데이터 저장 최근 데이터 (실시간 검색) 고성능 CPU, SSD
Warm 노드 자주 검색되지 않는 과거 데이터 저장 중기 데이터 (로그 데이터) 중간 성능 CPU, HDD
Cold 노드 거의 검색되지 않는 데이터 저장 장기 보관 데이터 (백업용) 저사양 CPU, 대용량 HDD

Hot-Warm-Cold 아키텍처의 장점

  • Hot 노드는 빠른 검색 속도를 유지.
  • Warm/Cold 노드는 저비용 스토리지(HDD)를 사용하여 비용 절감.
  • **ILM (Index Lifecycle Management)**와 함께 사용하여 자동 데이터 이동 가능.

(1) 노드 역할 설정 (elasticsearch.yml)

node.roles: [hot]
node.roles: [warm]
node.roles: [cold]

각 노드에 역할을 부여하여 특정 데이터를 저장할 수 있도록 설정.


(2) ILM(인덱스 라이프사이클 관리) 정책 적용

PUT _ilm/policy/log_policy
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_size": "50gb",
            "max_age": "7d"
          }
        }
      },
      "warm": {
        "min_age": "30d",
        "actions": {
          "allocate": {
            "number_of_replicas": 1,
            "include": { "box_type": "warm" }
          }
        }
      },
      "cold": {
        "min_age": "90d",
        "actions": {
          "allocate": {
            "include": { "box_type": "cold" }
          }
        }
      }
    }
  }
}

새로운 데이터는 Hot 노드에서 시작 → 30일 후 Warm 노드로 이동 → 90일 후 Cold 노드로 이동.


Cross Cluster Search (CCS) & Cross Cluster Replication (CCR)

**CCS (Cross Cluster Search)**와 **CCR (Cross Cluster Replication)**은
여러 개의 클러스터를 연결하여 확장성을 확보하는 방식입니다.


(1) Cross Cluster Search (CCS) - 여러 클러스터 검색

  • 여러 개의 Elasticsearch 클러스터에서 데이터를 검색 가능.
  • 물리적으로 분리된 클러스터라도 단일 API로 통합 검색 수행.

📌 클러스터 설정

search.remote.cluster_one.seeds: ["192.168.1.100:9300"]
search.remote.cluster_two.seeds: ["192.168.1.101:9300"]

클러스터 cluster_one과 cluster_two를 원격 검색 대상으로 추가.


📌 Cross Cluster Search 쿼리

GET cluster_one:products,cluster_two:orders/_search
{
  "query": {
    "match": { "name": "스마트폰" }
  }
}

cluster_one의 products 인덱스와 cluster_two의 orders 인덱스를 동시에 검색.


(2) Cross Cluster Replication (CCR) - 클러스터 간 데이터 복제

  • 클러스터 A → 클러스터 B로 데이터 복제 (마스터-슬레이브 구조).
  • 장애 발생 시 DR(Disaster Recovery) 시스템으로 활용 가능.

📌 리더 인덱스 생성 (Primary Cluster)

PUT /products
{
  "settings": {
    "index": {
      "soft_deletes.enabled": true
    }
  }
}

CCR을 위해 soft_deletes.enabled를 활성화해야 함.


📌 팔로워 인덱스 설정 (Secondary Cluster)

PUT /products_follower/_ccr/follow
{
  "remote_cluster": "primary_cluster",
  "leader_index": "products"
}

primary_cluster의 products 인덱스를 products_follower 인덱스로 복제.


Snapshot & Restore (백업 및 복구)

스냅샷(Snapshot) & 복원(Restore) 기능은 클러스터 백업 및 장애 발생 시 데이터 복구에 사용됩니다.

주요 특징

  • 백업 대상: 전체 클러스터, 특정 인덱스, 설정 데이터.
  • 저장 위치: S3, HDFS, Azure, Google Cloud Storage, NFS 등.

(1) 스냅샷 저장소 등록

PUT _snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/mnt/backup"
  }
}

/mnt/backup 디렉토리를 사용하여 백업 저장소 생성.


(2) 스냅샷 생성 (백업)

PUT _snapshot/my_backup/snapshot_2024_01
{
  "indices": "products,orders",
  "ignore_unavailable": true,
  "include_global_state": false
}

products, orders 인덱스를 백업 (클러스터 전체가 아닌 특정 인덱스만 백업 가능).


(3) 스냅샷 확인

GET _snapshot/my_backup/_all

현재 저장된 모든 스냅샷 목록 확인.


(4) 스냅샷 복구 (Restore)

POST _snapshot/my_backup/snapshot_2024_01/_restore
{
  "indices": "products",
  "ignore_unavailable": true
}

백업된 products 인덱스를 복구.


Elasticsearch Scaling 전략 정리

기능 설명
Hot-Warm-Cold 아키텍처 데이터 라이프사이클에 따라 노드 분리 (성능 & 비용 최적화)
Cross Cluster Search (CCS) 여러 개의 클러스터에서 검색 수행
Cross Cluster Replication (CCR) 클러스터 간 데이터 복제 (DR 시스템 구축 가능)
Snapshot & Restore 데이터 백업 및 복구

 

+ Recent posts