Linux
AWS
vps
gce
gcp

[GCE]GoogleComputeEngineのプリエンプティブによる格安サーバ構築

 Qiitaのタグランキングを見ても、GCEはさっぱり話題に上りません。それに比べてAWSは、常時ランキング入りです。

 ということで今回は、あまり記事を書いてもらえないGCEを使い、高機能サーバを格安のコストで構築する方法を解説します。

GCEの特殊な料金

 GCEはGoogleアカウントとクレジットカードがあれば、誰でも利用可能です。また、利用アカウントでGCEを使ったことが無ければ、一年間もしくは$300(約33,000円)の無料お試し期間が用意されています。

 さらにお試し枠とは別に永年無料構成が用意されています。サーバ設置のゾーンをus(アメリカ合衆国)にし、マシンタイプをf1-micro(vCPU x 1、メモリ 0.6 GB)HDD30GB以内にすると、インスタンスの稼働料金が無料になります。メモリが心許ないとはいえ、これは太っ腹です。

 GCEの料金体系として、さらに特殊なモノが一つあります。それがプリエンプティブという設定です。インスタンス作成時にプリエンプティブを有効にするかどうか設定できます。デフォルトでは無効です。これを有効にすると、そのサーバのインスタンスは、24時間に一度くらいの割合で自動的にシャットダウンします。そして次に起動の要求を出すまで、シャットダウンしたままとなります。

 そんな設定になんの意味があるのかと思うかも知れません。意味はあります。インスタンスを稼働させるのに必要な料金が大幅に安くなるのです。

プリエンプティブで安くなる金額

リージョンを東京にした場合の価格構成

CPU メモリ ストレージ 通常料金 割引後料金
vCPUx1(共有) 0.60GB HDD 10GB $5.22 $4.17
vCPUx1 3.75GB HDD 100GB $36.37 $14.87
vCPUx4 15.00GB SSD 100GB $146.78 $60.79
vCPUx8 52.00GB SSD 100GB $332.11 $118.38
vCPUx8 52.00GB SSD 64TB $14,793.47 $14,579.74

 プリエンプティブで安くなるのは、CPUとメモリのみです。ストレージは割引対象に含まれません。逆にプリエンプティブ構成にすると、継続利用割引という、一ヶ月稼働させ続けることによって行われる30%の割引が無くなってしまいます。こちらの割引はストレージを含みます。そのためSSD64TB構成にするとストレージ分の割引の有無に相殺されて、料金にほとんど違いが出なくなります。

 しかしSSD64TBなんて構成を作ることはまず考えられません。通常はプリエンプティブによる割引の方が、圧倒的に効果が高いのです。

「お前はもう死んでいる」というプリエンプティブのアンデッド化

 起動したとたんに24時間ぐらいで死んじゃうよと宣告を受けているプリエンプティブサーバですが、死んだら生き返らせれば良いのです。やることは簡単、復活させるための呪文を唱え続ければ良いのです。作業はものの5分とかかりません。手順は以下の通りです。

1 usリージョンに無料枠でインスタンスを一つ作る
2 ブラウザからSSHボタンでログインしたら「gcloud auth login」と入力、認証を通して使えるようにする
3 念のため「gcloud compute instances list」でコマンドが通るか確認
4 「crontab -e」で以下の内容を設定

*/1 * * * * gcloud compute instances start インスタンス名 --zone ゾーン名

 これでいつ死んでも大丈夫です。ちなみに停止中に起動コマンドを送ると、先行入力のように働くようです。

 どのぐらいで再起動するのか検証してみました

  1. GCEのコンソールから停止コマンドを送る
  2. 停止コマンドから10秒後、WEBページにアクセスできなくなる
  3. 停止コマンドから50秒後、WEBページへのアクセスが復活

 何度か試してみましたが、1分間に一回しか起動コマンドを送っていないのに、Webサーバの停止時間は40秒ぐらいでした。結局の所、この40秒が許容できるかどうかが肝です。

話題に上らない格安GCE

 AWSはAWS 認定ソリューションアーキテクトとかで技術者を囲い始めています。対するGCEは何にも無いっす。このままでは差が開く一方です。とりあえずは価格の安さを強調しておきたいと思います。

 GCEは安い、安いよ!