Wie vermeiden Sie Ausfallzeiten mit Elastic Beanstalk-Bereitstellungen, einschließlich Datenbank-Patches?

8

Ich habe die AWS-Dokumentation zu Bereitstellung von Versionen ohne Ausfallzeiten , aka CNAME swapping .

Wie yegor256 erklärt es in diese Antwort :

  

Das einzige, was es tut, ist nur den Austausch von zwei CNAMEs. Zum Beispiel haben Sie eine Umgebung foo-1 mit CNAME foo-1.example.com und eine weitere foo-2 mit CNAME foo-2.example.com. Nach der Auslagerungsoperation reagiert die Umgebung foo-1 auf Ссылка .

Das Problem ist also, dass Sie nicht sofort den gesamten Verkehr umschalten, sondern nur den neuen Verkehr. Vorhandener Datenverkehr wird weiterhin den vorherigen CNAME-Eintrag für bis zu TTL Sekunden verwenden, sodass zwei Versionen für diesen kurzen Zeitraum koexistieren (300 Sekunden oder mehr nach Arun Kumar ).

Das sieht für mich akzeptabel aus , wenn zwei Versionen der Anwendung zusammenarbeiten können .

Einige Releases unserer App enthalten jedoch Datenbank-Patches, die direkt nach dem Entfernen der alten Version und unmittelbar vor der Einführung der neuen Version ausgeführt werden müssen.

Es sieht also so aus, als ob der CNAME-Swapping für das, was wir tun, nicht gut genug ist, da die alte App-Version nach dem Patchen der Datenbank abbrechen würde.

Idealerweise möchte ich:

  • Behalte immer den gleichen Elastic Load Balancer
  • Lassen Sie Elastic Beanstalk eine oder mehrere Instanzen mit der neuen App-Version hochfahren
  • Entfernen Sie die vorhandenen Instanzen (mit der alten App-Version) aus dem ELB
  • Patche die Datenbank
  • Fügen Sie die neu gebooteten Instanzen (mit der neuen App-Version) dem ELB hinzu

Dies würde die Ausfallzeit von 503 Service Unavailable , nur auf wenige Sekunden reduzieren, wenn Patches angewendet werden .

Ist das möglich? Oder habe ich nicht das ganze Bild richtig gesehen, und fehlt mir eine einfachere Lösung?

    
Benjamin 17.09.2013, 23:32
quelle

1 Antwort

1

Hier sind einige andere Strategien, die Sie verwenden können, um eine Zero-Downtime-Bereitstellung auf Elastic Beanstalk durchzuführen: Ссылка

    
Michael Gallego 19.09.2013 20:44
quelle

Tags und Links