Skip to main content

ALB(Application Load Balancer)

HTTP/HTTPS 流量入口,根據 path 或 header 分流到不同後端。


架構

Internet


ALB(port 443,SSL termination 在這裡)
├── Listener Rule: /api/* → Target Group A(EKS Pod)
├── Listener Rule: /admin/* → Target Group B(EKS Pod)
└── Listener Rule: /* → Target Group C(Frontend)

三個核心概念

概念說明
ListenerALB 監聽哪個 port(80 / 443)及 protocol
Target Group一組後端(EC2 / Pod / IP),ALB 把流量打進去
Health CheckALB 定期打 target 確認還活著,不健康的自動排除

配合 K8s Ingress

在 EKS 上,aws-load-balancer-controller 會把 Ingress 物件自動轉換成 ALB 設定:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: my-api
port:
number: 8080

ALB vs NLB

ALB → Layer 7,看 HTTP header/path,適合 web 服務
NLB → Layer 4,看 TCP/UDP,適合低延遲、非 HTTP 協定

一句話總結

情境選擇
HTTP/HTTPS 服務對外ALB
需要 path-based routingALB
TCP/UDP 低延遲(gRPC、遊戲)NLB
K8s IngressALB + aws-load-balancer-controller