CodeDeploy と Elastic Load Balancing - AWS CodeDeploy

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

CodeDeploy と Elastic Load Balancing

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

注記

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

Elastic Load Balancing シングの種類

Elastic Load Balancing には、CodeDeploy デプロイで使用できる 3 種類のロードバランサーが用意されています。Classic Load Balancer、Application Load Balancer、Network Load Balancer

Classic Load Balancer

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

Application Load Balancer

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

注記

Application Load Balancer ターゲットグループには、instance、EC2 インスタンスへのデプロイメント用IPFargate デプロイメント用。詳細については、「」を参照してください。[Target type (ターゲットタイプ)]

Network Load Balancer

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

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

Blue/Green デプロイ

Elastic Load Balancing ing ロードバランサーの背後でインスタンストラフィックを再ルーティングすることは CodeDeploy oyment Blue/Green

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

置き換え先環境のインスタンスがロードバランサーに登録されると、置き換え元環境のインスタンスは登録解除され、終了可能になります。

青/緑の展開の場合、展開グループでClassic Load Balancer、Application Load Balancer、またはNetwork Load Balancer を指定できます。CodeDeploy コンソールまたはAWS CLIをクリックして、ロードバランサーをデプロイグループに追加します。

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

インプレースデプロイ

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

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

インプレース展開では、Classic Load Balancer、Application Load Balancer、またはNetwork Load Balancer を指定できます。ロードバランサーをデプロイグループの設定の一部として指定できます。または CodeDeploy oyment が提供するスクリプトを使用してロードバランサーを実装します。

デプロイグループを使用したインプレースデプロイメントロードバランサーの指定

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

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

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

注記

CodeDeployDefault.OneAtATime 設定は、スクリプトを使用してインプレイスデプロイ用のロードバランサーを設定するときのみ使用します。同時実行はサポートされておらず、CodeDeployDefault.OneAtATime 設定によりスクリプトの直列実行が確実になります。デプロイ設定の詳細については、CodeDeploy でデプロイ設定を使用する を参照してください。

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

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

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

  2. ターゲットの Amazon EC2 インスタンスに、それぞれの Amazon EC2 インスタンスにAWS CLIインストール.

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

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

  5. appspec.ymlアプリケーションリビジョンの場合は、CodeDeploy がregister_with_elb.shスクリプトの実行中にApplicationStartイベントとderegister_from_elb.shスクリプトの実行中にApplicationStopevent.

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

    common_functions.sh スクリプトで:

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

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

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