Wir haben eine Flotte von Nginx-Servern auf Amazon EC2, auf denen wir gelegentlich die Konfigurationsdateien aktualisieren müssen, um neue Einstellungen zu implementieren.
Derzeit haben wir die Konfigurationen in einem benutzerdefinierten AMI. Wenn wir ein Update durchführen müssen, müssen wir die AMI- und dann die EC2-Instanzen neu erstellen. Wir haben einige Hilfsskripte, aber es ist immer noch eine ziemliche Anstrengung, dies zu tun. Gibt es einen besseren Weg?
amazon-web-services
amazon-ec2
Bububu
quelle
quelle
Antworten:
Es gibt eine Reihe von Konzepten, die Sie nutzen können.
Der Schlüssel zum Erfolg ist die Automatisierung
Die erste Möglichkeit besteht darin, das zu tun, was Sie gerade tun, dh die EC2s bei jeder Konfigurationsänderung neu zu erstellen . Nur vollautomatisch.
Wenn Sie jetzt Konfigurationsaktualisierungen über AMIs durchführen, gehen Sie noch einen Schritt weiter und erstellen eine Pipeline , die bei einer Änderung der Konfigurationsdatei in einem Repository Folgendes bewirkt :
Die zweite Möglichkeit besteht darin, die Instanzen an Ort und Stelle zu halten und nur die Konfigurationsdateien bereitzustellen , ohne sie neu zu erstellen . Im Allgemeinen können Sie Konfigurationsdateien als Code behandeln und Ihre Konfigurationsänderungen genauso bereitstellen, wie Sie Codeversionen bereitstellen würden. AWS verfügt über viele Tools, die dabei helfen.
Sobald Sie mit der Automatisierung dieser Nginx-Konfigurationsaktualisierungen vertraut sind, möchten Sie die Automatisierung möglicherweise auf den Rest Ihrer Infrastruktur ausweiten.
Es gibt ein großartiges Whitepaper - Übersicht über die Bereitstellungsoptionen in AWS , das Ihnen einen schönen Überblick gibt.
Ich hoffe das hilft :)
quelle
Speichern Sie Ihre Konfigurationen in EFS und stellen Sie EFS an dem Ort bereit, an dem Nginx-Konfigurationen erwartet werden. Stellen Sie sie alternativ auf Amazon S3 und führen Sie gelegentlich eine Synchronisierung durch oder verwenden Sie s3fs (Vorsicht, s3fs ist möglicherweise nicht gut genug für die Produktion).
Wenn Sie Ihre Konfiguration ändern müssen, erhöhen Sie die gewünschte Größe Ihrer Autoscaling-Gruppe, um das zu verdoppeln, was Sie zum Auslösen neuer Instanzen mit der neuen Konfiguration benötigen, und kehren Sie dann zu dem zurück, was Sie benötigen, um die alten Instanzen zu entfernen. Alternativ führen Sie einfach einen fortlaufenden Neustart der Server durch.
Eine andere Möglichkeit besteht darin, die neuen Konfigurationen einfach mit einem grundlegenden Automatisierungstool wie der Bereitstellung von AWS-Code auf Ihren Server zu übertragen.
Die oben genannten vollautomatischen Optionen sind technisch besser und sauberer. Wenn Sie jedoch selten Konfigurationen ändern und eine einfache Lösung wünschen, kann dies hilfreich sein.
quelle
AWS-Ausführungsbefehl https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html
Oder Sie können Opsworks https://aws.amazon.com/opsworks/ verwenden.
quelle
Das Neuerstellen der AMIs oder das Erstellen einer vollwertigen Bereitstellungs-Pipelines, wie die anderen nur für eine Änderung der Konfigurationsdatei vorschlagen, scheint ein Overkill zu sein. Sie sollten Ansible verwenden, um Änderungen zu veröffentlichen und alle Ihre Knoten synchron zu halten. Es gibt viele Ansible-Module, mit denen Sie die allgemeinen Aufgaben automatisieren können.
quelle