1. 인덱서 클러스터란?
인덱서 클러스터: 여러 대의 인덱서(indexer)를 그룹으로 묶어 데이터 복제와 장애 대응을 가능하게 하는 구조
주요 특징:
- 데이터 중복 저장(Replication) → 데이터 손실 방지
- 자동 장애 조치(Failover) → 인덱서 다운 시에도 검색 가능
- 멀티 사이트 지원 → 데이터 센터 전체 장애에도 대비 가능
👉 쉽게 말해, “데이터 안전망”을 제공하는 기능
2. 인덱서 클러스터의 주요 개념
① Replication Factor (RF)
- 클러스터 내에서 데이터 복사본을 몇 개 유지할지 결정
- 예: RF=3 → 모든 데이터는 3개의 인덱서에 저장
② Search Factor (SF)
- 검색 가능한 데이터 복제본의 개수
- SF가 높을수록 장애 복구 속도가 빨라지지만, 더 많은 저장소가 필요
💡 운영 팁:
단일 사이트 환경에서는 보통 RF=3, SF=2 가 많이 쓰입니다.
사실 RF=2, SF=2 임.. 비용 때문에
3. 클러스터 구성 요소
인덱서 클러스터는 크게 세 가지로 이루어집니다.
- Cluster Master (CM)
- 클러스터 전체 관리
- 피어 노드 상태 모니터링 & 설정 배포
- 검색 헤드의 단일 접점
- Peer Nodes (인덱서 피어)
- 데이터 인덱싱 및 복제 수행
- 최소 RF 이상의 노드 필요
- Search Head (SH)
- 클러스터 전체를 대상으로 검색 실행
4. 인덱서 클러스터 아키텍처
일반적인 동작 흐름:
- 포워더(Forwarder) → 데이터 전송 (로드밸런싱 + ACK 모드)
- 인덱서(Peer) → 데이터 저장 + 다른 인덱서로 복제
- 클러스터 마스터 → 복제·검색 조율
- 검색 헤드 → 클러스터 전체 데이터 검색
📌 포워더는 인덱서 ACK 모드를 켜두는 것이 중요합니다. (데이터 손실 방지)
5. 배포 단계
- 요구사항 정의
- RF, SF 값 결정
- 단일 사이트 vs 멀티 사이트 선택
- Splunk 인스턴스 설치
- 인덱서: 최소 RF 수 이상
- 클러스터 마스터: 1대
- 검색 헤드: 최소 1대
- 클러스터링 활성화
- CM, Peer, SH 각각의 server.conf 설정
- 피어 노드 설정
- 동일한 인덱스 세트 사용 (master-apps → slave-apps 배포)
- 클러스터 마스터 데이터 포워딩
- 장애 대비를 위해 CM 자체 로그도 인덱서로 전달
인덱서 클러스터(Indexer Clustering) 설정 가이드 🚀
Splunk 환경에서 데이터 무결성, 가용성, 재해 복구를 확보하려면 인덱서 클러스터(Indexer Clustering)는 필수입니다.
이 글에서는 단일 사이트 클러스터 설정 절차부터, 멀티 사이트 클러스터 설정 예시까지 단계별로 정리합니다.
📌 0. 사전 준비
- 모든 노드의 Splunk 버전 동일
- 방화벽/보안그룹 포트 허용
- 8089 (관리 포트)
- 9997 (데이터 수집)
- 9887 (복제)
- NTP 기반 시간 동기화
- 모든 노드 동일한 클러스터 비밀키(pass4SymmKey)
⚙️ 1. 클러스터 마스터(CM) 설정
# CM에서 실행
$SPLUNK_HOME/bin/splunk edit cluster-config -mode master -replication_factor 3 -search_factor 2 -secret <YOUR_CLUSTER_KEY> -cluster_label cluster1
$SPLUNK_HOME/bin/splunk restart
📄 server.conf
[clustering]
mode = master
replication_factor = 3
search_factor = 2
pass4SymmKey = <YOUR_CLUSTER_KEY>
cluster_label = cluster1
⚠️ 주의: CM은 반드시 전용 노드여야 합니다. 인덱서 피어나 검색 헤드와 겸용 불가!
⚙️ 2. 인덱서 피어(Indexer Peer) 설정
# 각 인덱서에서 실행
$SPLUNK_HOME/bin/splunk edit cluster-config -mode slave -master_uri https://<CM_HOST>:8089 -replication_port 9887 -secret <YOUR_CLUSTER_KEY>
$SPLUNK_HOME/bin/splunk enable listen 9997
$SPLUNK_HOME/bin/splunk restart
📄 server.conf
[clustering]
mode = slave
master_uri = https://<CM_HOST>:8089
pass4SymmKey = <YOUR_CLUSTER_KEY>
[replication_port://9887]
disabled = false
⚙️ 3. 검색 헤드(Search Head) 설정
$SPLUNK_HOME/bin/splunk edit cluster-config \
-mode searchhead \
-master_uri https://<CM_HOST>:8089 \
-secret <YOUR_CLUSTER_KEY>
$SPLUNK_HOME/bin/splunk restart
📄 server.conf
[clustering]
mode = searchhead
master_uri = https://<CM_HOST>:8089
pass4SymmKey = <YOUR_CLUSTER_KEY>
📂 4. 인덱스 정의 (CM → Peer로 배포)
📄 indexes.conf (CM: $SPLUNK_HOME/etc/master-apps/my_indexes/default/indexes.conf)
[security_logs]
homePath = $SPLUNK_DB/security_logs/db
coldPath = $SPLUNK_DB/security_logs/colddb
thawedPath = $SPLUNK_DB/security_logs/thaweddb
배포 명령:
$SPLUNK_HOME/bin/splunk apply cluster-bundle \
-target https://<CM_HOST>:8089 \
-auth admin:<password>
📡 5. 포워더 설정 (데이터 수집)
📄 outputs.conf
[tcpout]
defaultGroup = idx_discovered
[tcpout:idx_discovered]
indexerDiscovery = cm_discovery
useACK = true
[indexer_discovery:cm_discovery]
pass4SymmKey = <IDX_DISCOVERY_KEY>
master_uri = https://<CM_HOST>:8089
⚠️ 주의: Forwarder의 pass4SymmKey는 클러스터 비밀키와 다릅니다. (혼동 금지)
🛠️ 6. 클러스터 마스터 내부 데이터 포워딩
📄 outputs.conf (CM)
[tcpout]
defaultGroup = my_peers_nodes
forwardedindex.filter.disable = true
[tcpout:my_peers_nodes]
server = peer1:9997,peer2:9997,peer3:9997
🔄 7. 점검 & 상태 확인
# CM에서
splunk show cluster-status
splunk list cluster-peers
# Peer에서
splunk show cluster-bundle-status
🌍 멀티 사이트 클러스터 설정 (server.conf 예시)
멀티 사이트 환경에서는 각 인덱서 피어와 CM에 site 속성을 정의해야 합니다.
📄 server.conf (멀티 사이트 예시)
클러스터 마스터(CM)
[clustering]
mode = master
replication_factor = 3
search_factor = 2
site_replication_factor = origin:2,total:3
site_search_factor = origin:1,total:2
multisite = true
available_sites = site1,site2
site = site1
pass4SymmKey = <YOUR_CLUSTER_KEY>
cluster_label = multisite_cluster
인덱서 피어 (Site1 노드)
[clustering]
mode = slave
master_uri = https://<CM_HOST>:8089
site = site1
pass4SymmKey = <YOUR_CLUSTER_KEY>
[replication_port://9887]
disabled = false
인덱서 피어 (Site2 노드)
[clustering]
mode = slave
master_uri = https://<CM_HOST>:8089
site = site2
pass4SymmKey = <YOUR_CLUSTER_KEY>
[replication_port://9887]
disabled = false
검색 헤드
[clustering]
mode = searchhead
master_uri = https://<CM_HOST>:8089
pass4SymmKey = <YOUR_CLUSTER_KEY>
6. 업그레이드 전략
업그레이드는 반드시 순서를 지켜야 합니다.
1️⃣ 클러스터 마스터
2️⃣ 검색 헤드
3️⃣ 인덱서(피어 노드)
업그레이드 방식
- Tier-by-tier: 계층별 일괄 업그레이드
- Site-by-site: 사이트 단위 업그레이드 (버전 혼용 불가)
- Rolling Upgrade (7.1.0+): 피어별 점진적 업그레이드
👉 실제 운영에서는 서비스 중단을 최소화하기 위해 롤링 업그레이드를 많이 활용합니다.
7. 멀티 사이트 클러스터
멀티 사이트 구성을 하면:
- 데이터 센터 단위 장애에도 복구 가능
- 검색 친화성(Search Affinity) → 로컬 데이터만 검색, 네트워크 트래픽 절감
예: 서울(Primary) + 부산(Secondary) → 두 지역에 데이터 분산 저장
'Splunk' 카테고리의 다른 글
| [Splunk] Cluster Master & Buckets 핵심 정리 (0) | 2025.08.27 |
|---|---|
| [ Splunk ] Indexing Internals (1) | 2025.08.25 |
| [ Splunk ] Event Processing (2) | 2025.08.24 |
| [ Splunk ] 버킷 매니페스트(manifest) (0) | 2025.08.21 |
| [Splunk] LDAP 연동 이해하기 (0) | 2025.08.21 |