スポットインスタンスのキューの設計 - Amazon GameLift

スポットインスタンスのキューの設計

ゲームセッションキューを作成して、ゲームホスティングソリューションにスポットフリートを追加します。スポットインスタンスとスポットインスタンスによるホスティングの大幅なコスト削減方法に関する詳細については、「オンデマンドインスタンスとスポットインスタンスの比較」を参照してください。スポットインスタンスによるホスティングコスト削減のメリットを最大限に活用するには、ゲームセッションキューを作成して、スポットインスタンス、オンデマンドインスタンス、またはその両方を使用するように Amazon GameLift マネージドフリートを設定します。Amazon GameLift でスポットインスタンスを使用する方法の詳細については、「」を参照してください。スポットフリートを使用するには、ゲーム統合でこのページに記載されている調整を行う必要があります。

マッチメーキングのために FlexMatch を使用していますか? マッチメイキングを配置する既存のゲームセッションキューにスポットフリートを追加できます。

  1. ゲームセッションキューの送信先を決定します。

    キューを使用したゲームセッションプレイスメントの管理はベストプラクティスであり、スポットインスタンスを使用する場合は必須です。スポットインスタンスは必要なときに常に利用できるわけではないため、バックアップ容量を提供するために、スポットフリートとオンデマンドフリートの両方を含む回復力のあるキューを設計する必要があります。オンデマンドフリートは、必要になるまでスケールダウンしたままにできます。キューを設計するには、以下の点を考慮します。

    • 場所 – プレイヤーに近い地理的な場所を選択します。スポットフリートとオンデマンドフリートは、

    • インスタンスタイプ – ゲームサーバーのハードウェア要件と、選択した場所におけるインスタンスの可用性を考慮します。

    スポットの可用性と復元性を最適化するキューの設計については、「チュートリアル: スポットインスタンスを使用して Amazon GameLift キューを作成する」を参照してください。スポット設計のベストプラクティスについては、「Amazon GameLift ゲームセッションキューのベストプラクティス」を参照してください。

  2. スポット最適化キューのフリートを作成します。

    キューの設計に基づいて、ゲームサーバーを希望の場所とインスタンスタイプにデプロイするフリートを作成します。新しいフリートの作成および設定のヘルプについては、「Amazon GameLift マネージド EC2 フリートを作成する」を参照してください。

  3. ゲームセッションキューを作成します。

    フリートの送信先を追加し、ゲームセッションの配置プロセスを設定し、配置の優先順位を定義します。新しいキューの作成および設定のヘルプについては、「ゲームセッションキューを作成する」を参照してください。

  4. キューを使用するようにゲームクライアントサービスを更新します。

    ゲームクライアントがキューを使用してリソースをリクエストすると、キューは中断される可能性が高いリソースを避け、定義した優先順位に合ったロケーションを選択します。ゲームクライアントにゲームセッション配置を実装する方法については、「ゲームセッションを作成する」を参照してください。

  5. ゲームサーバーでスポットの中断を処理するように更新します。

    AWS は、キャパシティを戻す必要がある場合、2 分前に通知することでスポットインスタンスを中断できます。プレイヤーへの影響を最小限に抑えるため、中断を処理するようにゲームサーバーをセットアップします。

    AWS がスポットインスタンスを再要求する前に、終了通知を送信します。Amazon GameLift は、Amazon GameLift サーバー SDK コールバック関数 onProcessTerminate() を呼び出して、影響を受けるすべてのサーバープロセスに通知を渡します。このコールバックを実装して、ゲームセッションを終了するか、ゲームセッションとプレイヤーを新しいインスタンスに移動します。onProcessTerminate() の実装のヘルプについては、「サーバープロセスのシャットダウン通知に応答する」トラブルシューティングを参照してください。

    注記

    AWS は、インスタンスを再要求する前に、通知を処理するようにしますが、警告が届く前に、AWS がスポットインスタンスを再要求する可能性もあります。ゲームサーバーで予期しない中断を処理できるように準備します。

  6. スポットフリートとキューのパフォーマンスを評価します。

    Amazon GameLift コンソールまたは Amazon CloudWatch で Amazon GameLift メトリクスを表示して、パフォーマンスを確認できます。Amazon GameLift メトリクスの詳細については、「Amazon CloudWatch で Amazon GameLift をモニタリングする」を参照してください。主なメトリクスには次のものがあります。

    • 中断率 – スポットフリートのインスタンスとゲームセッションについてスポットに関連した中断の回数と頻度を追跡する InstanceInterruptions および GameSessionInterruptions メトリクスを使用します。AWS が再要求したゲームセッションのステータスは、TERMINATED で、ステータス理由は INTERRUPTED です。

    • キューの有効性 – プレイスメントの成功率、平均待機時間、キューの深度などのキューメトリクスを追跡し、スポットフリートによってキューのパフォーマンスに影響が出ないことを確認します。

    • フリート使用率 – インスタンス、ゲームセッションおよびプレイヤーセッションをモニタリングします。オンデマンドフリートの使用率は、中断を避けるためにキューがスポットフリートへのプレイスメントを避けている指標になります。

スポットフリートを使用したキューのベストプラクティス

キューにスポットフリートが含まれている場合は、耐障害性のあるキューを設定してください。スポットフリートによるコスト削減を生かしつつ、ゲームセッションの中断の影響を最小限に抑えます。スポットフリートで使用するためのフリートとゲームセッションキューを正しく構築する方法については、「チュートリアル: スポットインスタンスを使用して Amazon GameLift キューを作成する」を参照してください。スポットインスタンスの詳細については、「スポットインスタンスのキューの設計」を参照してください。

前のセクションの一般的なベストプラクティスに加えて、次のスポット固有のベストプラクティスも考慮してください。

  • 各ロケーションに少なくとも ひとつのオンデマンドフリートを作成します。オンデマンドフリートはプレイヤーにバックアップゲームサーバーを提供します。バックアップフリートが必要になるまでスケールダウンし、スポットフリートが利用できないときにはオートスケーリングを使用してオンデマンドの容量を増やすことができます。

  • ロケーション内の複数のスポットフリートで異なるインスタンスタイプを選択します。1 つのスポットインスタンスタイプが一時的に使用できなくなった場合でも、中断はロケーション内のひとつのスポットフリートにのみ影響します。ベストプラクティスとしては、広く利用可能なインスタンスタイプを選択し、同じファミリのインスタンスタイプを使用します (たとえば、m5.large、m5.xlarge、m5.2xlarge)。Amazon GameLift コンソール を使用して、インスタンスタイプのコスト履歴データを確認します。