Sie können dasselbe unerwünschte Verhalten auch bei einer Elastic Beanstalk-Umgebung mit mehr als einer Instanz erhalten. Der Grund ist, dass es vorkommen kann, dass alle Instanzen den Aktualisierungsprozess gleichzeitig ausführen.
Wenn Sie diese Ausfallzeit vermeiden möchten, gibt es eine integrierte Funktion für Elastic Beanstalk namens URLs austauschen. Es ist eine sehr einfache Implementierung einer Blue-Green-Implementierung Strategie.
Grundsätzlich haben Sie in einer Blue-Green-Bereitstellungsstrategie zwei Gruppen von Ressourcen: die blauen Ressourcen und die grünen Ressourcen. Nehmen Sie an, dass die Blue-Ressourcen zunächst den Produktionsdatenverkehr empfangen und verarbeiten. Die Strategie funktioniert wie folgt: (1) Sie stellen die neue Version Ihrer Anwendung in den Green-Ressourcen bereit; (2) Sie laufen irgendwelche Aufwärmverfahren, die Sie vielleicht wünschen, wenn Sie irgendwelche haben; (3) Sie verwenden eine Art "Traffic Manager", um Produktionsdaten in Ihre Green-Ressourcen zu senden; (4) Sobald der gesamte Datenverkehr von den Blue-Ressourcen in die Green-Ressourcen migriert ist, können Sie optional die Blue-Ressourcen herunterfahren.
In Elastic Beanstalk benötigen Sie 2 Umgebungen dafür. Nehmen wir an, wir haben 2-Umgebungen mit den folgenden Namen und URLs:
Erste Umgebung genannt Env-Blue
, mit URL myapp-prod.elasticbeanstalk.com
.
Zweite Umgebung namens Env-Green
, mit URL myapp-staging.elasticbeanstalk.com
.
Nehmen wir an, dass Sie Ihren eigenen Domain-Namen haben, www.myapp.com
, die myapp-prod.elasticbeanstalk.com
verweist. Du spielst gerade v1.0 auf Env-Blue, und du arbeitest hart daran, v1.1 herauszubekommen.
Wenn Sie bereit sind, Version 1.1 bereitzustellen, stellen Sie es in Env-Green bereit - und Sie tun das, weil es die aktuelle "Staging" -Umgebung ist. Dann können Sie sich damit verbinden, stellen Sie sicher, dass es genau so funktioniert, wie Sie es wollten.
Schließlich wählen Sie beide Umgebungen auf Elastic Beanstalk und wählen Sie die Funktion Swap URLs. Ihre Umgebungen werden dann wie folgt aussehen:
Erste Umgebung genannt Env-Blue
, mit URL myapp-staging.elasticbeanstalk.com
, die alte Version 1.0 ausgeführt wird.
Zweite Umgebung namens Env-Green
, mit URL myapp-prod.elasticbeanstalk.com
, die neue v1.1 läuft.
Da www.myapp.com
noch myapp-prod.elasticbeanstalk.com
Punkte, die Benutzer, die auf www.myapp.com
anschließen, wird nun auf die Env-Grün gesendet werden, die v1.1 läuft. Wenn die Benutzer ihre DNS-Caches aktualisieren, werden sie schrittweise auf Version 1.1 migriert.
Eine sehr wichtige letzte Anmerkung: Damit diese Strategie ordnungsgemäß funktioniert, ist es sehr wichtig, dass Sie eine geeignete TTL für Ihre Domäneneinträge konfiguriert haben. Wenn es zu lange dauert, cachen Ihre Benutzer möglicherweise für eine sehr lange Zeit in Ihrem DNS und es würde eine Weile dauern, bis sie migriert werden. Und während dieser Zeit musst du zwei Ressourcen laufen lassen (für die du bezahlen würdest).
Danke Bruno! Sehr gründliche Antwort. Was ist mit dem: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.rollingupdates.html – Costa
Dieser Link spricht speziell über Änderungen der Umgebungskonfiguration - zum Beispiel, wenn Sie Instanztypen ändern (t2. Mikro bis3.large, zum Beispiel). Dazu müssen Sie Ihre EC2-Instanzen ersetzen. Ein Rolling Update würde Elastic Beanstalk dazu veranlassen, sie nicht alle gleichzeitig zu ersetzen. Es gibt auch etwas Ähnliches, das "rollende Bereitstellungen" genannt wird - http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html. Es ist definitiv etwas, das es wert ist, untersucht zu werden. Im Vergleich zu Blau/Grün, ist der Hauptunterschied, dass es schwieriger ist, ein Rollback durchzuführen, wenn die Bereitstellung fehlschlägt! So viele Optionen ... –
Danke Bruno! Ja, AWS ist ein riesiges, riesiges Ding-ma-Tech-Ding. Es war interessant darüber zu lernen. Danke, dass du diese Dinge geklärt hast! Ich schätze es sehr:) – Costa