多数の従量課金のECS (Elastic Compute Service) インスタンスを作成する場合は、API操作を呼び出して、より効率的な方法でインスタンスをバッチ作成できます。 このトピックでは、JavaコードをコンパイルしてCreateAutoProvisioningGroup操作を呼び出すことにより、従量課金ECSインスタンスを一括作成する方法について説明します。 このトピックでは、RunInstances操作とCreateAutoProvisioningGroup操作の機能、利点、および欠点の違いについても説明します。
背景情報
RunInstances
操作は、従量課金ECSインスタンスの作成に一般的に使用されます。 操作を呼び出して、最大100個のECSインスタンスを一括作成できます。 ただし、100を超えるECSインスタンスを一括作成する場合は、RunInstances
操作を呼び出すときに技術的なボトルネックが発生する可能性があります。 詳細については、このトピックの「RunInstances操作の使用による可能な問題」をご参照ください。
RunInstances
操作を使用して発生する技術的なボトルネックに精通している場合は、前のセクションをスキップしてください。
100を超えるECSインスタンスをバッチ作成できるようにするために、Alibaba Cloudは自動プロビジョニンググループを提供しています。 CreateAutoProvisioningGroup
操作を呼び出して、自動プロビジョニンググループを作成し、そのグループを使用して、数回クリックするだけで課金方法、インスタンスファミリー、ゾーン間でインスタンスクラスターをデプロイできます。 多数のECSインスタンスを一括作成する場合は、RunInstances
操作よりもCreateAutoProvisioningGroup
操作の方が適しています。 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
操作の制限により、操作を呼び出してインスタンスを作成するときに次の問題が発生する場合があります。
問題 | 説明 | 解決策 |
限られた数のインスタンスをバッチ作成できます。 | RunInstances操作を呼び出して、最大100個のECSインスタンスを一括作成できます。 | 100を超えるECSインスタンスを作成する場合は、この操作を複数回、周期的または同時に呼び出す必要があります。 |
バッチ作成インスタンスの成功率は保証されていません。 | RunInstances操作を呼び出してインスタンスをバッチ作成するたびに、操作は単一のインスタンスタイプと単一のゾーンのみをサポートします。 インスタンスをバッチ作成する操作を呼び出すと、次の問題が発生する可能性があります。
|
|
インスタンスの作成に使用される単純なポリシーは、多様なビジネス要件を満たすことができません。 | RunInstances操作を使用すると、単一のゾーンに単一のインスタンスタイプのインスタンスのみを作成できます。 ジオディザスタリカバリを実装するために、または最小限のコストで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コアライブラリをインストールします。
詳細については、「ECS SDK For Javaのインストール」をご参照ください。
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"); // Configure the policy that is used to create preemptible instances. request.setSpotAllocationStrategy("lowest-price"); request.setSpotInstancePoolsToUseCount(spotInstancePoolsToUseCount); // Configure the policy that is used to create pay-as-you-go instances. request.setPayAsYouGoAllocationStrategy("prioritized"); request.setMaxSpotPrice(maxSpotPrice); // Configure up to 10 combinations of instance types and zones. 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つの組み合わせを使用してインスタンスをバッチ作成しようとします。その組み合わせを使用して十分なインスタンスを作成できない場合、システムはインスタンスタイプとゾーンの別の組み合わせを使用してインスタンスをバッチ作成します。 ベストエフォート型インスタンスの作成方法には長期間が必要であり、作成結果が設定した作成ポリシーから逸脱する場合があります。