|
| 1 | +# Azure Load Balancer Gaming Platform Architecture |
| 2 | + |
| 3 | +This diagram illustrates the Azure Load Balancer architecture for a gaming platform migration from AWS Network Load Balancer, featuring multi-protocol support, zone redundancy, and VMSS Flex orchestration. |
| 4 | + |
| 5 | +```mermaid |
| 6 | +flowchart TB |
| 7 | + subgraph Internet ["🌐 Internet"] |
| 8 | + Clients["Gaming Clients<br/>TCP & UDP Traffic"] |
| 9 | + end |
| 10 | + |
| 11 | + subgraph Azure ["☁️ Azure East US Region"] |
| 12 | + subgraph LB_Frontend ["Azure Standard Load Balancer"] |
| 13 | + LB["Load Balancer<br/>Zone-Redundant<br/>Static Public IP<br/>Floating IP (DSR)"] |
| 14 | + end |
| 15 | + |
| 16 | + subgraph Zone1 ["🏢 Availability Zone 1"] |
| 17 | + subgraph SessionSubnet1 ["Session Management Subnet"] |
| 18 | + SessionVMSS1["Session Management<br/>VMSS Flex<br/>TCP Port 7777"] |
| 19 | + end |
| 20 | + subgraph GameSubnet1 ["Game Data Subnet"] |
| 21 | + GameVMSS1["Real-time Game Data<br/>VMSS Flex<br/>UDP Port 7778"] |
| 22 | + end |
| 23 | + end |
| 24 | + |
| 25 | + subgraph Zone2 ["🏢 Availability Zone 2"] |
| 26 | + subgraph SessionSubnet2 ["Session Management Subnet"] |
| 27 | + SessionVMSS2["Session Management<br/>VMSS Flex<br/>TCP Port 7777"] |
| 28 | + end |
| 29 | + subgraph GameSubnet2 ["Game Data Subnet"] |
| 30 | + GameVMSS2["Real-time Game Data<br/>VMSS Flex<br/>UDP Port 7778"] |
| 31 | + end |
| 32 | + end |
| 33 | + |
| 34 | + subgraph Zone3 ["🏢 Availability Zone 3"] |
| 35 | + subgraph SessionSubnet3 ["Session Management Subnet"] |
| 36 | + SessionVMSS3["Session Management<br/>VMSS Flex<br/>TCP Port 7777"] |
| 37 | + end |
| 38 | + subgraph GameSubnet3 ["Game Data Subnet"] |
| 39 | + GameVMSS3["Real-time Game Data<br/>VMSS Flex<br/>UDP Port 7778"] |
| 40 | + end |
| 41 | + end |
| 42 | + |
| 43 | + subgraph DataServices ["Data Services"] |
| 44 | + Redis[("Azure Cache for Redis<br/>Session State")] |
| 45 | + Cosmos[("Azure Cosmos DB<br/>Player Data")] |
| 46 | + end |
| 47 | + end |
| 48 | + |
| 49 | + %% Traffic Flow |
| 50 | + Clients --> LB |
| 51 | + |
| 52 | + %% Load Balancer to Backend Pools |
| 53 | + LB -->|TCP 7777| SessionVMSS1 |
| 54 | + LB -->|TCP 7777| SessionVMSS2 |
| 55 | + LB -->|TCP 7777| SessionVMSS3 |
| 56 | + |
| 57 | + LB -->|UDP 7778| GameVMSS1 |
| 58 | + LB -->|UDP 7778| GameVMSS2 |
| 59 | + LB -->|UDP 7778| GameVMSS3 |
| 60 | + |
| 61 | + %% Backend Services to Data Services |
| 62 | + SessionVMSS1 --> Redis |
| 63 | + SessionVMSS2 --> Redis |
| 64 | + SessionVMSS3 --> Redis |
| 65 | + |
| 66 | + GameVMSS1 --> Cosmos |
| 67 | + GameVMSS2 --> Cosmos |
| 68 | + GameVMSS3 --> Cosmos |
| 69 | + |
| 70 | + %% Styling |
| 71 | + classDef lbClass fill:#0078d4,stroke:#005a9f,stroke-width:2px,color:#fff |
| 72 | + classDef sessionClass fill:#00bcf2,stroke:#0099d4,stroke-width:2px,color:#fff |
| 73 | + classDef gameClass fill:#00d4aa,stroke:#00b894,stroke-width:2px,color:#fff |
| 74 | + classDef dataClass fill:#ff6b35,stroke:#e55100,stroke-width:2px,color:#fff |
| 75 | + classDef zoneClass fill:#f5f5f5,stroke:#999,stroke-width:1px,stroke-dasharray: 5 5 |
| 76 | + |
| 77 | + class LB lbClass |
| 78 | + class SessionVMSS1,SessionVMSS2,SessionVMSS3 sessionClass |
| 79 | + class GameVMSS1,GameVMSS2,GameVMSS3 gameClass |
| 80 | + class Redis,Cosmos dataClass |
| 81 | +``` |
| 82 | + |
| 83 | +## Architecture Components |
| 84 | + |
| 85 | +### Load Balancer Configuration |
| 86 | +- **Azure Standard Load Balancer** with zone-redundant deployment |
| 87 | +- **Static Public IP** for consistent client endpoints |
| 88 | +- **Floating IP (DSR)** enabled for client IP preservation |
| 89 | +- **Multi-protocol support** for TCP and UDP traffic |
| 90 | + |
| 91 | +### Backend Pools |
| 92 | +- **Session Management Pool**: VMSS Flex orchestration handling TCP traffic on port 7777 |
| 93 | +- **Real-time Game Data Pool**: VMSS Flex orchestration handling UDP traffic on port 7778 |
| 94 | + |
| 95 | +### Availability Zones |
| 96 | +- **Zone 1, 2, 3**: Each contains both service types in separate subnets |
| 97 | +- **Subnet isolation**: Session management and game data services isolated per zone |
| 98 | +- **Network Security Groups**: Protecting each subnet tier |
| 99 | + |
| 100 | +### Data Services |
| 101 | +- **Azure Cache for Redis**: Session state management for session services |
| 102 | +- **Azure Cosmos DB**: Player data storage for game data services |
| 103 | + |
| 104 | +### Traffic Flow |
| 105 | +1. Gaming clients send TCP and UDP traffic through the internet |
| 106 | +2. Azure Load Balancer receives traffic via static public IP |
| 107 | +3. Load balancer routes TCP traffic (port 7777) to session management backend pool |
| 108 | +4. Load balancer routes UDP traffic (port 7778) to game data backend pool |
| 109 | +5. Session management services connect to Azure Cache for Redis |
| 110 | +6. Game data services connect to Azure Cosmos DB for player data |
| 111 | + |
| 112 | +This architecture provides high availability, ultra-low latency, and scalable performance for multiplayer gaming workloads migrated from AWS Network Load Balancer. |
0 commit comments