次の方法で共有


カスタム ゲーム サーバー スケーリングのリファレンス アーキテクチャ

Docker を使用してゲーム サーバーをコンテナー化し、Azure Resource Manager テンプレート、Azure Functions、および DevOps のプラクティスを使用して、サーバーの信頼性が高く自動化されたデプロイ プロセスを構築する方法について学習します。

詳細については、「Docker と Azure による Icebird のゲーム サーバーのオーケストレーションとスケーリング」を参照してください。 GitHub にあるソース コードデプロイ テンプレートを使用できます。

アーキテクチャの図

[Bカプセル化を使用した基本的なゲーム サーバーのホスティング」(media/multiplayer/multiplayer-custom-game-server-scaling.png)

参照実装の詳細

各仮想マシンには、ゲーム セッションを実行する Docker コンテナーが含まれています。 仮想マシンが起動するとすぐ、カスタム スクリプト拡張機能 (LinuxWindows) を使用して、Docker コンテナーがインスタンス化され、必要なネットワーク ポートが開かれます。 すべてのコンテナーには、独自のパブリック専用 IP アドレスがあります。

さらに、App Service プランで実行される get server Azure 関数があり、App Service 環境に関するドキュメントで説明されている他のスケーリング オプションを使用できます。 すべての App Service には Azure ストレージ アカウントが必要で、Azure Functions サービスによってプロビジョニングされます。 このストレージ アカウントでは、Azure Table Storage を使用して、サーバーの一意の識別子、IP アドレス、ポート、ステータスなど、サーバーのプールに関する情報が格納されます。 get server Azure 関数では、この情報を使用して、接続の詳細がクライアントに返され、サーバーが使用中のときは使用不可としてサーバーがマークされます。

サーバー プールのスケーリングを助けるため、タイマーでトリガーされる auto-scale Azure 関数が使用されます。 1 分程度の間隔で、使用可能なサーバーの数が調べられ、必要に応じてさらにサーバーが追加されます。 プール内の使用されていないサーバーの数が多すぎる場合は、それらがプロビジョニング解除されます。 プール内でウォーム状態にするサーバーの数を設定できます。

ゲーム サーバーは、起動すると、3 つ目の send details Azure 関数と対話してその存在をアナウンスし、Azure Table Storage で関連する接続情報を更新できるようにする必要があります。

ゲーム セッションが終了した後、ゲーム サーバーは 4 番目の game session over Azure 関数に対して ping を実行し、その特定のサーバーの Azure Table Storage の状態を更新します。

最終的な目標は、仮想マシンをできるだけ早く解放することなので、このアーキテクチャでは仮想マシンごとに 1 つのゲーム セッションのみを使用することに重点が置かれています。

Azure Storage の制限に基づいて実行できる同時ユーザー数については、Azure の制限 に関するページを参照してください。 スケールアップが必要な場合は、Azure Table Storage を Azure Cosmos DB とそのテーブル API に置き換えることを検討してください。

デプロイ テンプレート

プロジェクトを Azure サブスクリプションにデプロイするには、次のボタンをクリックします。

この操作を実行すると、Azure サブスクリプションに対する template.json ARM テンプレート ファイルのテンプレート デプロイがトリガーされ、必要な Azure リソースが作成されます。 これにより、Azure アカウントの料金が発生する場合があります。

Azure サービスの名前付け規則と制限事項をまとめた記事が含まれる一般的なガイドライン ドキュメントを参照してください。

注意

ARM テンプレートの動作に興味がある場合は、このリファレンス アーキテクチャで利用されている各サービスの Azure Resource Manager テンプレートのドキュメントを参照してください。

ヒント

Azure Functions をローカル環境で実行するには、local.settings.json ファイルをこれらの同じアプリ設定で更新します。

価格設定

Azure サブスクリプションをお持ちでない場合は、無料アカウント を作成して 12 か月間の無料サービスの利用を開始できます。 それらのサービスの制限を超えない限り、Azure 無料アカウントで無償で提供されているサービスに対して料金が発生することはありません。 Azure Portal または使用状況ファイルを通じて使用状況を確認する方法について説明します。

これらのリファレンス アーキテクチャの実行中に使用される Azure サービスのコストはユーザーが負担します。 その合計は使用状況によって異なります。 リファレンス アーキテクチャで使用されていた各サービスの価格は、Web ページで確認ください。

また、Azure の料金計算ツールを使用して、使用する予定の Azure サービスのコストを構成および見積もることもできます。