Load Balancing
Load Balancing¶
Overview¶
This document covers the core concepts of Load Balancing. You'll learn the differences between L4/L7 load balancers, various traffic distribution algorithms, Sticky Sessions, and health check mechanisms.
Difficulty: âââ Estimated Study Time: 2-3 hours Prerequisites: 03_Network_Fundamentals_Review.md
Table of Contents¶
- What is Load Balancing?
- L4 vs L7 Load Balancer
- Distribution Algorithms
- Sticky Session
- Health Checks
- High Availability Configuration
- Practice Problems
- Next Steps
- References
1. What is Load Balancing?¶
1.1 Definition¶
Load balancing is a technique that distributes incoming network traffic across multiple servers to improve system availability and performance.
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Load Balancing Concept â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â Without load balancer: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Client 1 ââââââ â â
â â Client 2 ââââââŧââââââââââļ Server 1 (Overloaded!) â â
â â Client 3 âââââ⤠â â
â â ... â â â
â â Client N ââââââ â â
â â â â
â â Problem: Single server overload, service down on failure â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â With load balancer: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Client 1 ââââââ ââââââââââļ Server 1 â â
â â Client 2 ââââââŧââļ [LB] ââŧâââââââââļ Server 2 â â
â â Client 3 âââââ⤠ââââââââââļ Server 3 â â
â â ... â â â
â â Client N ââââââ â â
â â â â
â â Solution: Distributed load, high availability, horizontal â â
â â scaling possible â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
1.2 Load Balancer Roles¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Load Balancer Key Functions â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â 1. Traffic Distribution â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â âĸ Distribute requests evenly across servers â â
â â âĸ Can apply weights based on server capacity â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â 2. High Availability â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â âĸ Detect server failures and automatically switch traffic â â
â â âĸ Users don't notice failures â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â 3. Scalability â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â âĸ Easy to add/remove servers â â
â â âĸ Zero-downtime server replacement possible â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â 4. SSL Termination â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â âĸ Handle HTTPS at LB, backend uses HTTP â â
â â âĸ Reduce server load, centralize certificate management â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â 5. Session Management â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â âĸ Sticky Session to keep same server â â
â â âĸ Ensure session data consistency â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
2. L4 vs L7 Load Balancer¶
2.1 L4 Load Balancer (Transport Layer)¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â L4 Load Balancer â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â OSI Layer 4 (Transport) - Operates at TCP/UDP level â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Checks only packet header info: â â
â â âââââââââââââââââââââââââââââââââââââââââââââââââââ â â
â â â Source IP â Dest IP â Source â Dest â â â
â â â 203.0.113.50 â 10.0.0.100 â Port â Port â â â
â â â â â 54321 â 80 â â â
â â âââââââââââââââââââââââââââââââââââââââââââââââââââ â â
â â â â â
â â Routes using this info â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â How it works: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Client âââļ LB (10.0.0.100:80) â â
â â â â â
â â ââââââââââ´âââââââââ â â
â â â IP/Port based â â â
â â â routing decisionâ â â
â â ââââââââââŦâââââââââ â â
â â â â â
â â âââââââââââŧââââââââââ â â
â â âŧ âŧ âŧ â â
â â Server 1 Server 2 Server 3 â â
â â 10.0.1.1 10.0.1.2 10.0.1.3 â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Pros: â
â âĸ Fast processing (no packet content inspection) â
â âĸ Low resource usage â
â âĸ Protocol independent (TCP, UDP both work) â
â â
â Cons: â
â âĸ No application awareness â
â âĸ Cannot route based on URL â
â âĸ Cannot make content-based decisions â
â â
â Examples: AWS NLB, HAProxy (TCP mode), LVS â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
2.2 L7 Load Balancer (Application Layer)¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â L7 Load Balancer â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â OSI Layer 7 (Application) - Operates at HTTP/HTTPS level â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Analyzes HTTP request content: â â
â â âââââââââââââââââââââââââââââââââââââââââââââââââââ â â
â â â GET /api/users HTTP/1.1 â â â
â â â Host: api.example.com â â â
â â â Cookie: session=abc123 â â â
â â â Authorization: Bearer xxx â â â
â â â Content-Type: application/json â â â
â â âââââââââââââââââââââââââââââââââââââââââââââââââââ â â
â â â â â
â â Analyzes full content to route â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â URL-based routing: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â /api/users/* âââââââââââļ User Service â â
â â /api/orders/* âââââââââââļ Order Service â â
â â /api/products/*âââââââââââļ Product Service â â
â â /static/* âââââââââââļ CDN/Static Server â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Host-based routing: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â api.example.com âââââââļ API Servers â â
â â www.example.com âââââââļ Web Servers â â
â â admin.example.com âââââââļ Admin Servers â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Pros: â
â âĸ Smart routing based on content â
â âĸ SSL termination â
â âĸ Can modify requests/responses â
â âĸ A/B testing, canary deployment â
â â
â Cons: â
â âĸ Slower than L4 (needs packet analysis) â
â âĸ More resource usage â
â âĸ Limited to HTTP/HTTPS â
â â
â Examples: AWS ALB, Nginx, HAProxy (HTTP mode), Envoy â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
2.3 Comparison Summary¶
| Item | L4 Load Balancer | L7 Load Balancer |
|---|---|---|
| OSI Layer | 4 (Transport) | 7 (Application) |
| Analysis Target | IP, Port | HTTP headers, URL, cookies, etc. |
| Protocol | TCP, UDP | HTTP, HTTPS, WebSocket |
| Speed | Very Fast | Fast |
| Resources | Low | High |
| Features | Simple distribution | Smart routing, SSL, caching |
| Use Cases | Game servers, DNS, internal comms | Web services, APIs |
3. Distribution Algorithms¶
3.1 Round Robin¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Round Robin â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â "Distribute in sequential order" â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Request 1 âââļ Server A â â
â â Request 2 âââļ Server B â â
â â Request 3 âââļ Server C â â
â â Request 4 âââļ Server A (cycles back) â â
â â Request 5 âââļ Server B â â
â â Request 6 âââļ Server C â â
â â ... â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Pros: â
â âĸ Simple implementation â
â âĸ No state storage needed â
â âĸ Even distribution (for same-performance servers) â
â â
â Cons: â
â âĸ Doesn't consider server performance differences â
â âĸ Doesn't consider connection duration â
â â
â Suitable: Servers with same performance, similar request â
â processing times â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
3.2 Weighted Round Robin¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Weighted Round Robin â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â "Assign weights based on server performance" â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Server A: Weight 5 (high performance) â â
â â Server B: Weight 3 (medium performance) â â
â â Server C: Weight 2 (low performance) â â
â â â â
â â 10 requests distribution: â â
â â A A A A A B B B C C â â
â â â˛ââââââââââ˛ââââââ˛âⲠâ â
â â 5 3 2 â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Suitable: Different server performances, gradual new server â
â introduction (canary) â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
3.3 Least Connections¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Least Connections â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â "Distribute to server with fewest connections" â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Current state: â â
â â Server A: 5 connections â â
â â Server B: 3 connections âââ New request assigned â â
â â Server C: 7 connections â â
â â â â
â â After new request: â â
â â Server A: 5 connections â â
â â Server B: 4 connections â â
â â Server C: 7 connections â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Weighted Least Connections: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Assign to server with smallest (connections / weight) â â
â â â â
â â Server A: 5 conn / weight 5 = 1.0 â â
â â Server B: 3 conn / weight 2 = 1.5 â â
â â Server C: 4 conn / weight 3 = 1.33 â â
â â â â
â â â Assign to Server A (1.0 is smallest) â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Pros: â
â âĸ Dynamic load distribution â
â âĸ Effective for requests with varying processing times â
â â
â Suitable: Varying request processing times, long connections â
â (WebSocket) â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
3.4 IP Hash¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â IP Hash â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â "Hash client IP to always route to same server" â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â hash(Client IP) % server count = server index â â
â â â â
â â Client 203.0.113.50: â â
â â hash(203.0.113.50) = 12345 â â
â â 12345 % 3 = 0 âââļ Server A â â
â â â â
â â Client 198.51.100.25: â â
â â hash(198.51.100.25) = 67890 â â
â â 67890 % 3 = 1 âââļ Server B â â
â â â â
â â âģ Same IP always routes to same server! â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Pros: â
â âĸ Guarantees same server without Sticky Session â
â âĸ Cache efficiency (same user = same server cache) â
â â
â Cons: â
â âĸ Many users redistributed when adding/removing servers â
â âĸ Imbalance in NAT environments (same public IP) â
â â
â Alternative: Consistent Hashing (minimizes impact of server â
â changes) â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
3.5 Algorithm Comparison Summary¶
| Algorithm | Operation | Pros | Cons | Use Cases |
|---|---|---|---|---|
| Round Robin | Sequential | Simple, even | Ignores performance | Same servers |
| Weighted RR | Weight-based | Reflects performance | Static weights | Various servers |
| Least Conn | Minimum connections | Dynamic distribution | Needs state tracking | Long connections |
| IP Hash | IP hash | Consistency | Possible imbalance | Session persistence |
4. Sticky Session¶
4.1 What is Sticky Session?¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Sticky Session â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â "Always route same user's requests to same server" â
â â
â Problem (without Sticky Session): â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â User ââRequest 1âââļ Server A (login, create session) â â
â â User ââRequest 2âââļ Server B (no session? logged out!) â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Solution (Sticky Session): â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â User ââRequest 1âââļ Server A (create session) â â
â â User ââRequest 2âââļ Server A (same server!) â â
â â User ââRequest 3âââļ Server A (same server!) â â
â â â â
â â âââââââââââââââââââââââââââââââââââââââââââ â â
â â â Load Balancer â â â
â â â User A â Server A (Cookie/IP based) â â â
â â â User B â Server B â â â
â â â User C â Server A â â â
â â âââââââââââââââââââââââââââââââââââââââââââ â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
4.2 Sticky Session Implementation Methods¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Sticky Session Implementation Methods â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â 1. Cookie-based â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â First request: â â
â â Client âââââââââââļ LB âââââââââââļ Server A â â
â â âââââââââââ âââââââââââ â â
â â Set-Cookie: SERVERID=server-a â â
â â â â
â â Subsequent requests: â â
â â Client âââââââââââļ LB (check cookie) âââļ Server A â â
â â Cookie: SERVERID=server-a â â
â â â â
â â Pros: Most common, reliable â â
â â Cons: Doesn't work if cookies disabled â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â 2. Source IP-based â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Client IP 203.0.113.50 â always Server A â â
â â Client IP 198.51.100.25 â always Server B â â
â â â â
â â Pros: No cookies needed â â
â â Cons: Issues in NAT, proxy environments â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â 3. Application Cookie (Session ID) â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Use app-generated session ID (JSESSIONID, etc.) â â
â â Cookie: JSESSIONID=abc123 â hash(abc123) â Server A â â
â â â â
â â Pros: Matches app session â â
â â Cons: No cookie on first request â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
4.3 Sticky Session Problems¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Sticky Session Problems and Alternatives â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â Problems: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â 1. Load imbalance â â
â â "Heavy" users may cluster on specific servers â â
â â â â
â â 2. Session loss on failure â â
â â Server down â all users on that server lose sessions â â
â â â â
â â 3. Difficult Auto Scaling â â
â â Need user redistribution when adding/removing servers â â
â â â â
â â 4. Horizontal scaling limitations â â
â â Stateful architecture limitations â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Alternatives (Stateless Architecture): â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â 1. External session storage (Redis, Memcached) â â
â â All servers access same session data â â
â â â â
â â 2. JWT (JSON Web Token) â â
â â Include session info in token, no server storage â â
â â â â
â â 3. Database sessions â â
â â Store sessions in DB (slower but reliable) â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
5. Health Checks¶
5.1 What are Health Checks?¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Health Checks â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â "Periodically check server status to detect failures" â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Load Balancer â â
â â â â â
â â ââââââââââââŧâââââââââââ â â
â â â â â â â
â â âŧ âŧ âŧ â â
â â Server A Server B Server C â â
â â â â â (failed) â â
â â â â
â â Traffic distribution: A, B only (exclude C) â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Periodically: â
â 1. Send health check request â
â 2. Check response â
â 3. Accumulate failure count â
â 4. Exclude server when threshold exceeded â
â 5. Include again when recovered â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
5.2 Active vs Passive Health Checks¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Active vs Passive Health Checks â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â Active Health Check (Proactive) â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â LB periodically sends requests to server â â
â â â â
â â ââââââââ GET /health ââââââââ â â
â â â LB â ââââââââââââââââļâServerâ â â
â â â â âââââââââââââââââ â â â
â â ââââââââ 200 OK ââââââââ â â
â â â â
â â Configuration example: â â
â â âĸ Interval: 10 seconds â â
â â âĸ Timeout: 5 seconds â â
â â âĸ Failure threshold: 3 times â â
â â âĸ Recovery threshold: 2 times â â
â â â â
â â Pros: Detect failures without traffic â â
â â Cons: Additional load, network traffic â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Passive Health Check (Reactive) â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Monitor actual request responses â â
â â â â
â â Client âââļ LB âââļ Server â â
â â â â â
â â âââââââââ´ââââââââ â â
â â â 5xx error? â â â
â â â Timeout? â â â
â â â Connect fail? â â â
â â âââââââââââââââââ â â
â â â â â
â â Increment failure count â â
â â â â
â â Pros: No additional traffic, reflects real conditions â â
â â Cons: Real users experience errors â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Recommendation: Active + Passive combination â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
5.3 Health Check Endpoint Design¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Health Check Endpoint Design â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â 1. Simple Health Check â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â GET /health â â
â â â â
â â Response: 200 OK â â
â â { "status": "healthy" } â â
â â â â
â â Purpose: Check process alive â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â 2. Detailed Health Check â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â GET /health/details â â
â â â â
â â Response: â â
â â { â â
â â "status": "healthy", â â
â â "version": "1.2.3", â â
â â "uptime": "3d 5h 20m", â â
â â "dependencies": { â â
â â "database": "healthy", â â
â â "redis": "healthy", â â
â â "external_api": "degraded" â â
â â } â â
â â } â â
â â â â
â â Purpose: Debugging, monitoring dashboard â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â 3. Readiness vs Liveness (Kubernetes) â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Liveness: Is process alive? â â
â â GET /health/live â â
â â On failure: Restart container â â
â â â â
â â Readiness: Ready to receive traffic? â â
â â GET /health/ready â â
â â On failure: Exclude from traffic (don't restart) â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
6. High Availability Configuration¶
6.1 Active-Passive (Hot Standby)¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Active-Passive Configuration â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â "Standby takes over when one dies" â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â Normal state: â â
â â â â
â â Clients âââļ VIP (10.0.0.100) âââļ LB Primary (Active) â â
â â â â â
â â â Heartbeat â â
â â âŧ â â
â â LB Secondary (Standby) â â
â â â â
â â On failure: â â
â â â â
â â Clients âââļ VIP (10.0.0.100) âââļ LB Primary (Down!) â â
â â â â â
â â â VIP takeover (Failover) â â
â â âŧ â â
â â LB Secondary (Active) â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Implementation: VRRP, Keepalived, Pacemaker â
â Pros: Simple, resource efficient (Standby just waits) â
â Cons: Standby resource waste, brief downtime on switch â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
6.2 Active-Active¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Active-Active Configuration â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â "Both load balancers handle traffic simultaneously" â
â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â DNS â â
â â â â â
â â ââââââââââââ´âââââââââââ â â
â â â â â â
â â âŧ âŧ â â
â â LB 1 (Active) LB 2 (Active) â â
â â VIP: 10.0.0.100 VIP: 10.0.0.101 â â
â â â â â â
â â ââââââââââââŦâââââââââââ â â
â â â â â
â â ââââââââââââŧâââââââââââ â â
â â âŧ âŧ âŧ â â
â â Server 1 Server 2 Server 3 â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â On failure: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â â
â â LB 1 (Down!) âââļ Remove from DNS or â â
â â LB 2 takes over VIP â â
â â â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Pros: 100% resource utilization, higher throughput â
â Cons: Complex configuration, state sync needed â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
6.3 Cloud Load Balancers¶
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Cloud Load Balancers â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â AWS: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â âĸ ALB (Application Load Balancer) - L7 â â
â â URL/host-based routing, WebSocket, HTTP/2 â â
â â â â
â â âĸ NLB (Network Load Balancer) - L4 â â
â â Ultra-low latency, fixed IP, TCP/UDP â â
â â â â
â â âĸ CLB (Classic Load Balancer) - L4/L7 (legacy) â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â GCP: â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â âĸ HTTP(S) Load Balancer - L7, global â â
â â âĸ TCP/UDP Load Balancer - L4, regional â â
â â âĸ Internal Load Balancer - internal traffic â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
â Advantages: â
â âĸ Managed service (reduced operations burden) â
â âĸ Auto scaling, built-in high availability â
â âĸ Integrated with Auto Scaling â
â âĸ Security features (WAF, DDoS protection) â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
7. Practice Problems¶
Problem 1: Choose Load Balancer¶
Choose appropriate load balancer type (L4/L7) for these scenarios and explain why.
a) gRPC communication between microservices b) Multi-language website (URL: /ko/, /en/, /jp/) c) Real-time game server d) API gateway
Problem 2: Choose Distribution Algorithm¶
Choose most suitable distribution algorithm for these situations.
a) All servers same specs, similar request processing times b) WebSocket-based chat service c) Gradually introducing new server (canary) d) Service utilizing server-side caching
Problem 3: Health Check Design¶
Design health check endpoint for e-commerce service.
Conditions: - Depends on database, Redis, payment API - Kubernetes environment - Need fast failure detection
Problem 4: Architecture Design¶
Design load balancer architecture for service handling 100M daily requests.
Conditions: - Global users (Asia, North America, Europe) - 99.99% availability requirement - Cost optimization
Answers¶
Problem 1 Answer¶
a) gRPC comms: L4 (NLB)
- gRPC is HTTP/2-based but L4 sufficient
- Low latency, high throughput
b) Multi-language website: L7 (ALB)
- URL-based routing needed (/ko â Korean server)
- Host header analysis
c) Game server: L4 (NLB)
- UDP support needed
- Minimal latency critical
- TCP/UDP game protocols
d) API gateway: L7 (ALB)
- URL/header-based routing
- Authentication, Rate Limiting
- SSL termination
Problem 2 Answer¶
a) Round Robin
- Same servers, similar requests â simple rotation efficient
b) Least Connections
- WebSocket are long connections
- Connection count-based distribution effective for load balance
c) Weighted Round Robin
- New server with low weight (e.g., 10%)
- Gradually increase weight
d) IP Hash or Consistent Hashing
- Same user â same server â increased cache hit rate
Problem 3 Answer¶
// GET /health/ready (Readiness)
{
"status": "healthy",
"checks": {
"database": {
"status": "healthy",
"latency_ms": 5
},
"redis": {
"status": "healthy",
"latency_ms": 1
},
"payment_api": {
"status": "healthy",
"latency_ms": 50
}
}
}
// GET /health/live (Liveness)
{ "status": "healthy" }
Configuration:
- Readiness: interval 5s, failure threshold 2, recovery threshold 1
- Liveness: interval 10s, failure threshold 3
Readiness failure: Exclude from traffic (dependency issues like payment)
Liveness failure: Restart container
Problem 4 Answer¶
Architecture:
1. Global Load Balancing (DNS)
- AWS Route 53 / Cloudflare (Latency-based)
- Asia â Seoul region
- North America â Virginia region
- Europe â Frankfurt region
2. Per-region configuration:
âââââââââââââââââââââââââââââââââââ
â CDN (CloudFront/Cloudflare) â â Static content
âââââââââââââââââââââââââââââââââââ
â
âââââââââââââââââââââââââââââââââââ
â L7 Load Balancer (ALB) â â URL routing
â - Auto Scaling â
â - WAF integration â
âââââââââââââââââââââââââââââââââââ
â
âââââââââââââââââââââââââââââââââââ
â Application Servers â
â (Auto Scaling Group) â
âââââââââââââââââââââââââââââââââââ
3. Ensure availability:
- Multi-AZ deployment
- Health checks: Active + Passive
- Enable Cross-Zone Load Balancing
4. Cost optimization:
- Reserved Instances
- CDN reduces Origin load
- Auto Scaling per region traffic patterns
8. Next Steps¶
Now that you understand load balancing, learn about reverse proxy and API gateway.
Next Lesson¶
Related Lessons¶
- 02_Scalability_Basics.md - Stateless architecture
- 07_Distributed_Cache_Systems.md - Session storage
Recommended Practice¶
- Configure load balancer with Nginx
- HAProxy practice
- AWS ALB/NLB comparison test
9. References¶
Tools¶
- Nginx - Web server & load balancer
- HAProxy - High-performance load balancer
- Envoy - Cloud-native proxy
Documentation¶
Online Resources¶
Document Information - Last Updated: 2024 - Difficulty: âââ - Estimated Study Time: 2-3 hours