デプロイメントセットを設定することで、Elastic Compute Service (ECS) インスタンスの配置を制御し、物理サーバ上の単一障害点を軽減したり、高頻度取引などのアプリケーションで求められる超低遅延の要件を満たすことができます。インスタンスを分散させてフォールトトレランスを向上させる高可用性ストラテジーか、インスタンスを併置してネットワーク通信を高速化する低遅延ストラテジーを選択できます。
制限事項
-
デプロイメントセット内に専用ホストを作成することはできません。
-
リージョンとゾーンの制限:インスタンスとそのデプロイメントセットは、同じリージョンに存在する必要があります。低遅延ストラテジーを使用するデプロイメントセットの場合、すべてのインスタンスが同じゾーンに存在する必要があります。
-
インスタンスファミリーの制限:第 6 世代以降のほとんどのインスタンスファミリーは、高可用性ストラテジー、高可用性グループストラテジー、および低遅延ストラテジーを使用するデプロイメントセットをサポートしています。
クイックスタート
ステップ 1:デプロイメントセットの作成
コンソール
ECS コンソール - デプロイメントセット に移動します。
ページの左上隅で、リージョンとリソースグループを選択します。
-
デプロイメントセット ページで、デプロイメントセットの作成 をクリックします。
-
デプロイメントセットの作成 ダイアログボックスで、名前と説明を入力し、ストラテジーを選択します。高可用性戦略を選択した場合は、デプロイメントタイプ (物理サーバ、ラック、またはスイッチ) およびアフィニティ (1-10) も設定できます。デプロイメント戦略の選択方法
API
CreateDeploymentSet オペレーションを呼び出して、指定したリージョンにデプロイメントセットを作成し、そのデプロイメントストラテジーを設定します。
-
高可用性グループストラテジーの場合、
GroupCountパラメーターを指定してグループ数を設定します。 -
高可用性ストラテジーの場合、
Typeパラメーターを指定してデプロイメントタイプ (host、rack、またはsw) を設定します。デフォルト値はhostです。 -
高可用性ストラテジーの場合、
Affinityパラメーターを指定してアフィニティレベル (1~10) を設定します。デフォルト値は 1 です。
ステップ 2:インスタンスの作成または追加
コンソール
インスタンスタイプ、リージョン、および ECS インスタンスの数は、制限事項に準拠する必要があります。詳細については、「制限事項」をご参照ください。
-
デプロイメントセットに新しいインスタンスを作成する:
デプロイメントセットの一覧ページで、対象のデプロイメントセットを見つけます。操作 列で、インスタンスの作成 をクリックします。[カスタム起動] ページで、インスタンスの構成を完了します。
-
既存のインスタンスをデプロイメントセットに追加する:「インスタンスのデプロイメントセットの変更」をご参照ください。
API
-
デプロイメントセットに新しいインスタンスを作成する:RunInstances オペレーションを呼び出し、
DeploymentSetIdパラメーターを指定します。 -
既存のインスタンスをデプロイメントセットに追加する:ModifyInstanceDeployment オペレーションを呼び出し、
InstanceIdおよびDeploymentSetIdパラメーターを指定します。説明指定したデプロイメントセットが
AvailabilityGroupストラテジー (高可用性グループストラテジー) を使用している場合、DeploymentSetGroupNoパラメーターを使用して、デプロイメントセット内のインスタンスのグループ番号を指定できます。
デプロイメントストラテジー
デプロイメントストラテジーは、ECS インスタンスが物理サーバ上にどのように配置されるかを決定します。高可用性、ネットワーク遅延、およびデプロイメント規模の要件に応じてストラテジーを選択できます。
|
シナリオ |
推奨ストラテジー |
主な制限事項 |
|
厳密な障害分離が必要な小規模クラスター |
高可用性ストラテジー |
ゾーンあたり最大 20 インスタンス |
|
グループベースの分離を伴う大規模デプロイメント |
高可用性グループストラテジー |
最大 7 グループ、各ゾーンのグループあたり最大 20 インスタンス |
|
低ネットワーク遅延 |
低遅延ストラテジー |
すべてのインスタンスは同じゾーンに存在する必要があります。インスタンスの最大数は 20 です。 |
高可用性ストラテジー
インスタンスを異なる物理サーバ、ラック、またはスイッチに分散させることで、単一障害点による複数インスタンスの利用不可を防ぎます。
スイッチレベルなど、分散の粒度が細かいほどフォールトトレランスは向上しますが、インスタンスの作成に失敗する可能性も高くなります。現在のゾーンに分散要件を満たすのに十分な個別の物理サーバ、ラック、またはスイッチがない場合、インスタンスの作成は失敗します。この場合、しばらく待ってから再試行するか、別のゾーンを選択してください。
-
ユースケース:Hadoop 分散コンピューティングクラスターや SQL データベースクラスターなど、高いサービス継続性と分離が求められる小規模デプロイメント。
-
ゾーン:インスタンスは異なるゾーンにまたがってデプロイメントできます。
-
インスタンス制限:単一ゾーン内のインスタンスの最大数は、デプロイメントタイプとアフィニティ設定によって異なります。
デプロイメントタイプ
デプロイメントタイプは、デプロイメントセット内で ECS インスタンスを分散させるディメンションを指定します。有効な値を次の表に示します。
|
値 |
展開ディメンション |
説明 |
|
|
物理サーバ |
インスタンスは異なる物理サーバに分散され、単一のサーバ障害が複数のインスタンスに影響を与えるのを防ぎます。 |
|
|
ラック |
インスタンスは異なるラックに分散され、ラックの電源障害による大規模なインスタンスの利用不可リスクを軽減します。 |
|
|
スイッチ |
インスタンスは異なるスイッチに分散され、スイッチの障害によるネットワーク中断のリスクを軽減します。 |
アフィニティ
アフィニティは、物理サーバごとに許可されるインスタンスの最大数を定義します。値は 1 から 10 までの整数です。デフォルト値は 1 です。
-
アフィニティが 1 の場合は厳密な分散が適用され、各物理サーバは最大 1 つのインスタンスしかホストできません。
-
アフィニティが 1 より大きい場合はベストエフォート型の分散が提供され、ある程度の障害分離を必要とする多数のインスタンスを持つシナリオに適しています。
次の例は、host デプロイメントタイプのアフィニティがインスタンスの配置にどのように影響するかを示しています。
シナリオ 1:デプロイメントセットに基づいてインスタンスを作成する
アフィニティが 2 の host タイプのデプロイメントセットを作成し、そのセット内に 3 つの ECS インスタンスを作成します。システムはアフィニティの制約に基づいてインスタンスを異なる物理サーバに分散させ、各物理サーバは最大 2 つのインスタンスをホストします。
シナリオ 2:デプロイメントセットのアフィニティを増やす
既存のデプロイメントセットのアフィニティを 1 から 2 に増やすと、1 つの物理サーバでより多くのインスタンスをホストできるようになり、将来のスケーリングのためのスペースが確保されます。既存のインスタンスは移行されません。
インスタンス制限
デプロイメントタイプとアフィニティによって、デプロイメントセットのインスタンス制限が決まります。
|
デプロイメントタイプ |
アフィニティ |
ゾーンごとの 制限 |
|
|
1-10 |
20 インスタンス |
|
|
1-10 |
20 インスタンス |
|
|
1-10 |
20 インスタンス |
高可用性グループストラテジー
インスタンスを複数のグループ (最大 7) に割り当てます。異なるグループのインスタンスは異なる物理サーバに厳密に分散されますが、同じグループ内のインスタンスは併置されることがあります。
異なるグループの ECS インスタンスは、単一障害点を避けるために、指定されたリージョン内の別々の物理サーバに厳密に配置されます。同じグループ内のインスタンスは分散される保証はなく、ネットワーク遅延を減らすために同じ物理サーバに配置される場合があります。
DescribeInstances オペレーションを呼び出して、デプロイメントセット内のインスタンスのグループ番号 (DeploymentSetGroupNo) をクエリできます。HDFS や Cassandra などの分散アプリケーションは、このグループ番号を使用してインテリジェントなレプリカ配置の決定を行い、異なるレプリカが異なるグループに配置されるようにします。これにより、グループレベルの障害が発生した場合でもデータの可用性が維持されます。
-
ユースケース:Redis のプライマリ/レプリカレプリケーションや Nginx の負荷分散など、組み込みの高可用性メカニズムを持つサービスに対して、特に高い分離が求められる大規模デプロイメント。
-
ゾーン:インスタンスは異なるゾーンにまたがってデプロイメントできます。
-
インスタンス制限:単一ゾーンのグループあたり最大 20 インスタンス、ゾーンあたり最大 7 グループ。
低遅延ストラテジー
インスタンスを同じネットワークトポロジー内に併置し、インスタンス間のネットワーク通信遅延を最小限に抑えます。
このストラテジーは、高可用性と引き換えに低遅延を実現します。複数のインスタンスが同じ物理サーバに配置される可能性があります。アプリケーションにマルチコピーレプリケーションやプライマリ/セカンダリフェールオーバーなど、独自の高可用性メカニズムが組み込まれていることを確認してください。
-
ユースケース:ハイパフォーマンスコンピューティング (HPC)、リアルタイムデータ分析、AI 推論など、ネットワーク遅延に非常に敏感なアプリケーション。
-
ゾーン:すべてのインスタンスは同じゾーンにデプロイメントする必要があります。
-
インスタンス制限:インスタンスの最大数は 20 です。
-
容量不足:同じネットワークトポロジー内で十分なリソースが利用できない場合、インスタンスの作成は失敗します。しばらく待ってから再試行するか、サポートに連絡してリソースの可用性を確認することを推奨します。
その他の操作
インスタンスのデプロイメントセットの変更
ECS インスタンスのデプロイメントセットを変更して、別のセットに移動したり、未割り当てのインスタンスをセットに追加したりできます。
コンソール
ECS コンソール - インスタンス に移動します。
ページの左上隅で、リージョンとリソースグループを選択します。
-
ターゲットインスタンスの ID をクリックして、インスタンス詳細ページに移動します。すべての操作 をクリックしてすべての操作を展開し、 を検索してクリックします。
-
デプロイメントセットの変更 ダイアログボックスで、ターゲットデプロイメントセットを選択し、強制変更 を設定します。
-
はい:インスタンスの物理サーバの変更を許可します。この操作によりインスタンスが再起動され、サービス継続性に影響する可能性があります。このオプションは注意して使用してください。
-
いいえ:インスタンスの物理サーバを変更しません。このオプションは、インスタンスを指定されたデプロイメントセットに追加しようとします。これにより再起動のリスクは回避されますが、インスタンスが新しいデプロイメントセットの要件を満たさない場合、変更は失敗します。
-
API
ModifyInstanceDeployment オペレーションを呼び出し、次のパラメーターを指定してインスタンスのデプロイメントセットを変更します。
-
RegionId:インスタンスが存在するリージョン。例:中国 (杭州) の場合は
cn-hangzhou。 -
InstanceId:インスタンスの ID。例:
i-bp67acfmxazb4ph***。 -
DeploymentSetId:ターゲットのデプロイメントセットの ID。例:
ds-bp67acfmxazb4ph****。 -
Force:デプロイメントセットを変更する際に物理サーバの変更を強制するかどうかを指定します。有効な値:
-
true:インスタンスの物理サーバの変更を許可します。この操作によりインスタンスが再起動され、サービス継続性に影響する可能性があります。このオプションは注意して使用してください。
-
false (デフォルト):インスタンスの物理サーバを変更しません。このオプションは、インスタンスを指定されたデプロイメントセットに追加しようとします。これにより再起動のリスクは回避されますが、インスタンスが新しいデプロイメントセットの要件を満たさない場合、変更は失敗します。
-
デプロイメントセットからインスタンスを削除
デプロイメントセットを削除する際にインスタンスを保持するには、まずインスタンスを削除する必要があります。インスタンスは削除後も元の状態を維持します。
-
ModifyInstanceDeployment オペレーションを呼び出し、次のパラメーターを指定してインスタンスをデプロイメントセットから削除します。
-
RegionId:インスタンスが存在するリージョン。例:中国 (杭州) の場合は
cn-hangzhou。 -
InstanceId:インスタンスの ID。例:
i-bp67acfmxazb4ph***。 -
DeploymentSetId:デプロイメントセットの ID。例:
ds-bp67acfmxazb4ph****。 -
RemoveFromDeploymentSet:選択したインスタンスをデプロイメントセットから削除するかどうかを指定します。値を
trueに設定します。
-
-
インスタンスが削除されたことを確認する:API 呼び出しが成功し、状態コード 200 が返された場合、削除は成功です。
デプロイメントセットの変更または削除
ECS コンソール - デプロイメントセット ページに移動し、対象のデプロイメントセットを見つけ、「操作」列で情報の変更 または 削除 をクリックします。 画面の指示に従って操作を完了します。
-
デプロイメントセットの変更:デプロイメントセットの名前と説明を変更できます。
-
デプロイメントセットの削除:デプロイメントセットが不要になった場合は、リソースを占有しないように削除できます。
重要デプロイメントセットを削除する前に、インスタンスが含まれていないことを確認してください。インスタンスが存在する場合、デプロイメントセットを削除する前に、それらをデプロイメントセットから削除する必要があります。詳細については、「インスタンスのデプロイメントセットの変更」または「デプロイメントセットからインスタンスを削除」をご参照ください。
制限事項
リージョンでの需要が高い期間中、ECS インスタンスの作成や、エコノミーモードでの従量課金 ECS インスタンスの再起動が失敗することがあります。ほとんどの場合、しばらく待ってから再試行することで解決できます。詳細については、「エコノミーモード」をご参照ください。
-
デプロイメントセットのクォータ:各 Alibaba Cloud アカウントが所有できるデプロイメントセットの数には制限があります。クォータは クォータセンター で確認できます。
-
デプロイメントタイプ (Type) は変更不可:デプロイメントセットが作成された後、そのデプロイメントタイプは変更できません。デプロイメントタイプを変更するには、新しいデプロイメントセットを作成し、インスタンスを移行する必要があります。
-
アフィニティ変更のルール:
-
アフィニティを増やす:この設定は制限なく直接変更できます。デプロイメントタイプが
hostの場合、アフィニティを増やすとインスタンスの最大数も増える可能性があります。 -
アフィニティを減らす:アフィニティを変更する前に、まずデプロイメントセットからすべてのインスタンスを削除する必要があります。
-
-
デプロイメントセットはマージできません。
課金
デプロイメントセット機能は無料です。課金対象は、ECS インスタンス、ディスク、スナップショット、イメージ、パブリック帯域幅など、使用したリソースのみです。詳細については、「課金概要」をご参照ください。