web-dev-qa-db-ja.com

AWS EC2 AutoScalingGroupに新しいコードを適切にデプロイする方法

シナリオ:
現在、EC2インスタンスで実行されている単一の本番サーバーがあります。トラフィックが多いので、自動スケーリング機能を使用したいと思いますが、これは少し新しいです。

以下は私の理解です:
-既存の本番サーバーからカスタムAMIを作成します
-このAMIから起動構成を作成します
-この起動構成でAutoScalingグループを作成します
-条件を設定します。CPU使用率が60%を超える場合はインスタンスを追加し、40%未満の場合は1つのインスタンスを終了します。
-この自動スケーリンググループにロードバランサーを追加します
-私が理解している限り、自動スケーリンググループに新しいコードをデプロイするには、更新されたアプリケーションバージョンで新しいAMIを作成し、自動スケーリンググループで使用されるAMIをこの新しいものに変更する必要があります。次に、以前のすべてのインスタンスを終了し、更新されたAMIから新しいインスタンスを作成します。

質問:
1。更新されたAMIを作成するには、自動スケーリンググループの一部ではない以前のEC2インスタンスを保持する必要がありますか?
そこに新しいコードをデプロイし、そのインスタンスからAMIを作成しますか?
2。または、新しいAMIを作成する代わりに、すべてのサーバーにSSHで接続し、そこから新しいコードをプルすることもできますか?ただし、生成される新しいインスタンスは前のコードを使用します。
3。また、新しいAMIを追加した後、以前のすべてのインスタンスを適切に終了するにはどうすればよいですか?
4。最後に、これを適切に自動化するにはどうすればよいですか?

1

新しく作成されたインスタンスへのSSHに依存しないでください-いつでも出入りできます。

Launch Configuration User Dataを使用すると、インスタンスのセットアップを自動化できます。ここで、任意のbashスクリプトを実行できます。そのスクリプトは、Webサーバーをインストールおよび構成し、任意のコードをプルできます。ただし、後でコードを更新する場合は、新しいバージョンをデプロイするためにすべてのインスタンスにSSHで接続する必要があります。したがって、これは最適な戦略ではありません。

BestAWS CodeDeployのようなツールを使用すると、すべてを実行できます。コードデプロイでは、プロセスは次のように機能します。

  1. Webサーバーが事前構成されたAMIを作成します(または、上記のUserDataを使用して起動時に構成します)。この時点では、実際のWebサイトコードではなく、Webサーバーのみが存在することに注意してください。

  2. CodeDeployエージェントを開始 UserDataスクリプトの最後に自動的に。

  3. エージェントはCodeDeployサーバーに接続し、最新のWebサイトファイルをプル(PHP、Java、...)します。

  4. ウェブサイトの新しいバージョン(たとえば、新しいJava WARファイル))を開発する場合は、CodeDeployに現在アクティブなすべてのノードにプッシュするように指示します。

このようにして、Auto Scaling Groupに参加するホストは自動的に最新のWebサイトコードを取得し、AMIを常に再構築する必要はありません。

お役に立てば幸いです:)

1
MLu