9/10 18:24 ISUCON練習代を7割安にする方法 追加
9/1 16:48 Q&A追記

はじめに
リンク集
GCPのサインアップ
 Googleアカウントの確認
 GCPのサインアップ
ISUCONプロジェクトの作成
 プロジェクトメンバーの追加
 ISUCON運営メンバーの追加
 ISUCON参加用GCPクーポンの登録
 クレジット利用状況の確認
GCEインスタンスの作成
 ISUCON予選用GCEイメージの登録
 GCEインスタンスの作成
 GCEインスタンスへのSSH接続
各種のTips
 Google Cloud SDKのインストール
 gcloud compute コマンドライン例の調べ方
 「割り当て」に注意
 ISUCON練習代を7割安にする方法

Q&A

はじめに

このドキュメントでは、ISUCON予選参加に必要となるGoogle Cloud Platform (GCP)の仮想サーバー、Google Compute Engine (GCE)インスタンスの作成方法を説明します。

リンク集

公式ドキュメントと公式ツール

  • Google Cloud Platformトップページ
  • Google Compute Engineドキュメント(英語)
  • Google Developers Console
  • Google Cloud SDK & gcloud computeドキュメント(英語)
  • 質問先・コミュニティなど

  • Stackoverflow(日本語)のGoogle Compute Engineタグ
  • Twitterの #gcpja タグ
  • GCP User Group (GCPUG)
  • その他のサポートリソース(英語)のリスト
  • GCPの最新情報

  • GCP Japanブログ
  • TwitterのGCP JP公式アカウント


  • GCPのサインアップ

    Googleアカウントの確認

    まず、ISUCON参加に用いるGoogleアカウントにログイン済みであることを確認してください。

    GCPのサインアップ

    今回初めてGCPを使う方は、以下の手順でGCPへのサインアップを行う必要があります。すでにGCPを使用したことがあり、請求先アカウントが登録済みの方は、ISUCONプロジェクトの作成まで進んでください。

    GCPにサインアップするには、ブラウザで「cloud.google.com」を開きます。
    01


    この画面で、右上にある「無料体験版」ボタンをクリックし、以下のページを開きます。
    02


    GCPを初めて使う方には、サインアップ時に60日間有効な300ドル分のクレジット(利用可能枠)が無償で提供されます。ただし、このサインアップ時点でお手持ちのクレジットカード情報の登録が必要となります。上記画面にて、アカウント登録情報とクレジットカード情報を入力します。なお、クレジットカード会社が発行したプリペイドカードやギフトカード等は使えない場合が多いのでご注意ください。

    無償提供されたクレジット分を超えてGCPサービスを利用した場合には、ここで登録したクレジットカードに対して超過分が課金されますのでご注意ください。

    サインアップが完了すると、自動的に新しいプロジェクト「My First Project」が作成されて、以下のGoogle Developer Console画面が表示されます(なお、このMy First ProjectはISUCON予選参加には使用しません)。
    03


    以上の手順で、GCPのサインアップの作業は完了です。

    ISUCONプロジェクトの作成

    つづいて、ISUCON予選参加用のプロジェクトを作成します。このプロジェクトはチームメンバー全員で共有しますので、以下に説明するプロジェクト作成およびGCPクーポン登録の手順は、チームリーダー1名のみ実施してください。

    ブラウザでGoogle Developer Consoleのプロジェクト一覧画面を開き、画面左上の「プロジェクトを作成」をクリックします。
    04


    以下の「新しいプロジェクト」ダイアログが表示されるので、「プロジェクト名」として「ISUCON5」を入力し、「作成」をクリックします。
    05


    30秒ほどでプロジェクトが作成され、プロジェクトの概要画面が表示されます。画面中央上に、自動的に割れ当てられた「プロジェクトID」が表示されていることを確認します。
    06


    プロジェクトメンバーの追加

    次に、ISUCON5プロジェクトへのアクセス権限を持つプロジェクトメンバーを追加します。Google Developer Console画面左上の「権限」をクリックし、つづいて「メンバーを追加」をクリックします。

    「メンバーの追加」ダイアログが表示されるので、チームメンバーのGoogleアカウントのメールアドレスを入力し、「権限」として「オーナー」を選択して「追加」をクリックします。
    07


    これにより、追加されたメンバーにはプロジェクトへの招待メールが届くので、メンバーはそのメールに記載のURLをクリックしてプロジェクトへの参加を承認します。

    ISUCON運営メンバーの追加

    さらに今回は、ISUCON予選における検証作業のために、ISUCON運営メンバーをISUCONプロジェクトに追加する必要があります。上記と同じ手順でメールアドレス「tagomoris@gmail.com」をオーナーとしてメンバー追加してください(このメンバーはISUCON5予選結果発表後に削除してください)。

    ISUCON参加用GCPクーポンの登録

    無料体験版の300ドルクレジットに加えて、ISUCON参加チームには1年間有効な100ドル分のクレジットが追加で提供されます。よって、合計400ドル分のGCPサービス(GCE、BigQuery、Google Cloud Storageその他)を無償で利用できます。

    ISUCON参加用GCPクーポンを登録するには、ブラウザで「cloud.google.com/redeem」を開きます。以下のダイアログが表示されます。
    08


    このダイアログ上の「プロモーション コード」部分に、ISUCON運営チームから提供されたGCPクーポンコードを入力します。「このクレジットの適用先」として、クレジットを追加したい請求先アカウントを選択します。通常は、デフォルトで作成された「請求先アカウント」をそのまま選択し、「次へ」をクリックします。
    09


    上記の確認画面が表示されるので、「アップグレードして利用」をクリックします。これで、100ドルクレジットの登録が完了します。

    クレジット利用状況の確認

    現在のクレジット利用状況を確認するには、Google Developers Consoleを開き、画面右上の設定ボタンから「請求先アカウント」を選択します。
    10


    つづいて「クレジット」タブを選択すると、この請求先アカウントで利用可能なクレジットの一覧と残額、有効期限を確認できます。なお、先ほど登録した100ドルクレジットがこの画面上に表示されて利用可能になるまでには、最大で48時間(実際には30分ほど)を要しますのでご注意ください。
    11


    以上で、ISUCONプロジェクトの作成は完了です。

    GCEインスタンスの作成

    ISUCON予選用GCEイメージの登録

    ISUCON予選では、事前に配布されている専用のGCEイメージを用いてGCEインスタンスを作成する必要があります。そこでまずは、以下の手順でISUCON予選用GCEイメージを登録します。

    Google Developer Consoleの画面左上のドロップダウンメニューにて「ISUCON5」プロジェクトが選択されていることを確認し、画面左のメニューから「コンピュート」→「Compute Engine」→「イメージ」を選択します。GCEインスタンスの作成に利用できるイメージの一覧が表示されるので、画面上の「新しいイメージ」を選択します。
    12


    「新しいイメージの作成」ダイアログにて、以下をそれぞれ入力します。
  • 名前:「isucon5」
  • ソースのタイプ:Cloud Storageオブジェクト
  • Cloud Storageオブジェクトのパス:「gs://XXX」


  • 最後に、「作成」をクリックします。これにより、isucon5イメージが登録されます。登録には2〜3分の時間がかかります。

    なお予選参加前の事前練習および確認用には、以下のISUCON4予選用イメージも利用できます。(こちらのVM内にイメージ作成時に使用されていたアカウントの home directory が残っています。気になる方は削除してください)
  • gs://isucon_images/ea8a0f667231537687aca873e18cd61d8fc6fe24.image.tar.gz


  • GCEインスタンスの作成


    GCEインスタンスを作成するには、Google Developer Console画面左のメニューから、「コンピュート」→「Compute Engine」→「VMインスタンス」を選択し、「インスタンスを作成」をクリックします。
    13


    「新しいインスタンスの作成」ダイアログでは、以下をそれぞれ入力します。
  • 名前:「isucon5」
  • ゾーン:「asia-east1-c」(実際には予選当日に指定されます)
  • マシンタイプ:任意のなにか (実際には予選当日に指定されます)
  • ブートディスク:「isucon5」(「変更」→「自分で作成したイメージ」を選択)
  • ブートディスクタイプ:「Standard Persistent Disk」(サイズはデフォルトの10GB)
  • ファイアウォール:「HTTPトラフィックを許可する」を選択


  • ダイアログの「作成」をクリックすると、GCEインスタンスの作成が開始されます。インスタンスの作成はおよそ30秒ほどで完了し、VMインスタンス一覧に表示されます。
    14


    GCEインスタンスを作成すると、Linuxのユーザーアカウント作成およびsudoer登録がメンバーのメールアドレスを元に自動で行われます。よって、GCEインスタンスの作成後にそれらの設定作業を行う必要はありません。

    以上でGCEインスタンスの作成は完了です。

    GCEインスタンスへのSSH接続

    作成後のGCEインスタンスへSSH接続するには、VMインスタンス一覧上の右端にある「SSH」をクリックします。ブラウザとGCEインスタンス間でSSHキーが自動的に共有され、ブラウザ内からSSH接続できます。
    15


    ブラウザではなくコンソールからSSH接続する方法については、後述のCloud SDKのインストールを参照してください。

    各種のTips

    Google Cloud SDKのインストール

    GCPでは、GCEインスタンスの作成や設定等のすべての作業をGoogle Developer Console上でのUI操作で行えますが、同じ作業をGoogle Cloud SDKを用いたコマンドライン入力でも行えます。どちらを用いても構いませんが、操作に慣れてくると後者の方が使いやすいケースも増えてくるので、手元の環境(Mac/Linux/Windows)にGoogle Cloud SDKをインストールすることをおすすめします。

    LinuxまたはMac OSでは、コンソール上で以下のコマンドを実行することでGoogle Cloud SDKをインストールできます(root権限やsudo指定が必要な場合もあります)。Windows環境やその他のインストール方法詳細についてはこちらのドキュメントをご覧ください。
    $ curl https://sdk.cloud.google.com | bash

    インストールが完了したら、コンソールを再起動してください。

    Google Cloud SDKのgcloud computeコマンドによるGCEインスタンスの操作方法については、以下のドキュメントをご覧ください。
  • gcloud computeドキュメント(英語)


  • またGCEインスタンスの操作を行う上では、以下の初期設定を済ませておくと便利です。
  • GCE接続用の認証とデフォルトのプロジェクト設定(英語)
  • デフォルトのリージョンとゾーンの設定(英語)

  • これらの設定を済ませておけば、以下のgcloud computeコマンドでGCEインスタンスへSSH接続できます。SSHキーは自動的に共有されます。
    $ gcloud compute ssh isucon5


    gcloud compute コマンドライン例の調べ方

    Google Developer Console上でGCEの各種操作を行う際、ダイアログの一番下に「同等のRESTまたはコマンドライン」のリンクが表示されます。例えばGCEインスタンス作成のダイアログでは、以下のように表示されます。
    16


    この「コマンドライン」リンクをクリックすると、同じ内容の操作をGoogle Cloud SDKのgcloud computeコマンドで実行する場合のコマンド例が表示されます。
    17


    GCEインスタンスの作成やその他の操作をスクリプト等で繰り返し実行する場合は、このコマンドラインをコピーして用いる方法が便利です。

    「割り当て」に注意

    GCEでは、リージョンごとに利用可能なリソースの「割り当て(quota)」が設定されています。割り当ての値は、Developer Consoleのメニューから「コンピュート」→「Compute Engine」→「割り当て」で確認できます。
    18


    1つのGCPのプロジェクトでは、この割り当てを超えるリソースを使用することができません。例えば、CPUコア数のデフォルトの上限は1リージョンあたり24コアであるため、合計で24コアを超えるGCEインスタンスを同じリージョン内に作成しようとするとエラーが発生します。

    この割り当ての値を引き上げるには、画面上の「変更リクエスト」をクリックし、必要なリソースの割り当ての引き上げをリクエストします。要求した量がそれほど大きくなければ、通常は数分でリクエストが承認されます。

    ISUCON練習代を7割安にする方法

    ISUCONの練習用にGCEインスタンスを作成する場合は、プリエンプティブルVMを使うことでコストを7割安に抑えられます。プリエンプティブルVMは、性能や動作は通常のVMとまったく変わりませんが、最大で24時間しか継続利用できません。また、Google側のメンテナンス等のタイミングでたまに自動で停止する場合があります。そのため、予選や本選の本番時には利用できませんが、練習用であれば問題なく利用できます。VMが停止した場合は、再起動してください。

    プリエンプティブルVMの作り方
    プリエンプティブルVMを作成するには、Google Developer ConsoleでGCEインスタンスを作成時する際に、ページ下にある「管理、ディスク、ネットワーキング、アクセスとセキュリティの各設定」をクリックし、「可用性ポリシー」の「プリエンプティブ」で「オン」を選択します。
    01

    gcloudコマンドでGCEインスタンスを作成する場合は、--preemptibleオプションを追加します。
    $ gcloud compute instances create example-instance \
    --zone asia-east1-c \
    --preemptible

    プリエンプティブルVMについて詳しくはドキュメント(英語)をご覧ください。

    Q&A

    Q. 社内の複数のチームで、共通の #ISUCON 用GCPプロジェクトを利用しても問題ないでしょうか?チームごとに別々のアカウント/プロジェクトを用意する必要はありますか?
    A. プロジェクトの共有は構いませんが、共有するチーム数によってはQuotaに制限されるおそれがあるので注意してください。参考までに1プロジェクトに複数のクーポンが適用可能です。

    Q.プロジェクト名は「ISUCON5」であることは必須ですか?
    A.プロジェクト名についてですが、任意のもので良いです。予選終了時の手続にて正確に運営側に申告していただく必要があります。

    Q.運営メンバーの登録はオーナーとして登録する理由がありますか?イメージ起動するなら「編集可能」で十分ではないですか。
    A.編集可能でOKです


    Q&Aなどは適宜追加していきます、質問などは Twitter @941 までお願いします。DMでのやりとりがよければフォローいたしますのでMentionを飛ばしてください。