스토리지 백엔드와 고가용성(HA)

스토리지 백엔드와 고가용성(HA)

9️⃣ 스토리지 백엔드와 고가용성(HA)

Vault는 상태 기반 시스템이기 때문에 내부 상태(시크릿, 구성, 토큰 등)를 안전하게 저장하고, 고가용성(High Availability)을 통해 장애에 대응할 수 있는 구성이 필수적입니다. 이를 위해 다양한 스토리지 백엔드를 지원하며, 리더 선출과 복제를 기반으로 안정성을 보장합니다.


1. 지원 스토리지 종류 (Raft, Consul, S3 등)

Vault는 다양한 백엔드를 통해 데이터를 저장할 수 있으며, 각 백엔드는 사용 목적과 환경에 따라 선택됩니다.

스토리지 설명 고가용성(HA) 지원
Raft Vault 자체 내장 분산 DB, 설정 간편 ✅ 지원
Consul 서비스 디스커버리 및 KV 저장소 ✅ 지원
S3 AWS S3를 파일 저장소로 사용 ❌ 미지원 (스토리지만, HA는 따로 구성 필요)
DynamoDB AWS의 NoSQL 기반 백엔드 ✅ 지원
MySQL/PostgreSQL RDB 기반 스토리지 ❌ 일부만 지원
Google Cloud Storage, Azure Blob 등 퍼블릭 클라우드 환경에서 유용 ❌ 제한적

📌 실무 팁

  • Raft는 가장 쉬운 HA 구성 수단이며, 온프레미스에서도 적합
  • Consul은 HashiCorp 생태계 사용자에게 권장
  • S3는 백업/단일 노드용으로 활용

2. Raft 스토리지 클러스터 구성 실습

Vault 1.4 이후부터 Raft 내장 스토리지가 고도화되어 단일 바이너리로 클러스터링이 가능합니다.

🧪 Vault 구성 예시 (vault.hcl)

storage "raft" {
  path    = "/opt/vault/data"
  node_id = "vault-node-1"
}

listener "tcp" {
  address     = "0.0.0.0:8200"
  tls_disable = 1
}

api_addr = "http://vault-node-1:8200"
cluster_addr = "http://vault-node-1:8201"

🌐 클러스터 노드 추가

vault operator raft join http://vault-node-2:8200

🖼️ 아키텍처 도식

Vault Raft 아키텍처

  • 각 Vault 노드는 Raft consensus를 통해 데이터를 공유하고 리더를 선출

3. Consul 연동 및 복제 클러스터 구성

Vault는 Consul을 스토리지서비스 디스커버리 용도로 함께 사용할 수 있습니다.

🧪 Vault 설정 예시 (vault.hcl)

storage "consul" {
  address = "127.0.0.1:8500"
  path    = "vault/"
}

🌍 복제(Replication) 클러스터 구성

Vault Enterprise에서는 Performance ReplicationDisaster Recovery Replication 기능이 존재합니다.

  • Primary Vault → Secondary Vault에 데이터 복제
  • 글로벌 환경에서 여러 리전에 걸쳐 시크릿 동기화 가능

🔁 구성도

[ Vault-Primary (Leader) ]
          |
          v
[ Vault-Secondary (Follower) ] <-- Read-only 혹은 Read/Write 권한 설정 가능

4. Leader election과 HA 상태 점검

Vault는 클러스터 구성 시, 반드시 리더 노드가 존재하며 이 노드를 통해 쓰기 작업이 수행됩니다.

🔄 리더 선출 방식

  • Raft: 내부적으로 리더를 선출
  • Consul: 분산 락 기반 리더 선출

🧪 리더 확인 명령어

vault status

📋 예시 출력

HA Enabled: true
HA Cluster: https://vault-1:8201
Leader:     https://vault-1:8201

💡 Leader 항목이 비어있다면 Unseal이 안되었거나 네트워크 문제가 있는 것


✅ 요약

항목 설명
Raft Vault 내장 고가용성 스토리지, 구성 간단
Consul 분산 스토리지 + 서비스 디스커버리 기능
S3/DynamoDB 클라우드 환경에서 유용
리더 선출 리더만 쓰기 가능, 나머지는 팔로워
HA 확인 vault status 로 확인 가능

🔐 운영 환경 권장 구성

  • 🔁 3~5개 Raft 노드 구성
  • 🔍 각 노드는 독립 호스트에 배포
  • ☁️ 클라우드라면 KMS + S3 백업 연계도 고려

RSS Feed
마지막 수정일자