Amazon GameLift Servers フリートの問題をデバッグする - Amazon GameLift Servers

Amazon GameLift Servers フリートの問題をデバッグする

このトピックでは、Amazon GameLift Servers マネージド EC2 フリートの問題を解決する方法を説明します。

フリート作成の問題

マネージド EC2 フリートを作成すると、Amazon GameLift Servers サービスはフリートを作成するワークフローを開始し、ゲームサーバービルドをインストールして EC2 インスタンスをデプロイし、各インスタンスでゲームサーバープロセスを開始します。詳細な説明については、次を参照してください。フリートは、[アクティブ] ステータスに到達するまでは、ゲームセッションとプレイヤーをホストすることができません。

問題が発生したフリート作成フェーズを特定し、フリート作成イベントとログを調査することで、フリートがアクティブにならない原因となっている問題をデバッグできます。ログから有用な情報を得られなし場合、問題の原因は内部のサービスエラーである可能性があります。この場合は、再度フリートを作成してみます。問題が解決しない場合は、ゲームビルドを再アップロードして、ファイル破損の可能性を解消します。Amazon GameLift Servers サポートに問い合わせるか、フォーラムで質問を投稿することもできます。

ビルドのダウンロードと検証

このフェーズでは、Amazon GameLift Servers はアップロードされたゲームサーバービルドを取得し、ファイルを抽出し、インストールスクリプトを実行します。これらのフェーズでフリートの作成に失敗した場合は、フリートイベントとログを調べて問題を特定します。エラーの原因として以下が考えられます。

  • Amazon GameLift Servers が圧縮されたビルドファイルを取得できない (イベント FLEET_BINARY_DOWNLOAD_FAILED)。ビルドのストレージロケーションにアクセスできること、ビルドと同じ AWS リージョン でフリートを作成していること、Amazon GameLift Servers がそれにアクセスする適切なアクセス許可を持っていることを確認します。

  • Amazon GameLift Servers がビルドファイルを抽出できない (イベント FLEET_CREATION_EXTRACTING_BUILD)。

  • ビルドファイルのインストールスクリプトが正常に完了しなかった (イベント FLEET_CREATION_FAILED_INSTALLER)。

フリートリソースの構築

このフェーズでは通常、フリートリソースの割り当てとデプロイに関する問題が発生します。エラーの原因として以下が考えられます。

  • リクエストされたインスタンスタイプが利用できない。

  • リクエストされたフリートタイプ (スポットまたはオンデマンド) が利用できない。

ゲームサーバープロセスのアクティブ化

このフェーズでは、Amazon GameLift Servers は多数のタスクを試行し、ゲームサーバーの実行可能性、ランタイム設定、サーバー SDK を使用した Amazon GameLift Servers サービスへのゲームサーバーの接続能力など、主要な要素をテストしています。

注記

このフェーズでは、フリートインスタンスにリモートアクセスして問題をさらに調査できます。「Amazon GameLift Servers フリートインスタンスにリモート接続する」を参照してください。

考えられる問題には、次のようなものがあります。

  • サーバープロセスが実行を開始しない。これは、フリートのランタイム設定 (イベント FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND または FLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE) に問題があることを示唆しています。起動パスとオプションの起動パラメータが正しく設定されていることを確認してください。

  • サーバープロセスは実行を開始するが、フリートがアクティブにならない。サーバープロセスは正常に開始して実行されるが、フリートが [アクティブ] ステータスに移行しない場合は、サーバープロセスが Amazon GameLift Servers サービスと通信できていない可能性があります。ゲームサーバーが以下の適切なサーバー SDK 呼び出しを行っていることを確認してください (「サーバープロセスを初期化する」を参照)。

    • サーバープロセスが初期化に失敗する (イベント SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT)。サーバープロセスが InitSdk() を正常に呼び出していません。

    • サーバープロセスが、ゲームセッションをホストできる状態になったことをAmazon GameLift Servers に通知できていない (イベント SERVER_PROCESS_PROCESS_READY_TIMEOUT)。サーバープロセスは初期化されましたが、ProcessReady() が時間内に呼び出されませんでした。

  • VPC ピアリング接続が失敗する。作成されたフリートで VPC ピアリング接続が使用される場合 (「新しいフリートとの VPC ピアリング接続を設定するには」を参照)、VPC ピアリングはこの アクティブ化 フェーズ中に行われます。VPC ピアリングが何らかの理由で失敗した場合、新しいフリートは [アクティブ] ステータスに移行しません。describe-vpc-peering-connections を呼び出して、ピアリングリクエストの成否を追跡できます。認証は 24 時間のみ有効であるため、有効な VPC ピアリング認証 (describe-vpc-peering-authorizations) が存在することを確認してください。

サーバープロセスの問題

サーバープロセスは開始するが、すぐに失敗するか障害がレポートされる。

ゲームビルドの問題以外にも、インスタンスで同時に多くのサーバープロセスを実行しようとすると、このような問題が発生することがあります。同時処理の適正な数は、インスタンスタイプとゲームサーバーのリソース要件の両方に依存します。フリートのランタイム設定で定義している同時処理の数を減らして、パフォーマンスが向上するかどうか確認してください。フリートのランタイム設定を変更するには、Amazon GameLift Servers コンソールでフリートの容量割り当て設定を編集するか、または AWS CLI コマンド update-runtime-configuration を呼び出します。

フリート削除の問題

最大インスタンス数のため、フリートを終了できない。

このエラーメッセージは、削除されるフリートにまだアクティブインスタンスがあることを示しています。この状態は許可されていません。最初に、フリートをアクティブインスタンスゼロまでスケールダウンする必要があります。そのためには、フリートの必要インスタンス数を手動で「0」に設定してから、スケールダウンが有効になるのを待ちます。手動設定の妨げにならないように、自動スケーリングをオフにしてください。

VPC アクションが承認されていない。

この問題は、VPC ピアリング接続専用に作成したフリートにのみ適用されます (「Amazon GameLift Servers に対する VPC ピアリングのセットアップ」を参照)。このシナリオは、フリートの削除プロセスで、フリートの VPC と VPC ピアリング接続もすべて削除されるため起こるものです。まず Amazon GameLift Servers CreateVpcPeeringAuthorization() のサービス API を呼び出すか、AWS CLI コマンドcreate-vpc-peering-authorization を使用して、認証を得る必要があります。承認を取得したら、フリートを削除できます。