多数の従量課金制 Elastic Compute Service (ECS) インスタンスを作成する場合、API 操作を呼び出して、より効率的にインスタンスを一括作成できます。このトピックでは、Java コードをコンパイルして CreateAutoProvisioningGroup
操作を呼び出すことにより、従量課金制の ECS インスタンスを一括作成する方法について説明します。また、RunInstances
操作と CreateAutoProvisioningGroup
操作の機能、長所、短所の違いについても説明します。
背景情報
RunInstances
操作は、従量課金制の ECS インスタンスの作成によく使用されます。この操作を呼び出すことで、最大 100 個の ECS インスタンスを一括作成できます。ただし、100 個を超える ECS インスタンスを一括作成する場合、RunInstances
操作を呼び出すと、技術的なボトルネックが発生する可能性があります。詳細については、このトピックの「RunInstances 操作を使用した場合に発生する可能性のある問題」セクションをご参照ください。
RunInstances
操作の呼び出しによって発生する技術的なボトルネックを理解している場合は、前のセクションをスキップしてください。
100 個を超える ECS インスタンスを一括作成できるようにするために、Alibaba Cloud は自動プロビジョニンググループを提供しています。CreateAutoProvisioningGroup
操作を呼び出して自動プロビジョニンググループを作成し、そのグループを使用して、数回のクリックで課金方式、インスタンスファミリ、ゾーンをまたいでインスタンス クラスタをデプロイできます。多数の ECS インスタンスを一括作成する場合、CreateAutoProvisioningGroup
操作は、RunInstances
操作よりも適しています。2 つの操作の違いと利点については、このトピックの「RunInstances と CreateAutoProvisioningGroup の違い」セクションと「自動プロビジョニンググループの利点」セクションをご参照ください。
RunInstances と CreateAutoProvisioningGroup の違い
次の表は、ECS インスタンスを作成するための適切な操作を選択するのに役立つ、RunInstances 操作と CreateAutoProvisioningGroup 操作の機能の違いを示しています。
項目 | RunInstances | CreateAutoProvisioningGroup |
一括作成できるインスタンスの最大数 | 100 | 1,000 (最大 10,000 vCPU) |
キャパシティ提供方法 | インスタンスの特定の数 | インスタンスの特定の数、vCPU の特定の数、および異なる重みのインスタンスタイプ。 |
複数ゾーンのサポート | いいえ。 | はい。 |
複数インスタンスタイプのサポート | いいえ。 | はい。 |
複数ディスクカテゴリのサポート | いいえ。 | はい。 |
インスタンスの作成に使用できるポリシーのプロビジョニング | いいえ。 | はい。次のポリシーが提供されています。
|
配信の安定性 | リソースの可用性の影響を受けます。 | インスタンスタイプとゾーンの複数の組み合わせにより、リソースの可用性の影響が軽減されます。 |
応答方法 | リアルタイムで応答を返します。 | リアルタイムで応答を返します。 |
次のサンプル シナリオでは、RunInstances
操作の代わりに CreateAutoProvisioningGroup
操作を使用して ECS インスタンスを作成する方法について説明します。
単一のゾーンで単一のインスタンスタイプのインスタンスを一括作成するために、
RunInstances
操作を呼び出しました。代わりにCreateAutoProvisioningGroup
操作を呼び出してインスタンスを一括作成する場合、インスタンスタイプとゾーンの組み合わせを設定するだけで済みます。インスタンスを一括作成するために
RunInstances
操作を呼び出すときに、ビジネス デプロイメント プランを設定しました。代わりに、CreateAutoProvisioningGroup
操作を呼び出して、自動プロビジョニングによって提供されるさまざまなインスタンス プロビジョニング ポリシーに基づいて、複数のカテゴリのディスクが接続されたインスタンスを複数のインスタンスタイプとゾーンにデプロイできます。たとえば、インスタンスの作成成功率を向上させるために、
RunInstances
操作を呼び出すときに、複数のインスタンスタイプとゾーンを走査するビジネス デプロイメント プランを手動で設定しました。代わりにCreateAutoProvisioningGroup
操作を呼び出して多数のインスタンスを一括作成する場合、インスタンスタイプとゾーンの複数の組み合わせを設定し、適切なポリシーを選択するだけで済みます。作成された自動プロビジョニンググループは、指定された設定とポリシーに基づいてインスタンスを自動的に一括作成します。
インスタンスを作成するために自動プロビジョニンググループに使用されるポリシーには制限が適用されます。同時に最大 1,000 個のインスタンスを作成できます。WeightedCapacity
パラメーターを使用して、指定された各インスタンスタイプの重みを指定する場合、毎回作成される最大加重キャパシティは 10,000 です。
RunInstances 操作を使用した場合に発生する可能性のある問題
RunInstances
操作の制限により、インスタンスを作成するために操作を呼び出すときに、次の問題が発生する可能性があります。
問題 | 説明 | 解決策 |
一括作成できるインスタンスの数が限られています。 |
| 100 個を超える ECS インスタンスを作成する場合、この操作を循環的または同時的に複数回呼び出す必要があります。 |
インスタンスの一括作成の成功率は保証されません。 | インスタンスを一括作成するために
|
|
インスタンスの作成に使用される単純なポリシーは、多様なビジネス要件を満たすことができません。 |
| 問題を解決するには、Alibaba Cloud にお問い合わせください。 |
自動プロビジョニンググループの利点
Alibaba Cloud は、RunInstances
操作を呼び出して ECS インスタンスを一括作成するときに発生する可能性のある問題に対処するために、自動プロビジョニンググループを提供しています。自動プロビジョニンググループを使用すると、数回のクリックで課金方式、インスタンスファミリ、ゾーンをまたいでインスタンス クラスタをデプロイできます。自動プロビジョニンググループは安定したコンピューティング能力を提供し、スポットインスタンスの回収メカニズムによる不安定性を軽減し、インスタンスを手動で作成する必要性をなくします。次の表は、自動プロビジョニンググループの利点を示しています。
利点 | 説明 |
多数の ECS インスタンスの一括作成 | 自動プロビジョニンググループを使用して、最大 1,000 個の ECS インスタンスを一括作成できます。 |
インスタンスタイプとゾーンをまたいで複数のカテゴリのディスクが接続されたインスタンスの作成 | 自動プロビジョニンググループを使用すると、インスタンスタイプとゾーンの最大 10 個の組み合わせを設定し、最大 5 つのディスクカテゴリを選択できるため、インスタンスの一括作成の可用性が高くなります。 サンプル シナリオ: 自動プロビジョニンググループによって提供されるバランス分散ポリシーに基づいて ECS インスタンスを作成する場合、複数のインスタンスタイプとゾーンを設定できます。ポリシーで要求されているように、インスタンスはゾーン全体で比較的バランスの取れた方法で作成する必要があります。ただし、必要な数のインスタンスをゾーンに作成できない場合、自動プロビジョニンググループは他のゾーンに同じ数のインスタンスを作成しようとします。 複数のディスクカテゴリを指定すると、自動プロビジョニンググループはディスクカテゴリの優先順位に基づいてインスタンスのディスクを作成し、ディスクカテゴリが使用できない場合はディスクカテゴリを変更します。 説明 すべてのディスクカテゴリが使用できない場合、自動プロビジョニンググループは別の作成方法を選択します。 |
インスタンスを作成するための複数ポリシーのサポート | 自動プロビジョニンググループは、インスタンスを作成するための次のポリシーを提供します。
|
スポットインスタンスの可用性の向上 | スポットインスタンスの価格は変動し、保護期間の経過後に入札価格が現在の市場価格よりも低くなるとインスタンスが回収されるため、スポットインスタンスの需要は価格の優位性のために増加しています。したがって、スポットインスタンスは管理が困難です。自動プロビジョニンググループは、低コストのままスポットインスタンスの可用性を向上させるのに役立ちます。次の項目では、スポットインスタンスの可用性を向上させる方法について説明します。
|
CreateAutoProvisioningGroup 操作を呼び出して自動プロビジョニンググループを作成するためのベスト プラクティス
このセクションでは、自動プロビジョニンググループ (CreateAutoProvisioningGroup
) を作成するために使用される Java コードのサンプルを提供します。また、CreateAutoProvisioningGroup
操作を呼び出す方法についても説明します。
ECS SDK for Java と Alibaba Cloud SDK コア ライブラリをインストールします。
詳細については、「SDK の概要」をご参照ください。
CreateAutoProvisioningGroup
操作を呼び出すために使用される Java コードをコンパイルします。サンプルコード:
CreateAutoProvisioningGroupRequest request = new CreateAutoProvisioningGroupRequest(); request.setRegionId(regionId); request.setLaunchConfigurationImageId(RequestHelper.IMAGE_ID); request.setLaunchConfigurationSecurityGroupId(securityGroupId); request.setTotalTargetCapacity(totalTargetCapacity); request.setPayAsYouGoTargetCapacity(payAsYouGoTargetCapacity); request.setSpotTargetCapacity(spotTargetCapacity); request.setLaunchConfigurationSystemDiskCategory("cloud_ssd"); request.setLaunchConfigurationSystemDiskSize(40); request.setAutoProvisioningGroupType("instant"); // スポットインスタンスを作成するために使用されるポリシーを設定します。 request.setSpotAllocationStrategy("lowest-price"); request.setSpotInstancePoolsToUseCount(spotInstancePoolsToUseCount); // 従量課金制インスタンスを作成するために使用されるポリシーを設定します。 request.setPayAsYouGoAllocationStrategy("prioritized"); request.setMaxSpotPrice(maxSpotPrice); // インスタンスタイプとゾーンの最大 10 個の組み合わせを設定します。 request.setLaunchTemplateConfigs(launchTemplateConfigs); request.setClientToken(clientToken); CreateAutoProvisioningGroupResponse response = client.getAcsResponse(request);
JSON 形式のサンプル応答:
{ "autoProvisioningGroupId":"apg-****", "launchResults":[ { "instanceIds":[ "i-****" ], "instanceType":"ecs.c5.large", "spotStrategy":"NoSpot", "zoneId":"cn-shanghai-b" }, { "instanceIds":[], "instanceType":"ecs.c5.large", "spotStrategy":"NoSpot", "zoneId":"cn-shanghai-b", "errorCode" : "Invalid.Parameter", "errorMsg" : "Specific Parameter 'imageId' is not valid" } ], "requestId":"20DA1E9F-BF7F-4BE7-8204-E4DE58E4FC7B" }
自動プロビジョニンググループを作成するために
CreateAutoProvisioningGroup
操作を呼び出すときは、インスタンスを一括作成するために使用される項目を設定します。作成プロセスについて心配する必要はありません。自動プロビジョニンググループは、ベストエフォート方式でインスタンスを作成します。説明ベストエフォート方式では、システムは 1 つの組み合わせを使用してインスタンスを一括作成しようとします。組み合わせを使用して十分な数のインスタンスを作成できない場合、システムはインスタンスタイプとゾーンの別の組み合わせを使用してインスタンスを一括作成します。ベストエフォート インスタンス作成方法には長い時間がかかり、作成結果は設定した作成ポリシーから逸脱する可能性があります。