Elastic Load CodeDeploy Balancing との統合 - AWS CodeDeploy

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Elastic Load CodeDeploy Balancing との統合

CodeDeploy デプロイ中、ロードバランサーは、準備が整っていないとき、現在デプロイ中であるとき、または環境の一部として不要になったときに、インターネットトラフィックがインスタンスにルーティングされないようにします。ただし、ロードバランサーの正確な役割は、Blue/Green デプロイで使用されるかインプレースデプロイで使用されるかによって異なります。

注記

Elastic Load Balancing ロードバランサーの使用は Blue/Green デプロイでは必須、インプレースデプロイでは任意です。

Elastic Load Balancing のタイプ

Elastic Load Balancing には、 CodeDeploy デプロイメントで使用できるクラシックロードバランサー、アプリケーションロードバランサー、ネットワークロードバランサーの 3 種類のロードバランサーが用意されています。

Classic Load Balancer

ルーティングおよび負荷分散を、トランスポートレイヤー (TCP/SSL) またはアプリケーションレイヤー (HTTP/HTTPS) のいずれかで行います。VPC をサポートしています。

注記

クラシックロードバランサーは Amazon ECS デプロイではサポートされていません。

Application Load Balancer

ルーティングと負荷分散をアプリケーションレイヤー (HTTP/HTTPS) で行い、パスベースのルーティングをサポートしています。Virtual Private Cloud (VPC) 内の EC2 の各インスタンスまたはコンテナインスタンスのポートにリクエストをルーティングできます。

注記

Application Load Balancer のターゲットグループには、EC2 インスタンスでのデプロイの場合は instance、および Fargate デプロイの場合は IP のターゲットタイプがなければなりません。詳細については、「ターゲットタイプ」を参照してください。

Network Load Balancer

パケットのコンテンツからではなく、TCP パケットヘッダーから抽出されたアドレス情報に基づいて、トランスポートレイヤー (TCP/UDP Layer-4) でルーティングと負荷分散を行います。Network Load Balancer は、ロードバランサーの有効期間中、トラフィックバーストを処理し、クライアントの出典 IP を保持して、固定 IP を使用します。

Elastic Load Balancing ロードバランサーの詳細は、以下のトピックを参照してください。

Blue/Green デプロイ

Elastic Load Balancing ロードバランサーの背後でインスタンストラフィックを再ルーティングすることは、 CodeDeployブルー/グリーンデプロイの基本です。

Blue/Green デプロイの場合、ロードバランサーは、最新のアプリケーションリビジョンのデプロイ先であるデプロイグループの新しいインスタンス (置き換え先環境) に対しては、指定したルールに基づくトラフィックのルーティングを許可し、前回のアプリケーションリビジョンの実行元である古いインスタンス (元の環境) からはトラフィックをブロックします。

代替環境のインスタンスが 1 つ以上のロードバランサーに登録されると、元の環境のインスタンスは登録解除され、必要に応じて終了されます。

Blue/Green デプロイの場合、デプロイグループに 1 つ以上のクラシックロードバランサー、Application Load Balancer のターゲットグループ、または Network Load Balancer のターゲットグループを指定できます。 CodeDeploy コンソールを使用するか、AWS CLIロードバランサーをデプロイグループに追加します。

Blue/Green デプロイにおけるロードバランサーの使用に関する詳細については、以下のトピックを参照してください。

インプレースデプロイ

インプレースデプロイ中は、ロードバランサーにより、デプロイ先のインスタンスに対するインターネットトラフィックのルーティングがブロックされ、そのインスタンスへのデプロイが完了した時点でインスタンスに対するトラフィックのルーティングが再開されます。

インプレースデプロイ中にロードバランサーが使用されないと、インターネットトラフィックはデプロイプロセス中に依然としてインスタンスにルーティングされる場合があります。その結果、お客様に表示されるウェブアプリケーションが破損していたり、不完全であったり、古いものであったりする可能性があります。Elastic Load Balancing ロードバランサーをインプレースデプロイで使用すると、デプロイグループ内のインスタンスはロードバランサーから登録解除され、最新のアプリケーションリビジョンで更新され、デプロイが成功すると同じデプロイグループの一部としてロードバランサーに再登録されます。 CodeDeploy ロードバランサーの背後でインスタンスが正常になるまで最大 1 時間待ちます。待機期間中にインスタンスがロードバランサーによって正常とマークされなかった場合は、 CodeDeploy デプロイ設定に基づいて次のインスタンスに移動するか、デプロイに失敗します。

インプレースデプロイでは、1 つ以上のクラシックロードバランサー、Application Load Balancer のターゲットグループ、または Network Load Balancer のターゲットグループを指定できます。ロードバランサーはデプロイグループの設定の一部として指定することも、が提供するスクリプトを使用してロードバランサーを実装することもできます。 CodeDeploy

デプロイグループを使用してインプレースデプロイのロードバランサーを指定する

ロードバランサーをデプロイグループに追加するには、コンソールまたはを使用します。 CodeDeploy AWS CLIインプレースデプロイでロードバランサーをデプロイグループで指定する詳細については、次のトピックを参照してください。

スクリプトを使用してインプレースデプロイのロードバランサーを指定する

次の手順のステップに従ってデプロイライフサイクルスクリプトを使用し、インプレースデプロイのロードバランシングをセットアップします。

注記

を使用してください。 CodeDeployDefault OneAtATime デプロイメント設定は、スクリプトを使用してインプレースデプロイ用のロードバランサーを設定する場合にのみ行ってください。同時実行はサポートされていません。 CodeDeployDefault OneAtATime を設定すると、スクリプトが確実に連続して実行されます。デプロイ設定の詳細については、CodeDeploy でデプロイ設定を使用する を参照してください。

CodeDeploy のサンプルリポジトリには GitHub、 CodeDeploy Elastic Load Balancing ロードバランサーを使用するための手順とサンプルが用意されています。これらのレポジトリには、開始するのに必要なすべてのコードを提供する 3 つのサンプルスクリプト、register_with_elb.shderegister_from_elb.sh、および common_functions.sh が含まれます。これらの 3 つのスクリプトのプレースホルダーを編集して、appspec.yml ファイルからこれらのスクリプトを参照します。

Elastic Load Balancing ロードバランサーに登録されている Amazon EC2 インスタンスを使用してインプレースデプロイをセットアップするには、以下を実行します。 CodeDeploy

  1. インプレースデプロイで使用するロードバランサーのタイプのサンプルをダウンロードします。

  2. ターゲットの各 Amazon EC2 インスタンスに AWS CLI がインストールされていることを確認します。

  3. ターゲットの各 Amazon EC2 インスタンスで、IAM インスタンスプロファイルに少なくとも elasticloadbalancing:* および autoscaling:* アクセス許可がアタッチされていることを確認します。

  4. アプリケーションのソースコードディレクトリにデプロイライフサイクルイベントのスクリプト (register_with_elb.shderegister_from_elb.sh、および common_functions.sh) を含めます。

  5. appspec.ymlアプリケーションリビジョンについては、イベント中にスクリプトを実行し、register_with_elb.shApplicationStartイベント中にスクリプトを実行する手順を記載してください。 CodeDeploy deregister_from_elb.sh ApplicationStop

  6. インスタンスが Amazon EC2 Auto Scaling グループの一部である場合、このステップは省略できます。

    common_functions.sh スクリプトで:

    • Classic Load Balancer を使用している場合、ELB_LIST="" で Elastic Load Balancing ロードバランサーの名前を指定し、ファイルの他のデプロイ設定に必要な変更を加えます。

    • Application Load Balancer または Network Load Balancer を使用している場合は、TARGET_GROUP_LIST="" で Elastic Load Balancing ターゲットグループ名を指定し、ファイルの他のデプロイ設定に必要な変更を加えます。

  7. アプリケーションのソースコード appspec.yml およびデプロイライフサイクルイベントのスクリプトをアプリケーションリビジョンにバンドルしてから、リビジョンをアップロードします。Amazon EC2 インスタンスにリビジョンをデプロイします。デプロイ中、デプロイライフサイクルイベントスクリプトは Amazon EC2 インスタンスをロードバランサーに登録解除し、接続が切断されるのを待ってから、デプロイの完了後に Amazon EC2 インスタンスをロードバランサーに再登録します。