Globaler Datenverkehr benötigt regionale Verteilung? Konfiguriere einen regionsübergreifenden Load Balancer

Veröffentlicht am:

Die CloudTrips-Webebene übersteht jetzt den Ausfall einer VM. Beide Backend-VMs und ihr regionaler Load Balancer befinden sich jedoch in Westeuropa. Ein regionaler Ausfall könnte den gesamten öffentlichen Endpunkt unerreichbar machen.

Füge eine kleine Bereitstellung in Nordeuropa hinzu und platziere beide regionalen öffentlichen Load Balancer hinter einem Azure Global Load Balancer, auch Cross-Region Load Balancer genannt.

Globale öffentliche IP
          |
Global Load Balancer
          |-----------------------------|
Regionaler LB Westeuropa       Regionaler LB Nordeuropa
          |                              |
WEB01 und WEB02                       WEB01

Der Backend Pool des Global Load Balancers enthält die Frontend-IP- Konfigurationen der regionalen Load Balancer und nicht deren VMs. Jeder regionale Load Balancer wählt danach eine gesunde VM aus seinem eigenen Pool.

Dieser Trip baut auf Eine Webanwendung benötigt Traffic-Verteilung? Erstelle einen Load Balancer auf. Behalte Load Balancer, öffentliche IP, Regel, Probe und beide Web-VMs in Westeuropa. Starte beide VMs, bevor du fortfährst.

Der frühere Global-Peering-Trip erstellte vnet-cloudtrips-dr-test-neu und snet-dr in Nordeuropa. Verwende sie erneut. VNet Peering ist für den Global Load Balancer nicht erforderlich: Die globale Ebene verbindet die öffentlichen Frontends der regionalen Load Balancer.

Dieses Lab fügt einen regionalen Load Balancer, eine öffentliche IP, eine NSG, eine VM, einen Datenträger und einen Global Load Balancer hinzu. Führe den Test zeitnah durch und bereinige danach die Ressourcen.

Das Nordeuropa-Subnetz vorbereiten

Erstelle nsg-cloudtrips-web-test-neu in rg-cloudtrips-network-test-weu mit North Europe als Region. Füge diese Inbound-Regel hinzu:

Source: Service Tag
Source service tag: Internet
Destination: IP Addresses
Destination IP addresses/CIDR ranges: 10.50.1.0/24
Service: HTTP
Action: Allow
Priority: 100
Name: Allow-HTTP-LoadBalancer

Ordne die NSG vnet-cloudtrips-dr-test-neu/snet-dr zu. Ihre Standardregel AllowAzureLoadBalancerInBound erlaubt Azure Health Probes.

Den regionalen Nordeuropa Load Balancer erstellen

Suche nach Load balancers und wähle Create > Standard Load Balancer. Konfiguriere:

Subscription: CloudTrips TEST
Resource group: rg-cloudtrips-network-test-weu
Name: lb-cloudtrips-web-test-neu
Region: North Europe
SKU: Standard
Type: Public
Tier: Regional

Füge das Frontend hinzu:

Name: fe-cloudtrips-web-test-neu
IP version: IPv4
Public IP: Create new
Public IP name: pip-cloudtrips-lb-test-neu
SKU: Standard
Availability zone: Zone-redundant
Routing preference: Microsoft network

Füge einen leeren NIC-basierten Backend Pool hinzu:

Name: be-cloudtrips-web-test-neu
Virtual network: vnet-cloudtrips-dr-test-neu
Backend pool configuration: NIC

Füge eine Load-Balancing-Regel hinzu:

Name: rule-http-80
Frontend: fe-cloudtrips-web-test-neu
Backend pool: be-cloudtrips-web-test-neu
Protocol: TCP
Frontend port: 80
Backend port: 80
Health probe: Create new
Probe name: probe-tcp-80
Probe protocol: TCP
Probe port: 80
Session persistence: None
TCP reset: Enabled
Floating IP: Disabled

Wähle Review + create und danach Create.

Ein Nordeuropa-Backend hinzufügen

Erstelle eine kostenbewusste Test-VM:

Name: vm-cloudtrips-web01-test-neu
Resource group: rg-cloudtrips-network-test-weu
Region: North Europe
Availability options: No infrastructure redundancy required
Security type: Standard
Image: Ubuntu Server 24.04 LTS - x64 Gen2
Size: Standard_D2s_v3
Public inbound ports: None
Virtual network: vnet-cloudtrips-dr-test-neu
Subnet: snet-dr
Public IP: None
NIC network security group: None
Load balancing option: Azure load balancer
Load balancer: lb-cloudtrips-web-test-neu
Backend pool: be-cloudtrips-web-test-neu

Aktiviere die Löschung von NIC und Betriebssystemdatenträger zusammen mit der VM. Dieses Lab verwendet zur Kostenbegrenzung nur eine Nordeuropa-VM. In der Produktion wären mindestens zwei Instanzen über Fehlerdomänen verteilt.

Öffne nach der Bereitstellung Operations > Run command > RunShellScript und führe aus:

sudo mkdir -p /opt/cloudtrips-web
printf '%s\n' 'CloudTrips response from NORTH EUROPE' | sudo tee /opt/cloudtrips-web/index.html >/dev/null
printf '%s\n' \
  '[Unit]' \
  'Description=CloudTrips test web server' \
  'After=network.target' \
  '' \
  '[Service]' \
  'ExecStart=/usr/bin/python3 -m http.server 80 --bind 0.0.0.0 --directory /opt/cloudtrips-web' \
  'Restart=always' \
  '' \
  '[Install]' \
  'WantedBy=multi-user.target' \
  | sudo tee /etc/systemd/system/cloudtrips-web.service >/dev/null
sudo systemctl daemon-reload
sudo systemctl enable --now cloudtrips-web
curl --silent http://127.0.0.1

Öffne lb-cloudtrips-web-test-neu und bestätige die VM-NIC im Backend Pool. Teste danach die regionale öffentliche IP von deinem Mac:

curl http://<north-europe-regional-public-ip>

Die Antwort sollte CloudTrips response from NORTH EUROPE lauten.

Regionaler Nordeuropa Load Balancer mit seinem gesunden privaten CloudTrips-Backend

Den Global Load Balancer erstellen

Erstelle einen weiteren Standard Load Balancer:

Subscription: CloudTrips TEST
Resource group: rg-cloudtrips-network-test-weu
Name: lb-cloudtrips-web-global
Region: West Europe
SKU: Standard
Type: Public
Tier: Global

Westeuropa ist die Home Region des Global Load Balancers. Sie speichert die Azure-Ressource, zwingt Benutzer jedoch nicht durch Westeuropa. Das globale Frontend ist eine statische Anycast-IP, die an vielen Azure-Standorten angekündigt wird. Dadurch kann der Datenverkehr nahe beim Client in das Microsoft-Netzwerk eintreten.

Füge das globale Frontend hinzu:

Name: fe-cloudtrips-web-global
IP version: IPv4
Public IP: Create new
Public IP name: pip-cloudtrips-lb-global
Public IP tier: Global

Füge den Backend Pool be-cloudtrips-regions-global hinzu. Füge unter Load balancers diese regionalen Frontends hinzu:

lb-cloudtrips-web-test-weu / fe-cloudtrips-web-test-weu
lb-cloudtrips-web-test-neu / fe-cloudtrips-web-test-neu

Backend Pool des Global Load Balancers mit den Frontend-Konfigurationen aus West- und Nordeuropa

Füge die globale Regel hinzu:

Name: rule-http-80-global
Frontend IP: fe-cloudtrips-web-global
Backend pool: be-cloudtrips-regions-global
Protocol: TCP
Frontend port: 80
Backend port: 80
Session persistence: None
Idle timeout: 15 minutes
TCP reset: Enabled
Floating IP: Disabled

Der globale Backend-Port muss dem Frontend-Port beider regionaler Regeln entsprechen. Hier wird kein eigener Probe ausgewählt. Der Global Load Balancer prüft automatisch die von den regionalen Load Balancern gemeldete Verfügbarkeit.

Wähle Review + create und danach Create. Notiere die globale öffentliche IP-Adresse.

Übersicht des Global-Tier CloudTrips Load Balancers mit seiner statischen öffentlichen Frontend-IP

Regionales Routing und Failover testen

Sende von deinem Mac mehrere Anfragen an die globale IP:

for request in {1..5}; do
  curl --connect-timeout 10 http://<global-load-balancer-public-ip>
done

Der Global Load Balancer verwendet geografische Nähe und keine strikte Abwechslung. Von Österreich kommt die normale Antwort wahrscheinlich aus Westeuropa; die genaue Auswahl ist nicht garantiert.

Lokales Terminal mit der globalen Load-Balancer-IP, die die nächstgelegene gesunde CloudTrips-Region erreicht

Gib jetzt beide Westeuropa-Backends frei:

az vm deallocate --resource-group rg-cloudtrips-network-test-weu --name vm-cloudtrips-web01-test-weu
az vm deallocate --resource-group rg-cloudtrips-network-test-weu --name vm-cloudtrips-web02-test-weu

Die regionalen Probes melden schließlich keine gesunden Westeuropa-Backends mehr. Der Global Load Balancer prüft die regionale Verfügbarkeit alle fünf Sekunden und nimmt das ungesunde regionale Frontend aus der Rotation. Teste die globale IP bis zu einer Minute erneut:

for request in {1..12}; do
  curl --connect-timeout 10 http://<global-load-balancer-public-ip>
  sleep 5
done

Die Antwort sollte wechseln zu:

CloudTrips response from NORTH EUROPE

Lokales Terminal mit Failover derselben Global-Load-Balancer-IP zur Nordeuropa-Bereitstellung

Damit ist regionales Failover auf Layer 4 bewiesen. Anwendungsdaten werden nicht zwischen Regionen repliziert; die Anwendung muss das separat lösen.

Die Cross-Region-Erweiterung bereinigen

Die folgenden Application-Gateway-Trips benötigen nur die Westeuropa-Web-VMs. Starte sie wieder:

az vm start --resource-group rg-cloudtrips-network-test-weu --name vm-cloudtrips-web01-test-weu
az vm start --resource-group rg-cloudtrips-network-test-weu --name vm-cloudtrips-web02-test-weu

Behalte den ursprünglichen regionalen Westeuropa Load Balancer.

Lösche die temporären regionsübergreifenden Ressourcen:

lb-cloudtrips-web-global
pip-cloudtrips-lb-global
lb-cloudtrips-web-test-neu
pip-cloudtrips-lb-test-neu
vm-cloudtrips-web01-test-neu mit NIC und Datenträger
nsg-cloudtrips-web-test-neu

Behalte vnet-cloudtrips-dr-test-neu für spätere Network-Manager- und regionale Networking-Übungen.