16

負荷が高くなったときにインフラストラクチャを自動スケーリングしたい。でインフラストラクチャを実行していますAWSGithub発生時にアプリケーション コードをプルする必要があるという要件がありますautoscaling。コードは頻繁に変更されるため、 を取得しAMIてその からインスタンスを起動することはできませんAMI。だから私はから最新のコードを引っ張りたいrepositories。AWS は というサービスを開始しましたAWS CodeDeployこのサービスを使用して、インスタンスの開始時にコードをプルするプロセスを自動化するにはどうすればよいですか?

PS を作成して、その IP を異なるセキュリティ グループinit scriptに自動的にアタッチし、インスタンスの起動時にEIPインスタンスを の下に置き、インスタンスload-balancerが自動スケーリングで終了したときにすべてを取り消します。

4

1 に答える 1

27

CodeDeploy は、問題に対する優れたソリューションです。正しく構成されていれば、自動スケーリングによってスピンアップされた新しい EC2 インスタンスに自動的にデプロイできます。これを機能させるには、次の 3 つのものが必要です。

  1. 最新のホスト エージェントがインストールされ、実行されているインスタンスを起動する Auto Scaling グループ。
  2. その Auto Scaling グループに (タグではなく Auto Scaling グループとして) デプロイするように構成された Code Deploy デプロイ グループ。
  3. 新しいインスタンスに自動的にデプロイするターゲット リビジョン。ターゲット リビジョンがない場合、Code Deploy はインスタンスの起動を認識しますが、何もデプロイしません。

開始に役立つチュートリアルを次に示します:チュートリアル: AWS CodeDeploy を使用してアプリケーションを Auto Scaling グループにデプロイします。このチュートリアルでは、エージェントがインストールされた AMI をベイクし、デプロイ グループをセットアップしてコードを新しいインスタンスにデプロイする方法について説明します。

エージェントがプリインストールされた AMI をベイクする場合は、エージェントのリリースでそのイメージを定期的に更新する必要があります。エージェントがインストールされると、それ自体が更新されますが、エージェントのバージョンが Code Deploy でサポートされなくなった場合、Auto Scaling はインスタンスの起動に失敗する可能性があります。実際の運用では、AMI を作成せず、代わりにインスタンスの起動時に最新のエージェントをインストールすることをお勧めします。(この方法をすぐに使用できるように、チュートリアルを更新する必要があります。)

起動時に最新のインストーラーを自動的にダウンロードして実行するようにインスタンスをセットアップできます。基本的に、Auto Scaling グループを作成するときに、シェル スクリプトをユーザー データとして貼り付けます。

たとえば、Amazon Linux で次のスクリプトをテストしました ( Set Up a New Amazon EC2 Instance to Work with AWS CodeDeploy から取得):

#!/bin/bash
yum -y update
yum install -y aws-cli
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
chmod +x ./install
./install auto

user dataAuto Scaling グループを作成するときと同様に、これを貼り付けることができるはずです。Auto Scaling の場合は、configure details -> advanced details で起動設定を作成するときに設定します。

展開グループを設定し、ターゲット リビジョンを設定するには:

  1. デプロイ グループを作成または編集して、Auto Scaling グループを含めます。(注: これが機能するには、最初に Auto Scaling グループが存在している必要があります。)
  2. Auto Scaling グループに少なくとも 1 つのインスタンスがあることを確認してください。
  3. 自動デプロイするアーティファクト バンドルをデプロイ グループにデプロイします。
  4. 手順 3 が成功したと仮定すると、展開グループにはそのバンドル セットがターゲット リビジョンとして設定されます。自動展開の場合、これは展開する既知の適切なリビジョンになります。

その Auto Scaling グループで Auto Scaling によって起動される新しいインスタンスには、デプロイ グループのターゲット リビジョンが自動的にデプロイされます。失敗した手動展開からのリビジョンは、自動的に展開されません。

于 2014-11-13T20:52:30.617 に答える