[Splunk] 인덱서 클러스터(Indexer Clustering)
본문 바로가기

Splunk

[Splunk] 인덱서 클러스터(Indexer Clustering)

728x90
반응형

1. 인덱서 클러스터란?

인덱서 클러스터: 여러 대의 인덱서(indexer)를 그룹으로 묶어 데이터 복제와 장애 대응을 가능하게 하는 구조

주요 특징:

  • 데이터 중복 저장(Replication) → 데이터 손실 방지
  • 자동 장애 조치(Failover) → 인덱서 다운 시에도 검색 가능
  • 멀티 사이트 지원 → 데이터 센터 전체 장애에도 대비 가능

👉 쉽게 말해, “데이터 안전망”을 제공하는 기능


2. 인덱서 클러스터의 주요 개념

① Replication Factor (RF)

  • 클러스터 내에서 데이터 복사본을 몇 개 유지할지 결정
  • 예: RF=3 → 모든 데이터는 3개의 인덱서에 저장

② Search Factor (SF)

  • 검색 가능한 데이터 복제본의 개수
  • SF가 높을수록 장애 복구 속도가 빨라지지만, 더 많은 저장소가 필요

💡 운영 팁:
단일 사이트 환경에서는 보통 RF=3, SF=2 가 많이 쓰입니다.
사실 RF=2, SF=2 임.. 비용 때문에


3. 클러스터 구성 요소

인덱서 클러스터는 크게 세 가지로 이루어집니다.

  1. Cluster Master (CM)
    • 클러스터 전체 관리
    • 피어 노드 상태 모니터링 & 설정 배포
    • 검색 헤드의 단일 접점
  2. Peer Nodes (인덱서 피어)
    • 데이터 인덱싱 및 복제 수행
    • 최소 RF 이상의 노드 필요
  3. Search Head (SH)
    • 클러스터 전체를 대상으로 검색 실행

4. 인덱서 클러스터 아키텍처

일반적인 동작 흐름:

  1. 포워더(Forwarder) → 데이터 전송 (로드밸런싱 + ACK 모드)
  2. 인덱서(Peer) → 데이터 저장 + 다른 인덱서로 복제
  3. 클러스터 마스터 → 복제·검색 조율
  4. 검색 헤드 → 클러스터 전체 데이터 검색

📌 포워더는 인덱서 ACK 모드를 켜두는 것이 중요합니다. (데이터 손실 방지)


5. 배포 단계

  1. 요구사항 정의
    • RF, SF 값 결정
    • 단일 사이트 vs 멀티 사이트 선택
  2. Splunk 인스턴스 설치
    • 인덱서: 최소 RF 수 이상
    • 클러스터 마스터: 1대
    • 검색 헤드: 최소 1대
  3. 클러스터링 활성화
    • CM, Peer, SH 각각의 server.conf 설정
  4. 피어 노드 설정
    • 동일한 인덱스 세트 사용 (master-apps → slave-apps 배포)
  5. 클러스터 마스터 데이터 포워딩
    • 장애 대비를 위해 CM 자체 로그도 인덱서로 전달
더보기

인덱서 클러스터(Indexer Clustering) 설정 가이드 🚀

Splunk 환경에서 데이터 무결성, 가용성, 재해 복구를 확보하려면 인덱서 클러스터(Indexer Clustering)는 필수입니다.
이 글에서는 단일 사이트 클러스터 설정 절차부터, 멀티 사이트 클러스터 설정 예시까지 단계별로 정리합니다.


📌 0. 사전 준비

  • 모든 노드의 Splunk 버전 동일
  • 방화벽/보안그룹 포트 허용
    • 8089 (관리 포트)
    • 9997 (데이터 수집)
    • 9887 (복제)
  • NTP 기반 시간 동기화
  • 모든 노드 동일한 클러스터 비밀키(pass4SymmKey)

⚙️ 1. 클러스터 마스터(CM) 설정

 
# 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) → 두 지역에 데이터 분산 저장

 

728x90
반응형

'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