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 | 데이터 백업 및 복구 |
'Elastic Search' 카테고리의 다른 글
[LV 5] Elasticsearch 보안 및 인증 설정 (0) | 2025.02.02 |
---|---|
[LV 5] Kibana 연동 및 데이터 시각화 (0) | 2025.02.02 |
[LV 3] Ingest Pipeline & Reindex API (0) | 2025.02.02 |
[LV 2] 쿼리 DSL (Query DSL) 활용 (0) | 2025.02.02 |
[LV 2] 색인(Indexing)과 검색(Search) 기본 (0) | 2025.02.02 |