Azure Load Balancer는 TCP·UDP 흐름을 백엔드 VM에 나눠 주는 L4 부하 분산기입니다. 패킷을 그대로 통과시키는 방식이라 지연이 적고, 상태 프로브로 정상 VM에만 트래픽을 보냅니다. Basic SKU는 2025년 9월 30일에 종료되어 지금은 Standard SKU를 쓰며, Standard는 NSG로 허용하지 않으면 인바운드가 막혀 있는 것이 기본입니다.
1. Azure Load Balancer란
Azure Load Balancer는 OSI 4계층(TCP, UDP)에서 동작하는 부하 분산 서비스입니다. 클라이언트는 Load Balancer의 프런트엔드 IP 하나로 접속하고, Load Balancer는 흐름(flow) 단위로 백엔드 풀의 VM이나 VMSS 인스턴스 중 하나를 골라 전달합니다. 온프레미스에서 쓰던 L4 스위치나 로드밸런서의 VIP와 같은 역할입니다.
HTTP 헤더나 URL을 보지 않고 패킷을 그대로 넘기는 pass-through 방식이라 TLS 종료, 경로 기반 라우팅, WAF 같은 L7 기능은 없습니다. 이런 기능이 필요하면 Application Gateway를 앞에 둡니다.
| 종류 | 프런트엔드 | 주요 용도 |
| Public Load Balancer | 공인 IP | 인터넷에서 들어오는 트래픽 분산 백엔드 VM의 아웃바운드 SNAT |
| Internal Load Balancer | VNet 사설 IP | VNet 내부, 온프레미스에서 들어오는 트래픽 분산 NVA 이중화(HA 포트) |
2. 구성 요소

프런트엔드 IP로 들어온 TCP 80 트래픽을 규칙과 상태 프로브에 따라 정상 VM에만 나눠 주는 구성
| 구성 요소 | 역할 |
| 프런트엔드 IP 구성 | 클라이언트가 접속하는 주소입니다. Public은 공인 IP, Internal은 서브넷의 사설 IP를 씁니다. |
| 백엔드 풀 | 트래픽을 받을 VM, VMSS 인스턴스의 NIC 또는 IP 주소 묶음입니다. |
| 부하 분산 규칙 | 프런트엔드 IP:포트를 백엔드 풀:포트로 연결합니다. 분산 방식과 유휴 시간 제한도 여기서 정합니다. |
| 상태 프로브 | 백엔드 인스턴스의 정상 여부를 확인하고, 실패한 인스턴스는 새 흐름 대상에서 뺍니다. |
| 인바운드 NAT 규칙 | 프런트엔드의 특정 포트를 특정 VM 하나로 보냅니다. 예: 50001 → VM1의 22번 포트 |
| 아웃바운드 규칙 | 백엔드 VM이 인터넷으로 나갈 때 쓸 공인 IP와 SNAT 포트 수를 정합니다. |
3. 분산 방식과 상태 프로브
3.1 분산 방식
기본값은 출발지 IP, 출발지 포트, 목적지 IP, 목적지 포트, 프로토콜 5개 값의 해시로 대상을 고르는 방식입니다. 같은 TCP 연결 안에서는 같은 VM으로 가지만, 클라이언트가 새 연결을 열어 출발지 포트가 바뀌면 다른 VM으로 갈 수 있습니다. 같은 클라이언트를 계속 같은 VM으로 보내야 하면 세션 지속성을 설정합니다.
| 세션 지속성 | 해시 기준 | CLI 값 |
| 없음(기본) | 5-tuple | Default |
| 클라이언트 IP | 출발지 IP, 목적지 IP | SourceIP |
| 클라이언트 IP 및 프로토콜 | 출발지 IP, 목적지 IP, 프로토콜 | SourceIPProtocol |
방화벽이나 프록시 뒤에서 들어와 출발지 IP가 몇 개로 모이면 클라이언트 IP 방식은 한쪽 VM으로 쏠릴 수 있습니다. 백엔드 풀에 VM을 추가하거나 빼면 해시 분포가 다시 계산된다는 점도 기억해 둡니다.
3.2 상태 프로브
Standard SKU는 TCP, HTTP, HTTPS 프로브를 지원합니다. HTTP·HTTPS 프로브는 200 응답만 정상으로 보고, 403이나 500 같은 다른 코드는 실패로 처리합니다. 프로브 간격은 포털 기본 5초, CLI·ARM 기본 15초(최소 5초)이고, 프로브 임계값만큼 연속으로 성공하거나 실패해야 상태가 바뀝니다.
가장 흔한 장애 원인은 프로브 출발지 차단입니다. 상태 프로브는 모두 168.63.129.16에서 오므로 NSG와 VM 안의 방화벽에서 이 주소를 허용해야 합니다. NSG의 기본 규칙 AllowAzureLoadBalancerInBound가 이 트래픽을 허용하므로, 사용자 정의 Deny 규칙을 더 높은 우선순위로 넣을 때 막히지 않는지 확인합니다.
4. Internal Load Balancer와 HA 포트

Spoke의 UDR이 모든 트래픽을 Internal Load Balancer로 보내고, HA 포트 규칙이 NVA 두 대에 나눠 주는 구성
HA 포트는 프런트엔드·백엔드 포트를 0, 프로토콜을 All로 설정해 모든 포트의 TCP·UDP 흐름을 한 규칙으로 분산하는 기능입니다. Internal Standard Load Balancer에서만 쓸 수 있습니다. 대표적인 용도는 방화벽 같은 NVA(네트워크 가상 어플라이언스) 이중화로, Spoke의 UDR에서 다음 홉을 Internal Load Balancer의 프런트엔드 IP로 지정하면 NVA 두 대 이상을 액티브-액티브로 운영할 수 있습니다.
NVA가 상태를 기억하는 방화벽이라면 나가는 트래픽과 돌아오는 트래픽이 같은 NVA를 지나야 합니다. 같은 Load Balancer의 해시를 양방향에 쓰거나, NVA에서 SNAT를 하는 식으로 대칭 경로를 맞춰야 연결이 끊기지 않습니다.
5. 아웃바운드 연결
Public Load Balancer 뒤의 VM이 인터넷으로 나갈 때는 프런트엔드 공인 IP로 SNAT됩니다. 공인 IP 하나는 SNAT 포트 64,000개를 제공하고, 이 포트를 백엔드 VM들이 나눠 씁니다. VM 수가 많거나 한 VM이 외부 API를 많이 호출하면 포트가 부족해 연결이 실패할 수 있습니다.
| 방식 | 특징 |
| 아웃바운드 규칙 | 공인 IP와 VM당 SNAT 포트 수를 직접 지정합니다. 유휴 시간 제한 4~120분, TCP Reset 설정이 가능합니다. |
| NAT Gateway | 서브넷 단위로 SNAT를 맡습니다. Microsoft는 포트 고갈을 줄이기 위해 이 방식을 권장합니다. |
| 기본 아웃바운드 액세스 | 2026년 3월 31일 이후 API 버전으로 만든 새 VNet의 서브넷은 기본값이 Private이라 쓸 수 없습니다. 명시적인 아웃바운드 방법이 필요합니다. |
6. Azure CLI로 만들어 보기
6.1 Public Load Balancer와 프로브, 규칙
RG=rg-web
az network public-ip create --resource-group $RG --name pip-lb-web \
--sku Standard --zone 1 2 3
az network lb create --resource-group $RG --name lb-web --sku Standard \
--public-ip-address pip-lb-web \
--frontend-ip-name fe-web --backend-pool-name be-web
# HTTP 200을 돌려주는 /health 경로로 확인
az network lb probe create --resource-group $RG --lb-name lb-web \
--name hp-http --protocol Http --port 80 --path /health
# 아웃바운드는 아래 아웃바운드 규칙으로 따로 관리
az network lb rule create --resource-group $RG --lb-name lb-web \
--name rule-http --protocol Tcp --frontend-port 80 --backend-port 80 \
--frontend-ip-name fe-web --backend-pool-name be-web --probe-name hp-http \
--disable-outbound-snat true --idle-timeout 15 --enable-tcp-reset true
6.2 백엔드 풀 등록과 아웃바운드 규칙
# VM NIC를 백엔드 풀에 추가
az network nic ip-config address-pool add --resource-group $RG \
--nic-name nic-web1 --ip-config-name ipconfig1 \
--lb-name lb-web --address-pool be-web
az network lb outbound-rule create --resource-group $RG --lb-name lb-web \
--name ob-web --frontend-ip-configs fe-web --address-pool be-web \
--protocol All --outbound-ports 10000 --idle-timeout 15
6.3 Internal Load Balancer의 HA 포트 규칙
# 포트 0, 프로토콜 All = 모든 포트의 TCP·UDP 흐름을 분산
az network lb rule create --resource-group rg-hub --lb-name ilb-nva \
--name rule-haports --protocol All --frontend-port 0 --backend-port 0 \
--frontend-ip-name fe-nva --backend-pool-name be-nva --probe-name hp-nva
포털의 Load Balancer 인사이트에서 백엔드별 프로브 상태와 SNAT 포트 사용량을 볼 수 있습니다. 프로브 상태가 0%로 나오면 NSG와 VM 방화벽에서 168.63.129.16이 막혀 있지 않은지부터 확인합니다.
7. 운영 시 주의점
| 항목 | 확인할 것 |
| Basic SKU | 2025년 9월 30일에 종료되었습니다. 남아 있다면 Standard로 전환합니다. |
| 인바운드 차단 기본값 | Standard는 NSG에서 허용하지 않은 인바운드를 막습니다. 백엔드 서브넷이나 NIC에 서비스 포트를 여는 NSG가 있어야 합니다. |
| 프로브 출발지 | 168.63.129.16을 NSG와 OS 방화벽에서 허용합니다. |
| SKU 혼용 | Standard Load Balancer에는 Standard 공인 IP만 붙일 수 있습니다. |
| SNAT 포트 고갈 | 외부 호출이 많은 서비스는 NAT Gateway를 붙이거나 아웃바운드 규칙에 공인 IP를 추가합니다. |
| 유휴 연결 | 기본 유휴 시간 제한은 4분입니다. 오래 유지되는 연결은 Keep-alive나 TCP Reset 설정을 함께 검토합니다. |
8. 정리
- Azure Load Balancer는 5-tuple 해시로 흐름을 나누는 L4 부하 분산기이고, L7 기능이 필요하면 Application Gateway를 씁니다.
- 상태 프로브는 168.63.129.16에서 오므로 NSG와 OS 방화벽에서 허용해야 하고, HTTP 프로브는 200 응답만 정상으로 봅니다.
- Internal Load Balancer의 HA 포트는 NVA 이중화에, 아웃바운드는 아웃바운드 규칙이나 NAT Gateway로 명시적으로 설계합니다.
참고
'Cloud > Azure' 카테고리의 다른 글
| [Azure] Azure Front Door 정리 (0) | 2026.09.25 |
|---|---|
| [Azure] Application Gateway 정리 (0) | 2026.09.25 |
| [Azure] Hub-Spoke와 Virtual WAN 비교 (0) | 2026.09.25 |
| [Azure] Azure Landing Zone 기본 구조 정리 (0) | 2026.09.24 |
| [Azure] Azure Firewall, NSG, WAF 역할 정리 (0) | 2026.09.24 |