Consul 입문 — 아키텍처·Raft·Gossip

2026-05-03확률과 통계 마스터 노트

HashiCorp Consul 마스터 노트 시리즈 1편. 서비스 디스커버리·헬스 체크·KV·서비스 메시 4기능, 서버 모드 vs 클라이언트 모드 vs 개발 모드, Raft 합의 알고리즘과 쿼럼 계산, LAN/WAN Gossip 풀의 결정적 차이, 핵심 포트 7개까지 — Consul Associate 시험 Objective 1의 토대를 한 흐름으로.

이 글은 HashiCorp Consul 마스터 노트 시리즈의 첫 번째 편입니다. HashiCorp Certified Consul Associate는 57문항·60분의 자격증 시험이에요. 이 시리즈 7편은 시험의 9가지 Objective를 모두 다룹니다.

Consul은 마이크로서비스가 서로를 찾고·인증하고·암호화 통신하는 서비스 네트워킹 플랫폼이에요. Kubernetes·EC2·온프레미스 어디에서든 똑같이 동작해요. 1편의 목표 — 서버/클라이언트 모드·Raft·Gossip 세 단어를 손에 잡히게 만들기.

📚 학습 노트

이 시리즈는 HashiCorp Consul 공식 문서, Consul Associate 시험 가이드, 여러 인프라 학습 자료를 참고해 한국어 학습 노트로 풀어쓴 자료입니다.

읽으면서 로컬에 consul agent -dev로 단일 노드를 띄워 보고 명령어를 직접 쳐 보면 본문이 머리에 훨씬 잘 박혀요. 30분이면 첫 서비스 등록·DNS 조회까지 끝낼 수 있습니다.

처음 Consul이 어렵게 느껴지는 이유

이유는 두 가지예요.

첫째, 에이전트·서버·클라이언트·노드 같은 단어가 한꺼번에 들어옵니다. Consul "에이전트"라는 한 바이너리가 두 모드(서버/클라이언트)로 돌고, "노드"는 그 에이전트가 도는 서버를 의미. 처음엔 어떤 게 어떤 건지 헷갈려요.

둘째, Raft와 Gossip 두 프로토콜이 동시에 등장합니다. 둘 다 분산 합의·전파에 쓰이는 도구지만 목적·참여자가 달라요.

해결법은 한 가지예요. 회사 비유로 잡으세요. 서버 = 본사 임원진 (Raft로 의사결정), 클라이언트 = 지점 직원 (Gossip으로 인사 정보 공유). 지점 직원은 자기 결재권 없고, 본사에 결정 위임. 이 비유 하나로 모드 차이가 정리됩니다.

Consul의 4가지 핵심 기능

기능 설명
Service Discovery 서비스 등록 → 다른 서비스가 이름으로 찾음
Health Checking 비정상 인스턴스 트래픽에서 자동 제외
Key/Value Store 동적 설정·기능 플래그·조율 데이터
Service Mesh (Connect) mTLS 기반 서비스 간 암호화·접근 제어

이 4가지가 시험 9 Objective의 토대예요.

에이전트 모드 3종

Consul 바이너리는 하나지만 3가지 모드로 실행돼요.

서버 모드 (Server)

server = true
  • 역할: 클러스터의 두뇌. Raft 합의 참여, 모든 상태 저장
  • 데이터: KV·서비스 카탈로그·ACL을 Raft 로그로 저장
  • Gossip 참여: LAN(모든 DC 멤버) + WAN(서버 전용)
  • 권장 수량: 3, 5, 7 노드 (홀수), 5가 실무 표준
  • 주의: 9개 이상은 합의 성능 저하

클라이언트 모드 (Client)

server = false   # 기본값
  • 역할: 데이터 저장 X, 에이전트 역할만 — 서비스 등록·헬스 체크·DNS/API
  • 무상태(Stateless): 서버에 위임
  • Gossip: LAN만 참여
  • 스케일: 수천 노드까지
  • 배포 위치: 애플리케이션 도는 모든 노드에 설치

개발 모드 (Dev)

consul agent -dev
  • 단일 노드 즉시 시작
  • 디스크 저장 X, 메모리만
  • Connect 자동 활성
  • 프로덕션 절대 X — 재시작 시 데이터 손실

모드 비교

특성 서버 클라이언트 개발
Raft 참여 X ◯ (단독)
데이터 저장 X 메모리만
LAN Gossip
WAN Gossip X X
Connect 기본 X X
프로덕션 X

여기서 정말 중요한 시험 함정 — 서버는 LAN+WAN 둘 다, 클라이언트는 LAN만. WAN Gossip은 서버 전용. 이 한 줄이 시험에 자주.

Raft 합의 알고리즘

분산 시스템에서 일관성 보장하는 합의 알고리즘. Consul 서버들이 Raft로 상태 동기화.

노드 역할

역할 설명
Leader 유일한 리더. 모든 쓰기 처리 + 팔로워에 복제
Follower 리더의 복제본. 읽기 처리 가능. 리더 장애 시 선거 참여
Candidate 리더 선거 중간 상태. 투표 요청

쿼럼 (Quorum) 계산

공식: quorum = floor(N/2) + 1 = (N+1)/2

쿼럼 = 클러스터가 결정 내리려면 필요한 최소 서버 수.

클러스터 N 쿼럼 허용 장애
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2
6 4 2
7 4 3

여기서 정말 중요한 시험 함정 — 5노드가 실무 표준. 2개 장애 허용 + 합리적 크기. 짝수는 권장 X — 추가 장애 허용 없이 쿼럼만 높아짐.

스플릿 브레인 방지

쿼럼이 있어야 네트워크 파티션 시 두 파티션이 동시 리더 선출하는 스플릿 브레인 방지.

3 서버 클러스터: A, B, C
네트워크 분할: [A] | [B, C]
A 단독 → 쿼럼(2) 미달 → 리더 선출 X
B+C → 쿼럼 충족 → 새 리더 선출 → 정상 동작

Gossip 프로토콜 — Serf

HashiCorp의 Serf 라이브러리 기반. 전염병처럼 정보가 퍼져 Gossip이라 부름.

특징

  • 목적: 멤버십 관리(가입/탈퇴/장애 감지), 이벤트 전파
  • 분산화 + 결국 일관성 (Eventual Consistency)
  • UDP 기반 (효율적)

두 가지 Gossip 풀

LAN Gossip (포트 8301)

대상: 단일 DC 모든 서버 + 클라이언트
목적:
  - 노드 장애 감지
  - 새 노드 발견
  - 이벤트 전파

WAN Gossip (포트 8302)

대상: 여러 DC의 서버만 (클라이언트 X)
목적:
  - 다중 DC 멤버십 공유
  - 교차 DC 서비스 라우팅

여기서 정말 중요한 시험 함정 — WAN Gossip은 서버만 참여. 클라이언트는 LAN만.

Gossip vs Raft

특성 Gossip (Serf) Raft
목적 멤버십·이벤트 전파 상태 데이터 합의
참여자 모든 에이전트 서버만
일관성 결국 일관성 강한 일관성
포트 8301·8302 8300

핵심 포트 7개 — 시험 단골

포트 프로토콜 용도
8500 TCP HTTP API / Web UI
8501 TCP HTTPS API (TLS 활성 시)
8301 TCP/UDP LAN Gossip (Serf)
8302 TCP/UDP WAN Gossip (Serf)
8300 TCP RPC (서버 간 통신)
8600 TCP/UDP DNS 인터페이스
21000-21255 TCP Envoy 사이드카 프록시

여기서 시험 함정이 하나 있어요. 8301 vs 8302 vs 8300 헷갈리면 시험 즉답 어려움. 외워두기:

  • 8300 = RPC (3 = Raft·서버 간)
  • 8301 = LAN
  • 8302 = WAN
  • 8500 = HTTP (5 = 단순)
  • 8600 = DNS (6 = dig)

데이터센터 (Datacenter)

Consul의 논리적 운영 단위. 하나의 DC = 하나의 Consul 클러스터.

datacenter = "dc1"

여러 DC 운영 — Federation 으로 연결.

DC1 (서울) ←─ WAN Gossip ─→ DC2 (도쿄)
서버 3~7      서버만           서버 3~7
+ 클라이언트                   + 클라이언트

WAN Gossip으로 서로 발견. 한 DC 안 클라이언트가 다른 DC 서비스 호출 가능.

핵심 명령어 (Cheat Sheet)

# 에이전트 시작
consul agent -config-file=/etc/consul/consul.hcl
consul agent -config-dir=/etc/consul.d
consul agent -dev   # 개발 모드

# 클러스터 관리
consul members      # 클러스터 멤버 목록
consul join <IP>    # 다른 노드와 합류
consul leave        # 클러스터에서 깔끔히 떠남

# 정보 조회
consul info         # 에이전트 정보
consul operator raft list-peers  # Raft 피어 상태

시험 직전 한 번 더 — 자주 헷갈리는 함정 모음

여기까지가 1편의 핵심입니다. 시험 직전 또는 실무에서 헷갈릴 때 다시 펼쳐 볼 수 있게 압축 노트로 마무리할게요.

  • Consul 4기능 — Service Discovery / Health Check / KV / Service Mesh (Connect)
  • 에이전트 모드 3종 — Server / Client / Dev
  • 서버 = Raft 참여 + 데이터 저장 + LAN+WAN Gossip
  • 클라이언트 = Stateless + LAN Gossip만
  • Dev 모드 프로덕션 X — 메모리만, Connect 자동 활성
  • 서버 권장 — 3, 5, 7 (홀수), 5가 표준
  • 짝수 노드 X — 추가 장애 허용 없이 쿼럼만 높아짐
  • 9개+ = 합의 성능 저하
  • Raft = 강한 일관성, 서버만, 포트 8300
  • 노드 역할 — Leader / Follower / Candidate
  • 쿼럼 = (N+1)/2 = floor(N/2) + 1
  • 5 서버 = 쿼럼 3, 2개 장애 허용
  • 스플릿 브레인 방지 = 쿼럼 미달 파티션은 리더 선출 X
  • Gossip (Serf) = 멤버십·이벤트, UDP, 결국 일관성
  • LAN (8301) = 서버 + 클라이언트
  • WAN (8302) = 서버만
  • 핵심 포트 — 8500 HTTP / 8501 HTTPS / 8300 RPC / 8301 LAN / 8302 WAN / 8600 DNS / 21000-21255 Envoy
  • Datacenter = 논리적 단위, Federation으로 연결
  • consul members / consul join / consul leave

시리즈 다른 편

같은 시리즈의 다른 글들도 같은 톤으로 묶어 정리되어 있어요. 1편 토대가 잡히면 2편 배포부터 본격 운영입니다.

공식 문서: Consul DocumentationConsul Associate 시험 가이드에서 더 깊이.

다음 글(2편)에서는 단일 DC 배포 — 구성 파일·5 서버 부트스트랩·systemd 통합·UI 활성화까지 풀어 갑니다.

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

error: Content is protected !!