Game Servers クラスタを制御するには、グローバルの Game Servers 構成ファイルを使用して、起動するサーバーのロケーションやサーバー数のほか、デプロイするゲームサーバー バイナリのルールを定義します。Game Servers は、一元的に管理されたロールアウトに基づいて Agones フリートを自動的に作成し、自動的にすべてのマネージド クラスタに安全にロールアウトされます。特に、使用中の Game Servers は突然停止することが絶対にないため、進行中のゲーム セッションが中断されることは決してありません。
Game Servers のリソース
このセクションでは、Game Servers を管理するために操作する主要なリソースについて説明します。次の図は、これらのリソースを使用してゲーム プロジェクトをデプロイする方法を示しています。
図1 Game Servers へのゲーム プロジェクトのデプロイメントの例
Game Servers のプロジェクト
単一の環境(本番、テストなど)は、その環境で有効になっている Game Servers を含む Google Cloud プロジェクトです。隔離とセキュリティを向上させるために、通常、複数の Google Cloud プロジェクト(My Game Production や My Game Testing など)を使用して単一のゲームタイトルを管理します。
場所
ロケーションはリソースのスコープを定義し、デフォルトは global
です。これは可用性が最も高く、データが複数の Google Cloud リージョン間で冗長化されています。リソースのロケーションは、特定の Google Cloud リージョンに手動で設定できます(すべてのリージョンがサポートされているわけではありません)。データの保存場所またはフェイルオーバー ドメインの制御が必要な場合は、デフォルトの global
設定をサポートされている次のいずれかのロケーションでオーバーライドします。
サポートされている地域
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-southeast1
asia-southeast2
australia-southeast1
europe-central2
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
europe-west6
global
northamerica-northeast1
southamerica-east1
us-central1
us-east1
us-east4
us-west1
us-west2
レルム
Game Servers は、Google Kubernetes Engine 上で実行される Kubernetes クラスタをサポートするように設計されています。Game Servers は、Google Cloud のリージョンとゾーンのコンセプトを拡張するため、レルムのメタリージョンのコンセプトが導入しています。レルムとは、プレーヤー数に対するゲームのレイテンシ要件に基づいた、Game Servers クラスタのユーザー定義グループです。レルムには、時間に基づくスケーリング構成をレルム内のクラスタで使用できるようにするタイムゾーンが割り当てられます。レルムは 1 つのロケーション内に存在します。
Game Servers のクラスタ
Game Servers のクラスタは、レルム リソースのサブリソースです。各 Game Servers クラスタは、レルムに登録された Agones を実行する Kubernetes クラスタの Namespace に対応します。レルム内の Game Servers クラスタは、レイテンシやコンピューティング パフォーマンスなどの測定値に関して、ユーザー エクスペリエンスの観点から同等と見なされる必要があります。default
以外の Namespace を使用するには、Kubernetes 上に Namespace を作成し、その Namespace を使用するように Agones を構成する必要があります。
Game Servers クラスタを作成すると、Game Servers によって Agones フリートとオートスケーラーが必要に応じて作成されます。Game Servers では、手動で作成された Agones フリートは変更されません。
Game Servers クラスタを削除しても、Game Servers によって作成された Agones フリートとオートスケーラーなど、クラスタ内のすべてのリソースは Game Servers によっては削除されません。
Game Servers のデプロイメント
Game Servers のデプロイメントとは、世界中の任意またはすべての Game Servers クラスタにデプロイできる、Game Servers ソフトウェアのバージョンのグローバルなレコードです。Game Servers のデプロイメントは、Game Servers 構成ファイルとロールアウト リソースの両方の親リソースです。
図 2 Config バージョン 1.0 は米国のレルムにロールアウトされ、バージョン 1.1 はヨーロッパと日本にロールアウトされました。
Game Servers の構成ファイル
Game Servers 構成ファイルは、Game Servers の数、バッファ、Game Servers のバージョンを指定する Game Servers デプロイメント リソースのサブリソースです。スケーリング ポリシーは、Game Servers 構成ファイルで定義します。スケーリング ポリシーは、次の例のように、静的または時間ベースのいずれかになります。
- ピーク時には 1 分あたりに N 割り当てをサポートするのに十分なサーバーが必要で、ピーク時以外は 1 分あたりに M 割り当てをサポートするのに十分なサーバーが必要である。
- 計画されたゲーム イベントのため、日付と時間の範囲で予約容量を N% 増やす。
ロールアウト
ロールアウトは、Game Servers 構成ファイルを対象のレルムにマッピングする、Game Servers デプロイメント リソースのサブリソースです。デフォルトでは、ロールアウトにより Game Servers 構成ファイルがすべてのレルムに割り当てられます。A/B テストとカナリア テストでは、特定のレルムをオーバーライドして代替の Game Servers 構成ファイルを受け取ることができます。
アーキテクチャ
Game Servers は、グローバルに使用可能なコントロール プレーン API を公開します。この API を使用すると、API 呼び出し、Google Cloud Console、または Google Cloud CLI を使用して、次のようなデプロイメントを記述するリソースを制御できます。
- レルムの作成と変更
- レルムの Game Servers クラスタの作成、登録、変更
- Game Servers デプロイメント、Game Servers 構成ファイル、ロールアウトの作成、デプロイ、更新
Game Servers クラスタの作成時に Game Servers に渡す Namspace 内のゲームサーバーを Agones が管理するためには、Kubernetes サービス アカウントが必要です。デフォルトの名前空間以外の名前空間を使用している場合は、通常、helm install の一部としてこのサービス アカウントを作成します。
Game Servers が Agones クラスタに接続するためには、Google Cloud プロジェクトのサービス アカウントが必要です。このサービス アカウントは、レルムやデプロイメントなどのリソースを初めて作成すると自動的に作成されます。
各 Game Servers デプロイメントでは、Agones GameServerSpec
と同等である Game Servers パラメータが記述され、特定のビルドを実行する Game Servers のフリートが作成される対象の Game Servers クラスタへポリシーが指定されます。ポリシーを使用して個々のクラスタのスケーリングの優先順位を設定することもできます。
次のステップ
- クイックスタートを試す。
- 特定の Game Servers タスクを完了する方法を学習する。