最低限これだけは!GCE運用 最初の一歩 ~スナップショット編~
本記事ではGCEを運用するにあたって、最低限まずはやっておくべきことを紹介します。
目次
GCEではOSから上のレイヤーは利用者の責任範囲
GCPではセキュリティとマネジメントを、Googleと利用者で共有するモデル(責任共有モデル)を取っています。
GCPのIaasサービスであるGCE(Google Conpute Engine)の場合、ネットワークやハードウェアなどの下層レイヤーはGoogleの責任範囲、OSから上のレイヤーは利用者の責任範囲です。
つまり、GCEではOSから上のレイヤーは利用者自身で運用する必要があります!!
GCEインスタンスでも、カーネルパニックやファイルシステム破損など、OS起因の障害は発生する可能性があります。障害対策を何もしていないうちに、利用者責任範囲内の障害が発生すると大変です。
インスタンスの復旧ができなくなり、急いでGoogleサポートに問い合わせしても「サポート範囲外となってしまいます」と言われ。。。。という状態に陥ってしまうかもです。
GCE運用の最初の一歩として、まずは障害対策をしておきましょう。
最低限の障害対策
①スナップショットでバックアップを取得
スナップショットは、インスタンスが使用しているディスクのバックアップを取得する機能です。(参考GCEのスナップショットバックアップ機能詳細とお得な使い方!)
2回目以降スナップショットを取得する場合は、前回との差分のみを取得するため、短時間かつ低コストでバックアップできるのが特徴です。取得したスナップショットはGCS(Google Cloud Storage)上に保管されます。
スナップショットを取得しておくことで、万が一インスタンスに障害が発生した場合でも、スナップショットからインスタンスの複製を新たに作成することで復旧できます。
ここで注意していただきたいのは、スナップショットはあくまでディスクのバックアップであることです。
復旧前と同じインスタンスを複製するには、ディスク以外のインスタンスに紐づく値(インスタンス名、ネットワーク、セキュリティなど)も、復旧前のインスタンスと同じにする必要があります。
また複数ディスクを使用している場合は、それぞれのスナップショットを作成する必要があります。
その他、便利機能としてスナップショットのスケジュール機能というスナップショットを定期的に自動で取得する機能があります。(2019/05/16時点でベータ版)
自動化スクリプトを作成して、タスクスケジューラーを利用して定期的にスナップショットを取得する、などの対応の手間が省けますのでお勧めの機能です。
スナップショットの設計をするにあたっては、スナップショットのベストプラクティスも参考にしてください。
②復旧計画と手順書を作成
クラウドだから運用設計は必要ない、という考えは誤りです!
スナップショットから復旧する手順をあらかじめ作成しましょう。
本番環境の場合、障害復旧は1分1秒でも早く実施したいはずです。手順が確立されていないと、テンパること間違いなしです。手順をあらかじめ作成しておけば、復旧までの時間をなるべく短くできます。
また手順書のテストをしておらず、実際に障害が起きても手順書が役に立たない!なんてことがないように、テストも忘れずにしておきましょう。GCEであればインスタンスの作成/削除やスナップショットの作成などが簡単にできますので、テストも楽チンです。
スナップショットのお値段は?
気になるのはお値段です。
スナップショットは①ストレージ料金と②ネットワーク料金がかかります。(公式ドキュメント)
①月額ストレージ料金
ストレージ料金は設定ディスクではなく、使用したディスクに対してのみ請求がかかります。公式ドキュメントの例をお借りすると、5TBの設定ディスクのうち、2TBを使用していたとすると、2TB分の料金のみ請求されます。
また、2回目以降は変更された増分のみの料金がかかります。(低コスト!)
②ネットワーク料金
スナップショットとソースディスクのロケーションが同じ場合はネットワーク料金はかかりません!
(ディスクのロケーションとは異なる場所でスナップショットを作成したり復元したりする場合はネットワーク費用が発生します)
③試算してみる
ディスクもスナップショットもリージョンは東京(asia-northeast1)とします。
ディスク使用量が1000G、差分が1日50G発生(ディスク使用量は変化なし)、7日でローテートすると仮定すると、使用量は1300GBです。
料金計算ツールを用いて確認すると、1年間で約60,000円程度でした!
手間もそれほどかからず、お値段もお手頃ですので、是非とも活用したいところです。
スナップショットからインスタンスを復旧する
スナップショットのイメージを掴んでいただくために、コンソールからスナップショットを取得して、インスタンスを復旧してみます。(公式ドキュメント)
①インスタンス作成
スナップショットを取得するためのインスタンスを作成します。
インスタンスにsshログインし、正しくスナップショットが取得できているか確認する用のファイルを作成します。
iijima@instance-1:~$ touch snapshot.txt
iijima@instance-1:~$ ls
snapshot.txt
②スナップショット作成
スナップショットをコンソールから作成します。
スナップショットの画面から「スナップショットの作成」を選択します。
ソースディスクに先ほど作成したインスタンスを指定して作成します。
③インスタンス障害発生
インスタンスで障害が発生したと仮定し、インスタンスを削除します。
④インスタンス復旧
先ほど作成したスナップショットから、インスタンスを作成します。
スナップショットの画面からスナップショット名を選択します。
スナップショットの詳細が表示されますので、「インスタンスの作成」を選択します。
ブートディスクにスナップショットが指定されているのが確認したのち、インスタンスを作成します。
ブートディスク以外の設定は変更可能ですので、名前やサービスアカウントやファイヤーウォールの設定などは、復旧前のインスタンスで指定した値を設定する必要があります。
⑤復旧できたか確認
正しくスナップショットが取得できているか確認するために、インスタンスにsshログインしファイルがあるかどうか確認します。
iijima@instance-1:~$ ls
snapshot.txt
ファイルがありますので、正しく復旧できていることがわかります。
まとめ
GCE運用の第一歩として、障害対策を紹介しました。
(スナップショットの取得はあくまで最初の一歩です。GCEを運用するにあたっては、冗長化、モニタリング、ロギング、セキュリティなど考慮することが他にもあります。)
GCEを使われる際には、スナップショットの取得をお忘れなく!