でのコンテナの仕組み Amazon GameLift Servers - Amazon GameLift Servers

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

でのコンテナの仕組み Amazon GameLift Servers

Amazon GameLift Servers コンテナフリートは、コンテナ化されたアプリケーションを柔軟にデプロイおよびスケーリングできるように設計されています。Amazon Elastic Container Service (Amazon ECS) を使用して、Amazon GameLift Serversフリートのタスクのデプロイと実行を管理します。このトピックでは、 Amazon GameLift Servers マネージドフリートでコンテナを実行するための基本的な構造要素について説明し、一般的なアーキテクチャを説明し、いくつかの主要な概念の概要を説明します。

マネージドコンテナ用の以下のツールを使用して、オンボーディングを高速化します。
  • コンテナスターターキットは、統合とフリートのセットアップを合理化します。ゲームサーバーに重要なゲームセッション管理機能を追加し、事前設定されたテンプレートを使用して、ゲームサーバー用のコンテナフリートと自動デプロイパイプラインを構築します。デプロイ後、 Amazon GameLift Servers コンソールと API ツールを使用して、フリートのパフォーマンスのモニタリング、ゲームセッションの管理、メトリクスの分析を行います。

  • Unreal Engine または Unity 開発者の場合は、 Amazon GameLift Servers プラグインを使用してゲームサーバーを統合し、ゲームエンジンの開発環境内からコンテナフリートを構築します。プラグインのガイド付きワークフローは、マネージドコンテナを使用したクラウドベースのホスティングで、高速でシンプルなソリューションを作成するのに役立ちます。次に、この基盤に基づいてゲーム用のカスタムホスティングソリューションを作成します。

コンテナフリートコンポーネント

フリート

コンテナフリートは、コンテナ化されたゲームサーバーをホストするための Amazon EC2 インスタンスのコレクションです。これらのインスタンスは、Amazon GameLift Serversユーザーに代わって によって管理されます。フリートを作成するときは、ゲームサーバーソフトウェアを含むコンテナアーキテクチャを各フリートインスタンスにデプロイする方法を設定します。1 つ以上の地理的場所にインスタンスを持つコンテナフリートを作成できます。Amazon GameLift Servers スケーリングツールを使用して、ゲームセッションとプレイヤーをホストするためにコンテナフリートの容量を自動的にスケーリングできます。

インスタンス

Amazon EC2 インスタンスは、ゲームホスティング用のコンピューティング容量を提供する仮想サーバーです。ではAmazon GameLift Servers、さまざまなインスタンスタイプから選択できます。各インスタンスタイプは、CPU、メモリ、ストレージ、ネットワーク容量の異なる組み合わせを提供します。

コンテナフリートを作成すると、 は選択したインスタンスタイプとフリート設定に基づいてコンテナをAmazon GameLift Serversデプロイします。デプロイされた各フリートインスタンスは同一であり、同じ方法でコンテナ化されたゲームサーバーソフトウェアを実行します。フリート内のインスタンスの数によって、フリートのサイズとゲームホスティング容量が決まります。

コンテナグループ

Amazon GameLift Servers は、コンテナグループの概念を使用して、一連のコンテナを記述および管理します。コンテナグループは、コンテナ「タスク」または「ポッド」に似ています。各コンテナグループ内で、コンテナの動作、依存関係の設定、使用可能な CPU およびメモリリソースの共有を定義できます。

各フリートインスタンスには、次のタイプのコンテナグループを含めることができます。

  • ゲームサーバーコンテナグループは、ゲームサーバーアプリケーションとサポートソフトウェアを実行するコンテナを管理します。ゲームセッションとプレイヤーをホストするには、コンテナフリートにこのタイプのコンテナグループのいずれかが必要です。ゲームサーバーコンテナグループは、フリートインスタンス間でレプリケートできます。フリートインスタンスあたりのゲームサーバーグループのレプリカの数は、ソフトウェアのコンピューティング要件とインスタンスで使用できるコンピューティングリソースによって異なります。

  • オプションであるインスタンスごとのコンテナグループを使用すると、各フリートインスタンスで追加のソフトウェアを実行できます。モニタリングなどのバックグラウンドサービスやユーティリティプログラムの実行に役立ちます。ゲームサーバーソフトウェアは、インスタンスグループごとのプロセスに直接依存しません。インスタンスごとのコンテナグループの 1 つのコピーのみが各フリートインスタンスにデプロイされます。

コンテナフリートの各コンテナグループには、「必須」と指定されたコンテナが 1 つあります。必須コンテナは、コンテナグループのライフサイクルを駆動します。必須コンテナが失敗すると、コンテナグループ全体が再起動します。

コンテナ

コンテナは、コンテナベースのアーキテクチャの最も基本的な要素です。これには、ソフトウェア実行可能ファイルと依存ファイルを含むコンテナイメージが含まれています。コンテナを定義して、ソフトウェアの実行方法と とのやり取り方法を設定しますAmazon GameLift Servers。

Amazon GameLift Servers は 2 種類のコンテナを定義します。

  • ゲームサーバーコンテナには、ゲームサーバープロセスを実行し、プレイヤーのゲームセッションをホストするために必要なものがすべて含まれています。これには、ゲームサーバーのビルドと依存ソフトウェアが含まれます。フリートのゲームサーバーコンテナグループに 1 つのゲームサーバーコンテナを定義します。ゲームサーバーコンテナは、コンテナグループにとって自動的に必須と見なされます。

  • サポートコンテナは、ゲームサーバーをサポートする追加のソフトウェアを実行します。これは「サイドカー」コンテナの概念に似ています。これにより、サポートソフトウェアをゲームサーバーと一緒に実行およびスケーリングし、個別のコンテナとして管理できます。ゲームサーバーコンテナグループでは、ゼロ以上のサポートコンテナを定義できます。インスタンスごとのコンテナグループでは、すべてのコンテナがサポートコンテナです。サポートコンテナは必須として指定できます。

コンピューティング

コンピューティングは、フリートインスタンス上のゲームサーバーコンテナグループのコピーを表します。

一般的なアーキテクチャ

次の図は、最も単純なコンテナフリート構造を示しています。この構造では、フリート内の各インスタンスはゲームサーバーコンテナグループの 1 つのコピーを保持します。コンテナグループには、1 つのゲームサーバープロセスを実行する 1 つのゲームサーバーコンテナがあります。この例では、コンテナフリートは、インスタンスごとにゲームサーバーコンテナグループのコピーを 1 つ配置するように設定されています。このアーキテクチャでは、各インスタンスは 1 つのゲームサーバープロセスを実行します。

ゲームサーバーコンテナグループに 1 つのゲームサーバーコンテナを持つシンプルなコンテナアーキテクチャの例。

この 2 番目の図は、より複雑なコンテナフリートアーキテクチャを示しています。この構造では、フリートにはゲームサーバーコンテナグループとインスタンスごとのコンテナグループの両方があります。ゲームサーバーコンテナグループには、ゲームサーバープロセスとサポートプロセス用に個別のコンテナがあります。フリートは、各フリートインスタンスにゲームサーバーコンテナグループの 3 つのコピーを配置するように設定されています。インスタンスごとのコンテナグループはレプリケートされません。この例では、コンテナフリートは、インスタンスごとにゲームサーバーコンテナグループの 3 つのコピーを配置するように設定されています。このアーキテクチャでは、各インスタンスは 3 つのゲームサーバープロセスを実行します。

ゲームサーバーコンテナグループに複数のコンテナがあり、インスタンスごとのコンテナグループに 1 つのコンテナがあるコンテナアーキテクチャの例。

主要機能

このセクションでは、 がいくつかの基本的なコンテナの概念Amazon GameLift Serversを実装する方法について説明します。コンテナフリートの操作方法については、このガイドの関連トピックを参照してください。

アクティブなフリートの更新

マネージドコンテナは、ホストされたソフトウェアとコンテナアーキテクチャのライフサイクルを管理するのに役立つ高度なサポートを提供します。コンテナイメージを含むコンテナ定義を更新し、既存のフリートに変更をデプロイできます。この機能を使用すると、開発中にコンテナの変更を迅速かつ簡単に繰り返すことができます。また、ソフトウェアバージョンの更新のビルド、デプロイ、追跡に役立つ機能も提供します。これには次の機能が含まれます。

  • コンテナグループ定義の更新とバージョニングを管理します。コンテナイメージや構成設定など、コンテナグループ定義のほぼすべてのプロパティを更新できます。コンテナを更新するたびに、 は更新にバージョン番号Amazon GameLift Serversを自動的に割り当て、デフォルトですべてのバージョンを維持します。特定のバージョンにアクセスでき、必要に応じてバージョンを削除できます。コンテナフリートを作成するときに、デプロイするコンテナグループ定義とバージョンを指定できます。

  • 新しいコンテナグループ定義と設定を使用して、既存のコンテナフリートを更新します。フリートインスタンスにデプロイ済みのフリートにコンテナ更新をデプロイできます。 AWS Management Console または AWS SDK と CLI を使用して、各フリートロケーションの更新デプロイのステータスを追跡できます。

  • フリートの更新をアクティブなフリートにデプロイする方法を設定します。

    • ゲームセッションの保護。ゲームセッションが終了 (安全なデプロイ) するまで、アクティブなゲームセッションでフリートインスタンスを保護することを選択します。または、ゲームセッションアクティビティ (安全でないデプロイ) に関係なく、フリートインスタンスを置き換えることを選択します。開発フェーズとテストフェーズで安全でないデプロイを使用して、デプロイ時間を短縮します。

    • 最小正常率。デプロイ中に維持する正常なタスクの割合を指定します。この機能を使用すると、デプロイ中に影響を受けるフリートインスタンスの数を判断できます。値が低いとデプロイ速度が優先され、値が高いとデプロイ全体でゲームサーバーの可用性が高くなります。

    • デプロイの失敗戦略。デプロイが失敗した場合に実行するアクションを決定します。デプロイの失敗は、更新されたコンテナの一部のステータスチェックが失敗し、障害が発生したと見なされることを意味します。すべてのフリートインスタンスを以前にデプロイされた状態に自動的にロールバックするようにデプロイを設定できます。または、障害のあるフリートインスタンスの一部をデバッグ用に維持することもできます。

アクティブなフリートを更新する機能は、ゲームサーバーソフトウェアに更新をデプロイする場合に非常に役立ちます。ゲームサーバー用に新しいコンテナイメージを構築したら、デプロイは 2 つのステップのプロセスです。まずコンテナグループ定義を新しいイメージで更新し、次にコンテナフリートを更新します。 は必要に応じて他のすべてのタスクAmazon GameLift Serversを処理します。

コンテナパッキング

コンテナフリートにデプロイするためのコンテナ構造を開発する場合、共通の目標は利用可能なコンピューティング能力の使用を最適化することです。この目標を達成するには、各フリートインスタンスにできるだけ多くのゲームサーバーコンテナグループをパックします。

Amazon GameLift Servers は、次の情報に基づいて、インスタンスあたりの最大ゲームサーバーコンテナグループを計算することでこれを行うのに役立ちます。

  • フリートのインスタンスタイプとその vCPU およびメモリリソース。

  • ゲームサーバーコンテナグループ内のすべてのコンテナの vCPU とメモリの要件。

    インスタンスごとのコンテナグループがある場合は、そのグループ内のすべてのコンテナの vCPU とメモリの要件。

コンテナフリートを作成するときは、計算された最大値を使用するか、必要な数を指定できます。ベストプラクティスとして、コンテナ化されたゲームサーバーソフトウェアを試して、最適なゲームサーバーパフォーマンスのためのリソース要件を決定することを計画してください。

容量スケーリング

フリート容量は、フリートが同時にホストできるゲームセッションの数を測定します。フリートがサポートできる同時プレイヤーの数に基づいて容量を測定することもできます。フリートのホスティング容量を増減するには、フリートインスタンスを追加または削除します。

コンテナフリートは、各フリートインスタンスで特定の数の同時ゲームサーバープロセスを実行するように設定されています。(これは、(1) インスタンスあたりのゲームサーバーコンテナグループ、および (2) 各コンテナグループで実行されるゲームサーバープロセスの数に基づいて計算できます)。インスタンスあたりの cncurrent ゲームサーバーの数は、各フリートインスタンスを追加または削除した場合の影響を示します。たとえば、コンテナフリートが各ゲームサーバーコンテナグループで 1 つのゲームサーバープロセスを実行し、各フリートインスタンスが 100 のゲームサーバーコンテナグループを保持している場合、同時ゲームセッションをホストするフリートの容量を 100 ずつ増減します。各ゲームセッションに 10 個のプレイヤースロットがある場合、プレイヤーをホストするフリートの容量を 1000 ずつ増減します。

コンテナフリートでは、 が提供する任意のキャパシティスケーリング方法を使用できますAmazon GameLift Servers。具体的には次のとおりです。

  • 必要なフリートインスタンス数を設定して、フリート容量を手動で設定します。

  • 使用可能なインスタンスの希望するバッファをターゲットにして、自動スケーリングを設定します (ターゲット追跡)。このメソッドは、受信プレイヤーがすぐにゲームに参加できるように、一定量のアイドルホスティングリソースを自動的に維持します。プレイヤーの需要が増減すると、このバッファのサイズは継続的に調整されます。

  • カスタムスケーリングルール (高度な機能) を使用して自動スケーリングを設定します。この方法では、選択したフリートメトリクスに基づいてスケーリングできます。

ゲームクライアント/サーバー接続

Amazon GameLift Servers マネージドフリートを使用すると、ゲームクライアントはクラウドホスト型ゲームサーバーに直接接続します。ゲームクライアントがゲームへの参加をリクエストすると、 はゲームセッションAmazon GameLift Serversを検索し、接続情報 (IP とポート) をゲームクライアントに提供します。フリートの特定のポート範囲 (インバウンドアクセス許可) を開くことで、フリートインスタンスへの外部アクセスを制御できます。インバウンドアクセス許可は、受信トラフィックに対して開いているポートを決定します。すべてのポートをすばやくシャットダウンしたり、数個に制限したり、すべてのポートを開くことができます。

マネージドコンテナフリートには、コンテナで実行されているプロセスへのアクセスを許可する追加の設定が必要です。コンテナ定義を作成するときは、接続を行うプロセスごとにポートのセットを指定します。これには、以下が含まれます。

  • ゲームサーバーコンテナで同時に実行されるすべてのゲームサーバープロセス。すべてのゲームサーバープロセスでは、ゲームセッションに参加するためにゲームクライアントが接続できるようにする必要があります。

  • 外部ソースが接続する必要があるサポートコンテナ内のプロセス。たとえば、テストアプリケーションにリモート接続できます。

内部向けコンテナポート設定を設定すると、 はそれらAmazon GameLift Serversを使用して、ゲームクライアントやその他のアプリケーションが接続できる外部向けインバウンドアクセス許可を計算します。 は、インバウンドアクセス許可と、プレイヤーにコンテナ内のゲームセッションへのアクセスを許可する個々のコンテナポート間のマッピングAmazon GameLift Serversも管理します。この内部マッピングは、ゲームサーバーをコンテナポートへの直接アクセスから保護することで、セキュリティレイヤーを提供します。必要に応じて、フリートの外部向けポート設定をカスタマイズできます。コンテナフリートポートの手動設定の詳細については、「」を参照してくださいネットワーク接続を設定する

コンテナフリートのポート設定はいつでも変更できます。この変更には、フリートの更新デプロイが必要です。

次の図は、コンテナフリート間のポート接続の役割を示しています。図に示すように、個々のコンテナにポートを設定すると、 はこの情報Amazon GameLift Serversを使用して、各コンテナポートにマッピングするのに十分なポートをフリートインスタンスに設定します。外部向けインスタンスのインバウンドアクセス許可と内部向け接続ポートの両方は、手動で設定しない限り、フリートAmazon GameLift Serversの によって計算されます。

コンテナフリートのポート設定の図。ポートマッピングにより、外部トラフィックはフリートインスタンスに接続し、インスタンス上の個々のコンテナにアクセスできます。

コンテナログ記録

マネージドコンテナフリートでは、標準出力 (および標準エラー) ストリームがすべてのコンテナに対してキャプチャされます。これには、ゲームサーバーのゲームセッションログが含まれます。コンテナフリートは、いくつかのオプションのいずれかを使用して出力ストリームを処理するように設定できます。

  • コンテナ出力を Amazon CloudWatch ログストリームとして保存します。各ログストリームはフリート ID とコンテナを参照します。フリートに対してこのログ記録オプションを選択した場合は、フリートからのすべてのログストリームを整理する CloudWatch ロググループを指定します。その後、CloudWatch 機能を使用して、必要に応じてログデータを検索および分析できます。

  • コンテナ出力を Amazon Simple Storage Service (Amazon S3) ストレージバケットに保存します。必要に応じて、コンテンツを表示、共有、またはダウンロードできます。

  • ログ記録をオフにします。このシナリオでは、コンテナ出力は保存されません。

Amazon GameLift Servers は、マネージドコンテナフリートから AWS アカウントの CloudWatch または Amazon S3 サービスにログデータを送信します。データを表示するには、 AWS または他の AWS Management Console ツールを使用してアカウントにサインインし、個々の サービスを操作します。コンテナフリートのサービスロールを作成することで、これらのアクションを実行Amazon GameLift Serversするための制限付きアクセスを に拡張します。

コンテナフリートのログ記録設定はいつでも変更できます。この変更には、フリートの更新デプロイが必要です。

コンテナフリートと Amazon GameLift Servers エージェント

一般的に使用されるコンテナアーキテクチャは、コンテナごとに 1 つのプロセスを実行します。Amazon GameLift Servers コンテナフリートでは、ゲームサーバーコンテナグループには 1 つのゲームサーバーコンテナがあり、1 つのゲームサーバープロセスを実行します。このアーキテクチャでは、 はフリートインスタンスの各ゲームサーバーコンテナグループの単一のゲームサーバープロセスのライフサイクルAmazon GameLift Serversを管理します。

各ゲームサーバーコンテナグループで複数のゲームサーバープロセスを実行するコンテナアーキテクチャを構築する場合は、すべてのプロセスのライフサイクルを管理する方法が必要です。これには、必要に応じてプロセスを開始、シャットダウン、置き換える、同時に実行する必要な数のプロセスを管理する、障害状態を処理するなどのタスクが含まれます。

これらのタスクに Amazon GameLift Servers エージェントを使用することを選択できます。コンテナフリートの場合、 エージェントは実行する実行可能ファイル (およびその数) を指定し、起動パラメータを指定し、ゲームサーバーのアクティベーションに関するルールを設定するランタイム手順を実装します。たとえば、ランタイム手順では、本番環境で使用する 10 のゲームサーバープロセスと、テスト用の特別な起動パラメータを持つ 1 つのゲームサーバープロセスを維持するようにエージェントに指示する場合があります。

エージェントをコンテナフリートで使用するには、 エージェントをコンテナイメージに追加し、一連のランタイム手順を含めます。エージェントの詳細については、「」を参照してくださいAmazon GameLift Servers エージェントの操作