Azure Load Balancer와 Ingress
Azure Load Balancer와 Ingress
Load Balancer & Ingress
Azure Load Balancer
- Azure의 리소스 간 트래픽을 분산하여 높은 가용성과 분산 기능을 제공
- 대부분의 효과는 일반적인 Load Balancer와 동일
- 주로 두가지 유형으로 이루어진다.
- 공용 Load Balancer: 인터넷에서 들어오는 트래픽을 백엔드 풀의 리소스에 분산
- 내부 Load Balancer: 가상 네트워크(VNet) 내부에서 트래픽을 분산
비용
공용 Load Balancer
- 인바운드 트래픽: 인터넷에서 Azure Load Balancer로 들어오는 트래픽은 무료
- 아웃바운드 트래픽: Azure Load Balancer에서 인터넷으로 나가는 트래픽에는 비용이 발생
내부 Load Balancer
- 내부 트래픽: VNet 내에서 Load Balancer를 통해 이동하는 트래픽에도 비용이 발생
L4 LoadBalancer vs L7 LoadBalncer
L4 로드밸런서는 TCP와 UDP기반으로 트래픽을 분산시킨다.
- 주로 IP주소와 Port 로드밸런싱 -> 빠른 속도를 보장하지만 낮은 유연성
L7 로드밸런서는 HTTP 및 HTTPS 프로토콜 기반으로 서버의 트래픽을 분산
- 주로 URL, 헤더, 쿠키 로드밸런싱 -> 늦은 속도를 제공하지만 높은 유연성
| 항목 | L4 로드 밸런서 | L7 로드 밸런서 |
|---|---|---|
| 작동 계층 | 전송 계층(Layer 4) | 애플리케이션 계층(Layer 7) |
| 주요 프로토콜 | TCP, UDP | HTTP, HTTPS |
| 로드 밸런싱 기준 | IP 주소, 포트 | 요청 내용(URL, 헤더, 쿠키 등) |
| 처리 속도 | 상대적으로 빠름 | 상대적으로 느림 |
| 기능 및 유연성 | 상대적으로 제한적 | 다양한 기능 및 유연성 |
Azure 환경에서는? Azure에서는 일반적으로 Public Load Balancer(인터넷 -> Azure)와 Internel Load Balancer(Azure VNet -> Azure VNet)에서 L4 로드밸런싱을 사용한다.
반대로 Azure Application Gateway에서 L7 로드밸런싱을 사용하는데 URL 기반 라우팅과 쿠키기반 세션 지속성(Session Affinity), SSL 관리 기능에 사용된다.
Ingress
Ingress는 어떤 기능?
- 각각의 svc와 pod의 포트를 설정하지 않고 하나의 요청에 대해서 어느 svc로 갈지 라우팅 해주는 k8s 내부 리버스 프록시 서버 역할을 수행
- 쿠버네티스가 제공하는 L7 로드밸런싱 기능을 제공하는 컴포넌트
url 기반으로 어떤 Pod로 처리시킬지 rule 설정
Ingress Controller
- Ingress 까지는 쿠버네티스 안에 있는 API이지만, 어떤 방식으로 작동할지는 Ingress Controller가 결정
- Ingress의 리소스들을 규칙 적용 관리는 controller가 한다.
- ex) https는 443 포트로 설정
- Ingress의 리소스들을 규칙 적용 관리는 controller가 한다.
- Azure 환경에서는 관리형 Ingress 서비스인
aks-app-routing-operator를 사용한다.- 다만 관리형이기에 커스텀 ConfigMap 사용을 할 수 없음
전체적인 흐름 정리
Clitent 요청 -> AppGW(L7) -> Internl LB(L4) -> Ingress(AKS) -> svc -> pod
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
