In einem Supermarkt haben mehrere Kassen geöffnet und es kaufen sehr viele Kunden ein. Normalerweise verteilen sich die Kunden von selbst an die verschiedenen Kassen, um schneller bezahlen zu können. In der Cloud hingegen passiert das nicht von selbst, sodass ein Load Balancer benötigt wird.
Ein Load Balancer verteilt den eingehenden Datenverkehr auf verschiedene Ziele z.B. Instanzen oder Container, damit keine der Ressourcen überlastet ist. Wenn eine Ressource nicht mehr ansprechbar ist, dann werden die Anfragen an die anderen Ziele weitergeleitet. Dadurch kann Hochverfügbarkeit gewährleistet werden.
Ein Elastic Load Balancing (ELB) verteilt den eingehenden Datenverkehr auf mehrere Ziele wie beispielsweise Amazon EC2-Instanzen, Container oder IP-Adressen, welche in verschiedenen Availability Zones in einer Region liegen können. Der Load Balancer überwacht den Zustand seiner Ziele und leitet den Verkehr nur an die gesunden weiter. Ziele werden als gesund betrachtet, wenn sie beispielsweise binnen eines definierten Zeitraums z.B. 10 Sekunden durch ein bestimmtes Protokoll antworten. Wenn der Datenverkehr sich ändert, kann auch der Load Balancer seine Kapazität automatisch anpassen. Durch das Verteilen über verschiedene Ziele in verschiedenen Availability Zones wird die Verfügbarkeit der Anwendungen erhöht.
Es gibt verschiedene Arten von Load Balancern verschiedene Arten von Load Balancern: Application Load Balancers (ALBs), Network Load Balancers (NLBs), and Classic Load Balancers (CLBs). ALBs nutzen HTTP/HTTPS-Verkehr bzw. Schicht 7 des OSI-Modells. NLBs und CLBs nutzen beide TCP-Verkehr oder Schicht 4 des OSI Modells. Ein ALB unterstützt pfadbasiertes Routing und kann Anfragen an einen oder mehrere Ports von Containern weiterleiten. Im Folgenden wird ein ALB genutzt, um die Anfragen vom Frontend an die Frontend-Container weiterzuleiten, die beide in unterschiedlichen Subnetzen liegen.
Nicht nur Load Balancer helfen die Anwendung hochverfügbar zu machen, sondern auch Datenbanken können hochverfügbar werden. Eine Multi-AZ-Bereitstellung kann dabei helfen in einer Region hochverfügbar zu sein. Multi-AZ bedeutet, dass mindestens eine weitere Standby-Instance der Amazon RDS Datenbank in einer anderen Availability Zone zur Verfügung steht. Die Standby-Instance wird synchron zur primären Datenbankinstanz repliziert. Bei einem Ausfall der primären Instanz, wird ein Failover automatisch initialisiert, wodurch für eine minimale Unterbrechung der Anwendung gesorgt wird.