notes
서버 대장 구조 — LB 인바운드 · NAT 아웃바운드
서버 대장 구조에서 LB 인바운드·NAT 아웃바운드 트래픽 흐름 정리.
1. 이 그림 전체를 뭐라고 부르나
원본 스케치의 형식은 L7 로드밸런싱 + Private 서버 2대 + NAT 아웃바운드 다. 이름을 붙이면 아래와 같다.
AWS - VPC 의 3-Tier 그림에서 ALB + Private EC2 + NAT Gateway 족만 따 낸 편이다. CloudFront·S3·Aurora는 여기 없다.
2. 원본 스케치
사장님이 본 토폴로지. 위 아래가 반대라 인바운드 / 아웃바운드다.
3. 상세 다이어그램 (SVG)
원본과 같은 토폴로지에 Public / Private 서브넷, SG, 리스너, 헬스체크, SNAT를 주석으로 보강한 버전.
- 파란 = INBOUND (
80/443) - 초록 = OUTBOUND (NAT)
- 보라 점선 = VPC 경계
흐름 (메르마이드)
flowchart TB
subgraph IN["INBOUND"]
INET_IN["INTERNET<br/>클라이언트 · DNS A → LB"]
LB["LB<br/>Public IP :80 / :443"]
end
subgraph VPC["VPC · Private"]
S1["Server1<br/>Private IP · no public IP"]
S2["Server2<br/>Private IP · no public IP"]
end
subgraph OUT["OUTBOUND"]
NAT["NAT Gateway<br/>Public IP · SNAT"]
INET_OUT["INTERNET<br/>Outbound only"]
end
INET_IN -->|"TCP 80 / 443"| LB
LB -->|"forward health-ok"| S1
LB -->|"forward health-ok"| S2
S1 -->|"yum/apt · API · webhook"| NAT
S2 -->|"yum/apt · API · webhook"| NAT
NAT -->|"conntrack return"| INET_OUT
4. 트래픽 경로 두 개
인바운드 (파란)
:80 이면 :443 리다이렉트 (권장):443 → LB가 TLS 종료 (권장: SSL terminate):3000 (포트는 운영값. 원본에는 앱 포트 미표시)서버 Public IP로 80/443을 열면 이 그림을 깨는 것.
아웃바운드 (초록)
서버에 IGW 기본 경로를 달면 Private가 부서진다.
5. 구성 요소
5-1. LB (Public IP, :80 / :443)
왜 LB만 열나
- 서버 IP를 감춤. 증설·교체를 LB에서 동일하게 관리
- 1대 중지 때 다른 1대로 자동 이전
- WAF / rate limit / HTTP 헤더 정책을 앞단에만 걸기
5-2. VPC
- CIDR 예:
10.0.0.0/16(원본에 없음. 주석용) - Public subnet: LB, NAT, IGW 경로
- Private subnet: Server1, Server2. IGW로의 디폴트 라우트 없음
- 인바운드의 유일 입구 = LB. 서버 SG / NACL에서 인터넷
0.0.0.0/0직접 allow 금지
5-3. Server1 · Server2 (Private IP)
두 대가 동일 역할. Active-Passive가 아니라 Active-Active. 한쪽이 죽어도 LB 헬스가 다른 한쪽으로 붙인다.
5-4. NAT Gateway (Public IP)
6. 서브넷 · 라우트 · SG (실무 매핑)
라우트 테이블
Security Group
NACL은 서브넷 단위 보조. 기본 allow + 에페메럴 포트 반환(1024-65535) 열어 두면 된다. 실제 허용목록은 SG가 주.
7. 이 그림을 깨는 실수
8. 점검 체크리스트
- DNS A / Alias가 LB를 가리킨다 (서버 IP 아님)
- 인터넷에서 서버 Private IP
:80/:443timeout - 인터넷에서 LB
:443200 (헬스 경로 포함) - Server1 중지 테스트 시 트래픽이 Server2로만 간다
- 서버에서
curl ifconfig.me결과 = NAT Public IP (서버 IP 아님) - 서버 SG inbound source = LB SG
- Private 라우트 기본 = NAT Gateway
9. SVG에 넣은 주석 (원본에 없던 것)
원본은 노드 이름·Public/Private·포트만 있다. 아래는 운영 시 채우는 값.
10. 이름 빠르게
한 문장: 인터넷은 LB만 보고, 서버는 NAT만 보고, 서로 직접 만나지 않는다.