クラウドサーバーのサムネイル

クラウドサーバー

GCEのプリエンプティブインスタンスをほぼ常時起動(永続化)する

公開日: 2018.8.24

通常価格の半額以下で借りられるGCEのプリエンプティブインスタンス。勝手にシャットダウン&最大24時間起動がネックですが、なんとか常時起動(永続化)して使えないものかと試してみました。

編集ノート:SERVERSUSでは、パートナーリンクからコミッションを得ています。コミッションが記事の意見や、サービスの評価に影響を与えることはありません。

国内VPSばりに安い、GCEのプリエンプティブインスタンス

プリエンプティブインスタンスのメリットはなんといっても価格。

GCEのクラウドならではの、スケーリングのしやすさ、管理のしやすさを、VPS並みの料金で実現できるのは、大きなメリットです。

<料金表(アイオワの場合)>

インスタンスタイプ CPU メモリ 通常月額 プリエンプティブ月額

f1-micro 1 0.60GB $3.88 $2.56
g1-small 1 1.70GB $13.13 $5.11

n1-standard-1 1 3.75GB $24.2725 $7.30
n1-standard-2 2 7.5GB $48.5500 $14.60
n1-standard-4 4 15GB $97.0900 $29.20 Google Compute Engine の料金 | Compute Engine ドキュメント | Google Cloud

f1-microだと割安感がないですが、それ以外のインスタンスだと半額以下です。

4CPU/15GBメモリで30ドルってのはかなり安い部類に入ります。

CPUとメモリを自由にカスタムすることも可能です。

プリエンプティブインスタンスは最大24時間しか起動しない・勝手にシャットダウンする

プリエンプティブインスタンスはいいことばかりではなくて、GCEの空きリソースを使う代わりに安くなる仕組みなので、GCEの都合で勝手にシャットダウンされるし、最大でも24時間しか起動できません。

でも、バッチサーバーなど、24時間365日常時起動しなくても、1日数回・数分のシャットダウンが許容されるのであれば、かなり使えるサーバーと言えます。

リモートで起動リクエストを送れば常時起動も可能か?

勝手に落ちるなら、落ちる度に自動起動させればほぼ永続化できるってこと。ただし、プリエンプティブインスタンスは自動再起動の設定ができないので、なんとかしてリモートで起動させる必要があります。

今回は、管理用マシン(自宅サーバー)からgcloudコマンドでインスタンスの起動処理を毎分行うことにしました。

ちなみに自宅サーバーはIntel Compute StickにUbuntuを入れたサーバーで、電気代は常時電源ONで月に数十円です。

毎分処理はcronで行います。

gcloudからインスタンスの起動をする設定

下準備

やり方は下記のページのままなので割愛します。

(1) 役割の作成 (2) IAMの作成 (3) 管理マシンへの秘密鍵のインポート (4) 管理マシンで認証

までやればOKです。

GCE インスタンスの起動/停止を gcloud + cron でスケジューリングする

gcloudコマンドをcronに登録

次にcronにgcloudの起動コマンドを登録します。

gcloudはショートカットなので、「which gcloud」でフルパスを探しておいて、cron側にはフルパスを記述します。

下記は、毎分起動コマンドを実行する設定です。

# GCEインスタンスの自動起動
* * * * * /usr/bin/gcloud --account=<作成した> compute instances
 start <インスタンス名> --project <プロジェクト名> --zone <ゾーン名>

GCEのプリエンプティブインスタンスを、ほぼ常時起動(永続化)できました。

数百〜数千円くらいのサーバーなら、さくらVPSとかConohaとかでもいいんですが、将来的にスケーリングが必要そうなバッチサーバーなどは、メモリやCPU数をカスタマイズできるGCEの方が使いやすい気がします。

普通にWEBサーバーとして使うには厳しいかもですが、いろいろアイデア次第で使い勝手の良いサーバーになってくれそうです。


価格は記載がある場合を除き、すべて税込みです。

関連キーワード

クラウドサーバーの新着記事