GCPの理解を深めるために基本の構成たててみます。
構成
GCPはなんといってもLBが強いです(中の人談)
そのLBがのGCE1台とGCSのバケットを置きました。
特定パスの場合のみGCSへ向けて、それ以外はWebサーバーという構成です。
構築
詳細な手順は省きます。
GCEの構築
1.デフォルトでもいいけどVPCとサブネットを作成
2.どんなスペックでもいいけどサーバを立てる。
その際ファイヤーウォールで「SSH」と「http」は開放しておくこと
必要であれは/var/www/html/index.htmlを作っておくと分かりやすい
4.割り当てられているグローバルIPにアクセスして表示されたら終わり
GCSの構築
1.バケットを作成
2.作成したバケットのなかにフォルダを作成
(フォルダ名がURLパスになるので「images」などが適当)
3.作成フォルダのなかに画僧ファイルなどを入れる
4.画像ファイルに一般公開権限をつける
ここから
「権限の変更」を選択して一番したのallUsersを追加
LBの構築
1.LBに割り当てるインスタンスグループを作成
GCPのLBにはインスタンスを直で配置できないのでインスタンスのグループ(1台でも可)を当てる
非マネージドグループで作成。マネージドグループだとオートスケールしてくれる
2.ネットワークサービス→負荷分散→HTTP(S)負荷分散
3.バックエンドの設定
先に作ったインスタンスグループを設定。ヘルスチェックはデフォルト設定でなく新規作成がおすすめ。
HTTPで/helthcheck.htmlを監視する感じで。
あわせてGCSで作成したバケットもバックエンドに登録
4.パスルールの設定
こんな感じ
5.フロントエンドの設定
名前だけつけてあとはデフォルト設定でOK
6.LB詳細のモニタリングでインスタンスが正常認識されればOK
確認
・LBに割り当てられたIPアドレスにアクセスしてindex.htmlが表示でOK
・IPアドレス/images/filename.jpgなどにアクセスしてGCSにおいたファイルが表示されればOK
拡張
上記で基礎の基礎はできたので追加です。
上記構成をオートスケールにして耐障害性を高めます。
GCEイメージの作成
デフォルトのイメージではHTTPDなどもインストールされていないため予めインストールされて自動起動もするようなイメージを作成します。(先程のGCEがそうなってる前提)
1.GEE→イメージ→イメージの作成からソースディスクに先に作ったGCEを選択して作成
インスタンスグループの作成
先程は非マネージドグループだったので今度はマネージドグループで作成します
1.その前にインスタンステンプレートの作成
基本的にGCE作るときの条件をそのまま当てはめるだけ。
OSイメージに先程作成したイメージを適応するため「custom_image」とする
ファイヤーウォールが正しく設定されていることに注意
2.インスタンスグループの作成
マネージドインスタンスグループの作成を選ぶ
ロケーションはせっかくなので「複数のゾーン」(1リージョン内で更に3ゾーンに別れてるので)
自動スケーリングは「ON」
インスタンスの最小は1、最大は3くらいにすると全ゾーンで起動する
スケーリングする条件でCPU使用率50%にしとくとスケールしやすい
ヘルスチェックは先の条件と同じでよい。
3.LBの設定変更
バックエンド設定しているインスタンスグループを新規で作ったものに変更
確認
ヘルスチェックで問題ないことを確認後
先と同じようにアクセスするとそのままindex.htmlが表示されるはず
(されなければSSHでご確認)
・CPU使用率を上げてみてスケールアウトすることを確認
(インスタンスログインしてから"yes > /dev/null"なんかでCPU上げる)
・スケールアウト後ブラウザアクセスしてF5更新すると各サーバへラウンドロビンされることを確認
以上
おまけ
LBのバックエンド設定からCDNをチェック一発で有効化できます(しゅごい)
その後F5更新するとCDNを見に行くため画面は変更しない。(各サーバでindex.htmlの中身替えてわかりやすくして)
まとめ
LB設定がAWSと比べてわかりにくいけど慣れの問題かな
GCPええな...