menu
arrow_back

Google Kubernetes Engine での専用ゲームサーバーの実行

—/100

Checkpoints

arrow_forward

Create a VM instance

Generate a new container image

Generate an assets disk

Creating a Kubernetes cluster on Container Engine

Configuring the assets disk in Kubernetes

Setting up the scaling manager

Configure the Openarena Scaling Manager Deployment File

Testing the setup

Google Kubernetes Engine での専用ゲームサーバーの実行

1時間 30分 クレジット: 9

GSP133

Google Cloud セルフペース ラボ

テクノロジーの利用に関して、サーバー アプリケーションをコンテナとしてパッケージ化することが急速に主流になってきています。ゲーム会社も例外ではありません。多くのゲーム会社が、コンテナを使って VM の使用率を向上させようとしています。また、コンテナで実現できる独立した実行環境を活用しようとしています。しかし、関心は高いものの、何から始めればよいのかわからないというゲーム会社もたくさんあります。

このラボでは、Google Kubernetes Engine 上で Kubernetes を使用して、セッション ベースのリアルタイム マルチプレーヤー型専用ゲームサーバーを実行するための拡張可能なアーキテクチャを使用する方法について説明します。このアーキテクチャでは、スケーリング マネージャー プロセスが必要に応じて仮想マシン インスタンスを自動的に起動または停止するように構成されます。Kubernetes ノードのマシン構成はマネージド インスタンス グループによって自動的に処理されます。このラボでは、シンプルな構造のオンライン ゲームを使って説明します。より複雑な構造にしたほうがわかりやすい場合や、複雑な構造にする必要がある場合は、その都度説明します。

目標

  • Docker を使用して、一般的なオープンソースの専用ゲームサーバー(DGS)のコンテナ イメージを Linux 上に作成します。このコンテナ イメージでは、バイナリと必要なライブラリのみが Linux のベースイメージに追加されます。

  • 独立した読み取り専用の永続ディスク ボリュームにアセットを格納し、実行時にコンテナにマウントします。

  • Kubernetes と Google Cloud API を使用して基本的なスケジューラ プロセスをセットアップおよび構成し、必要に応じてノードの起動や停止を行います。

ゲーム クライアントのダウンロードを開始する前に

このラボではゲームサーバーを作成します。また、サーバーをテストするためにゲーム クライアントに接続する必要があります。OpenArena ゲーム クライアントは、ローカルマシンにインストールできれば多くのオペレーティング システムで利用できます。現在使用しているマシンにゲーム クライアントをインストールできない場合は、ゲーム クライアントをインストールできるマシンを使用してこのラボを受講することを検討してください。ゲーム クライアントに接続して作業の検証を行うことは必須ではありません。その場合でも、このラボを受講すれば専用ゲームサーバーを作成する方法を確認できますが、実際に動作しているのを確認することはできません。

OpenArena ゲーム クライアントをパソコンにインストールして、ラボの最後にゲームサーバーへの接続をテストします。

http://openarena.wikia.com/wiki/Manual/Install

これには時間がかかります。ダウンロードしている間にラボを開始し、30 分ほど経ったら終了したかどうかを確認してください。その後、ゲーム クライアントをインストールします。

アーキテクチャの概要

クラウド上のゲームインフラの概要では、多くのオンライン ゲーム アーキテクチャに共通するコンポーネントの概要を確認できます。このラボでは、フロントエンド サービスとして Kubernetes DGS クラスタを実装し、バックエンド サービスとしてスケーリング マネージャーを実装します。本番環境のゲーム インフラストラクチャには、これ以外にも多くのフロントエンド サービスとバックエンド サービスが実装されていますが、それらについてはこのソリューションでは説明しません。

68b111517057146c.png

建設的な制約

このラボでは、学習に適した、拡張の余地がある単純なサンプルを作成します。そのため、ゲームについて次の制約があることを前提とします。

  • リアルタイムの対戦型ゲームであり、信頼できる DGS でゲームの状態をシミュレートします。
  • DGS の通信には UDP を使用します。
  • DGS プロセスごとに 1 つの対戦を実行します。
  • どの DGS プロセスでも、ほぼ同じ量の負荷が発生します。
  • 対戦には時間の上限があります。
  • DGS の起動時間は無視できるレベルであり、専用ゲームサーバー プロセスを事前に準備しておく必要はありません。
  • できる限りカスタマー エクスペリエンスへの影響が発生しないようにします。
  • ピーク時が過ぎたら、VM インスタンス数をスケールダウンするために対戦を早期に終了するという対応は行いません。
  • ただし、専用ゲームサーバーのプロセスで問題が発生して続行できなくなった場合は、対戦の状態が失われ、新しい対戦が開始されるようにします。
  • DGS プロセスはディスクから静的アセットを読み込みますが、アセットへの書き込みは必要ありません。

ゲーム業界では、このような制約は特別なものではなく、実際の事例でも同様の制約がある場合があります。

設定と要件

Qwiklabs の設定

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は制限されており、一時停止することはできません。[ラボを開始] ボタンをクリックするとタイマーが開始され、Cloud リソースを利用できる時間が表示されます。

この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。一時的な認証情報が新しく提供されるため、ラボ受講中の Google Cloud Platform へのログインおよびアクセスにはその認証情報を使用してください。

前提条件

このラボを完了するには、次のものが必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)。
  • ラボを完了するために必要な時間。

注: すでに個人の GCP アカウントやプロジェクトをお持ちの場合でも、そのアカウントやプロジェクトはラボでは使用しないでください。

ラボを開始して Console にログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側のパネルには、このラボで使用する必要がある一時的な認証情報が表示されます。

    Google Console を開く

  2. ユーザー名をコピーし、[Google Console を開く] をクリックします。 ラボでリソースが起動し、別のタブで [アカウントの選択] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

  3. [アカウントの選択] ページで [別のアカウントを使用] をクリックします。

    アカウントを選択

  4. [ログイン] ページが開きます。[接続の詳細] パネルでコピーしたユーザー名を貼り付けます。パスワードもコピーして貼り付けます。

    重要: 認証情報は [接続の詳細] パネルに表示されたものを使用してください。ご自身の Qwiklabs 認証情報は使用しないでください。請求が発生する事態を避けるため、GCP アカウントをお持ちの場合でもそのアカウントはラボで使用しないでください。

  5. 以降のページでは次の点にご注意ください。

    • 利用規約に同意してください。
    • 復元オプションや 2 要素認証プロセスは設定しないでください(一時的なアカウントであるため)。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで GCP Console が開きます。

Google Cloud Shell の有効化

Google Cloud Shell は、デベロッパー ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Google Cloud Shell では、コマンドラインで GCP リソースにアクセスできます。

  1. GCP Console の右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

    Cloud Shell アイコン

  2. [続行] をクリックします。

    cloudshell_continue

環境のプロビジョニングと接続には少し時間がかかります。接続すると、すでに認証されており、プロジェクトは PROJECT_ID に設定されています。例えば:

Cloud Shell 端末

gcloud は Google Cloud Platform のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

次のコマンドを使用すると、有効なアカウント名を一覧表示できます。

gcloud auth list

出力:

Credentialed accounts:
- <myaccount>@<mydomain>.com (active)
	

出力例:

Credentialed accounts:
- google1623327_student@qwiklabs.net
	

次のコマンドを使用すると、プロジェクト ID を一覧表示できます。

gcloud config list project
	

出力:

[core]
project = <project_ID>
	

出力例:

[core]
project = qwiklabs-gcp-44776a13dea667a6
	

Qwiklabs に参加してこのラボの残りの部分や他のラボを確認しましょう。

  • Google Cloud Console への一時的なアクセス権を取得します。
  • 初心者レベルから上級者レベルまで 200 を超えるラボが用意されています。
  • ご自分のペースで学習できるように詳細に分割されています。
参加してこのラボを開始