web-dev-qa-db-ja.com

AWS ECSクラスターのインスタンスタイプを変更するにはどうすればよいですか?

AWS EC2 Container Serviceにクラスターがあります。それをセットアップしたとき、t2.microインスタンスを使用しました。それらは開発に十分だったからです。次に、m4.largeなどのより強力なインスタンスを使用したいと思います。

インスタンスタイプのみを変更できるかどうかを知りたいので、クラスター全体を再作成する必要はありません。これを行う方法が見つかりませんでした。

36
vargen_

はい、これは可能です。

クラスター内のインスタンスタイプは、起動設定内の「インスタンスタイプ」設定によって決定されます。クラスターを再作成せずにインスタンスタイプを更新するには:

  1. クラスターのコピーを作成しますLaunch Configurationおよび「インスタンスタイプ」を更新します。
  2. クラスターを調整しますAuto Scaling Group新しいものを指すように設定の起動
  3. 新しいインスタンスがクラスターに登録され、サービスが開始されるのを待ちます。

また、異なる起動設定にリンクされた複数のAuto Scalingグループを作成することにより、複数インスタンスタイプを単一クラスターに追加できます。ただし、コンソール内でAuto Scalingグループを簡単にコピーすることはできません。

37
Luke Peterson

はい、CloudFormationでこれを実現できます。

  • ECS-Clusterに対応するスタックをクリックします。
  • Update Stackをクリックします
  • Radiocurrent templateNextを使用します
  • ecsInstanceTypeを変更します
  • NextNextUpdate
  • クラスターを2*nインスタンスにアップスケールします
  • 作成される新しいタイプのn新しいインスタンスを待ちます
  • クラスターをnにダウンスケールします
  • または、インスタンスを1つずつドレーンして終了することもできます
53
revau.lt

これは、ダウンタイムなしで実行する方法です。

  1. Auto Scaling Groupが使用する起動設定のコピーを作成します(必要な変更を含む)。
  2. Auto Scalingグループを次のように編集します:
    • 新しい起動構成を使用する
    • 希望容量=希望容量* 2
    • 最小=必要な容量
  3. ECSクラスターの[ECSインスタンス]タブですべての新しいインスタンスが「アクティブ」になるまで待ちます
  4. 古いインスタンスを選択し、[アクション]-> [インスタンスのドレイン]をクリックします
  5. すべての古いインスタンスが0タスクを実行するまで待ちます
  6. Auto Scaling Groupを編集し、MinとDesiredを元の値に戻します
5
Greg Sansom

これは、ECSインスタンスのCloudFormationスタックでEcsInstanceTypeを変更することで実現できます。自動スケーリンググループへの手動での変更は、次の「ECSインスタンスのスケーリング」操作によって上書きされます。

3
Disco Mike

クラスターのインスタンスタイプを更新するために行った正確な手順は次のとおりです。

  • クラスターサービスに移動し、タスク数を0に更新します

  • EC2->起動構成->アクションドロップダウン-> 起動構成のコピーに移動し、新しいインスタンスタイプを設定します

  • EC2-> Auto Scaling Groups-> Edit-> set Launch Configurationに新しく作成された起動設定に移動します

  • EC2-> Auto Scaling Groups-> Instances-> Detach instanceに移動します

  • EC2に移動->起動構成->古い起動構成を削除

  • クラスターサービスに移動し、タスク数を必要な数に更新します。

これで、タスクが開始されると、更新されたEC2インスタンスタイプで実行されます。

2
Miguel Mota

確かに、起動構成の使用について提案されているように、インスタンスタイプを変更する方法は複数あります。

ただし、複数の起動構成を使用して、コンテナインスタンススケーリングポリシーを持つECSクラスターにアタッチすることは困難です。

たとえば、起動構成を使用してt2.mediumタイプのインスタンスでクラスターを実行しており、ECSクラスターに自動スケーリングポリシーがアタッチされている場合、自動スケーリンググループのみで1以下しかシグナルを送信できません。

2
Lalit Kumar

はい、ECSクラスターのインスタンスタイプを変更できます。 AWS GUIからECSクラスターを手動で作成したと思います。舞台裏では、VPC、インスタンスタイプ、サイズなどのAWSコンソール(ECS)からの入力に従って、awsクラウド形成テンプレートを作成します。同じ手順については、以下の手順に従ってください。

  1. 「EC2ContainerService- {your-ecs-cluster-name}」という名前のクラウド形成テンプレートを見つけます。
  2. [パラメータ]タブで既存の設定を確認します(ここでインスタンスタイプを確認できます)。
  3. 次に、クラウドの形成を更新する必要があります。クリック->更新->現在のテンプレートを使用-> next-> EcsInstanceType変数を更新-> next-> next->スタックを更新します。
  4. これでクラウド形成が更新されました。 EC2コンソールで、新しいインスタンスタイプの新しいスポットフリートがあることを確認できるようになりました。
2

Amazon ECSでコンテナインスタンスタイプを変更するにはどうすればよいですか

コンテナインスタンスタイプを変更するには、次のいずれかのセクションの手順を完了します。

  • AWS CloudFormationスタックを介してECSクラスターで起動されたコンテナーインスタンスを更新する
  • ECSクラスターで手動で起動されたコンテナーインスタンスを更新する

解像度

  • AWS CloudFormationスタックを介してECSクラスターで起動されたコンテナーインスタンスを更新する

重要:次の手順は、基礎となる内部的に作成するリソースで作成されたECSクラスターにのみ適用されますAWS CloudFormationスタック。スタックの名前は、EC2ContainerService-yourClusterNameの形式です。これらの手順は、空のECSクラスターや、コンテナインスタンスをプロビジョニングするためのカスタマイズされたアプローチには適用されません。

AWS CloudFormationスタックのEcsInstanceTypeパラメーターの値を更新します。

1. AWS CloudFormationコンソールを開きます。

  1. ECSクラスターを含むスタックを選択します。

注:クラスター名はスタック名の最後に追加されます(たとえば、EC2ContainerService-yourClusterName)。

  1. [アクション]を選択し、[スタックの更新]を選択します。

  2. [現在のテンプレートを使用]を選択し、[次へ]を選択します。

  3. EcsInstanceTypeには、コンテナインスタンスのインスタンスタイプに適した値を設定し、[次へ]を選択します。

  4. [オプション]セクションをスキップし、[次へ]を選択して、[更新]を選択します。

クラスタ内の古いコンテナインスタンスを置き換えます:

  1. AWS CloudFormationスタックを更新するには、前のセクションのステップ1〜4を完了します。

  2. AsgMaxSizeには、現在のサイズの2倍のパラメーター値を入力します。注:たとえば、現在の値が2の場合、新しい値を4に設定します。これにより、インスタンスタイプを変更する際のダウンタイムを防ぐことができます。

  3. Amazon ECSコンソールを開きます。
  4. ナビゲーションペインで[クラスター]を選択し、クラスターを選択します。
  5. [ECSインスタンス]タブを選択し、置換する古いコンテナインスタンスのコンテナインスタンスIDを選択します。 注: DeploymentConfigurationで置換タスクをコンテナーインスタンスに配置できる場合、Amazon ECSは置換タスクを自動的に配置します。
  6. [アクション]メニューを選択し、[インスタンスのドレイン]を選択してインスタンスをドレインします。
  7. [ECSインスタンス]タブで、古いコンテナインスタンスの実行タスク数が0であることを確認します。
  8. ナビゲーションウィンドウで、[クラスター]を選択し、クラスターを選択します。 [ECSインスタンス]タブを選択し、古いコンテナインスタンスのコンテナインスタンスIDを選択して、[登録解除]を選択します。 注:インスタンスを登録解除すると、Amazon ECSから削除されます。
  9. AWS CloudFormationテンプレートで、AsgMaxSizeの値を元の値に設定して、古いコンテナーインスタンスを終了します。重要:この手順は、Auto Scalingグループにデフォルトの終了ポリシーがあることを前提としています。
2
sunnysharma