2021/05/26

クラスターとは?Amazon ECSのクラスターについて解説

 
  

クラスターとは?


Amazon ECS クラスターは、タスクまたはサービスの論理グループです。

他にも、コンテナインスタンスやキャパシティプロバイダーなどの論理的なグループになることもあります。クラスターはAWSアカウントに紐づき、リージョンごとに固有のものとなります。

また、デフォルトで作成されるクラスター以外にも、自分でクラスターを作成して、クラスター別にリソースを分けることもできます。

クラスターの状態

クラスターには状態があり、関連づけられているキャパシティプロバイダーの状態によってクラスターの状態も変わってきます。

クラスターには以下のような状態があります。

状態 説明
ACTIVE クラスターにタスクを設定してコンテナインスタンスに登録することができる状態です。
PROVISIONING クラスターがキャパシティプロバイダーに関連付けられていて、キャパシティプロバイダーに必要なリソースが作成されている状態です。
DEPROVISIONING クラスターがキャパシティプロバイダーに関連付けられていて、キャパシティプロバイダーに必要なリソースが削除されている状態です。
FAILED クラスターがキャパシティプロバイダーに関連付けられていて、キャパシティプロバイダーに必要なリソースが作成できなかった状態です。
INACTIVE クラスターが削除されている状態です。

キャパシティプロバイダー

キャパシティプロバイダーはクラスターに関連付けられます。

クラスター内のタスクを実行するときにインフラストラクチャを管理するために、キャパシティプロバイダーは使用されます。

キャパシティプロバイダーは以下のコンポーネントで構成されています。

コンポーネント 説明
キャパシティプロバイダー クラスターに関連付けられます。キャパシティプロバイダーストラテジで使用されて、タスクが実行されるインフラストラクチャを決定します。
デフォルトのキャパシティプロバイダーストラテジ Amazon ECS クラスターに関連付けられています。クラスター内のサービスやタスクが実行されるときにデフォルトで指定されます。
キャパシティプロバイダーストラテジ 1つ以上のキャパシティプロバイダーで構成されていてクラスターに関連づけられます。状態が「ACTIVE」または「UPDATING 」のキャパシティプロバイダーを使用できます。

キャパシティプロバイダーを使用する場合の注意点

キャパシティプロバイダーを使用する場合は、以下のことに注意する必要があります。

・キャパシティプロバイダーは、キャパシティプロバイダーストラテジで指定する前にクラスターに関連付ける必要があります。

・キャパシティプロバイダーに任意のweight値が指定されていない場合、weight値にはデフォルト値の1が指定されます。

・キャパシティプロバイダーストラテジ内に複数のキャパシティプロバイダーを指定する場合は、最低でも1つのキャパシティプロバイダーのweight値が0より大きい必要があります。

・キャパシティプロバイダーストラテジでは、1つのキャパシティプロバイダーのみがベース値を定義できます。

・キャパシティプロバイダーストラテジには、オートスケーリンググループキャパシティプロバイダーかFargateキャパシティプロバイダーのどちらか1つしか含めることができません。

クラスターの作成


クラスターはAWSマネジメントコンソールを使用して作成できます。

以下の手順でクラスターを作成します。

①AWSマネジメントコンソールにログインします。
②ナビゲーションから、クラスターを作成したいリージョンを選択します。
③[クラスター] を選択します。
④クラスターのページで、[クラスターの作成] を選択します。
⑤[クラスターの互換性を選択]から任意のオプションを選択して、[次のステップ]を選択します。

クラスターの削除


クラスターはAWSマネジメントコンソールを使用して削除できます。

以下の手順でクラスターを削除します。

①AWSマネジメントコンソールにログインします。
②ナビゲーションから、削除したいクラスターがあるリージョンを選択します。
③[クラスター] を選択します。
④クラスターのページで、削除するクラスターを選択します。
⑤[クラスターの削除] を選択します。

クラスターに複数のタスクが登録されていて、実行中のタスクがある場合、クラスターの削除時にエラーメッセージが表示されることがあります。

エラーメッセージが表示された場合は、クラスターに登録されているタスクをすべて停止してからクラスターの削除を実施してください。

クラスターのオートスケーリング


クラスターのオートスケーリングを使用することで、クラスター内のAWS EC2インスタンスをスケールする方法をより詳細に制御できます。

各クラスターには、1つ以上のオートスケーリンググループキャパシティプロバイダーがあります。またクラスターにはキャパシティプロバイダーストラテジがオプションとしてデフォルトで関連付けられています。

キャパシティプロバイダーは、タスクに使用するインフラストラクチャを決定します。

タスクやサービスを実行するときは、クラスターにデフォルトで関連付けられているオートスケーリンググループキャパシティプロバイダーストラテジを使用するか、ほかのキャパシティプロバイダーストラテジを使用するかを指定できます。

クラスターのオートスケーリングを使用する場合には、以下のことに注意する必要があります。

・AWSオートスケーリングを呼び出すために「AWSServiceRoleForECS」サービスにリンクされたIAM ロールを使用するためのアクセス許可が必要です。

・オートスケーリンググループでキャパシティプロバイダーを使用する場合は、オートスケーリンググループとキャパシティプロバイダーの関連付けのときにタグを追加するため、「autoscaling:CreateOrUpdateTags」のアクセス許可が必要です。

・オートスケーリンググループが同じインスタンスタイプを使用している場合には、マネージドスケーリングを有効にすることで、最適なインスタンス数の下限を適用してくれます。

・オンデマンドインスタンスと複数のインスタンスタイプを持つオートスケーリンググループを使用する場合は、大きいインスタンスタイプを優先順位リストで上位に配置してください。ウェイトの指定はサポートされていないため、ウェイトを指定しないでください。

クラスター設定の更新


クラスター設定を使用して既存のクラスターのパラメータを設定できます。

クラスター設定は、Amazon ECS APIやAWS CLIまたはSDKを使用して更新できます。ここでは、AWS CLIを使用して更新する方法を解説します。

クラスターの設定を更新するには、update-cluster-settings コマンドを使用します。

aws ecs update-cluster-settings --cluster [クラスター名] --settings name=[containerInsights],value=[enabled|disabled] --region [us-east-1]

コマンドオプションの詳細は以下の通りです。

オプション 説明
–cluster クラスターの名前を指定します。
–settings [name] クラスター設定の名前を指定します。現在サポートされている値はcontainerInsightsのみです。
–settings [value] クラスター設定に設定する値を指定します。enabledが指定された場合は、コンテナインスタンスはクラスターに対して有効になります。
–region クラスターがあるリージョンを指定します。

クラスターの理解を深めてAWSを効率的に管理・運用してみよう!


クラスターを理解して適切な構成や設定をすることで、AWSサービスの管理、運用を効率化することができます。

環境構築やデプロイ作業におけるヒューマンエラーを防ぎ、タスクやサービスの起動・停止を適切に管理することで、開発から本番運用までのすべてのフェーズで効率的な運用を実現できます。

覚えることが多くて大変ですが、ぜひ頑張ってクラスターの理解を深めて効率的な管理・運用を目指しましょう!

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
お悩み診断を始める