2&>1

AWSとかGCPとかGolangとかとか

GCPで負荷分散

GCPの理解を深めるために基本の構成たててみます。

構成

GCPはなんといってもLBが強いです(中の人談)

f:id:piyojir0:20190719134402j:plain

そのLBがのGCE1台とGCSのバケットを置きました。

特定パスの場合のみGCSへ向けて、それ以外はWebサーバーという構成です。

構築

詳細な手順は省きます。

GCEの構築

1.デフォルトでもいいけどVPCとサブネットを作成

2.どんなスペックでもいいけどサーバを立てる。

その際ファイヤーウォールで「SSH」と「http」は開放しておくこと

3.SSHで接続してhttpdのインストールと起動

必要であれは/var/www/html/index.htmlを作っておくと分かりやすい

4.割り当てられているグローバルIPにアクセスして表示されたら終わり

GCSの構築

1.バケットを作成

2.作成したバケットのなかにフォルダを作成

(フォルダ名がURLパスになるので「images」などが適当)

3.作成フォルダのなかに画僧ファイルなどを入れる

4.画像ファイルに一般公開権限をつける

ここから f:id:piyojir0:20190719141446j:plain

「権限の変更」を選択して一番したのallUsersを追加 f:id:piyojir0:20190719141503j:plain

LBの構築

1.LBに割り当てるインスタンスグループを作成

GCPのLBにはインスタンスを直で配置できないのでインスタンスのグループ(1台でも可)を当てる

非マネージドグループで作成。マネージドグループだとオートスケールしてくれる f:id:piyojir0:20190719144910j:plain

2.ネットワークサービス→負荷分散→HTTP(S)負荷分散

3.バックエンドの設定

先に作ったインスタンスグループを設定。ヘルスチェックはデフォルト設定でなく新規作成がおすすめ。

HTTPで/helthcheck.htmlを監視する感じで。

あわせてGCSで作成したバケットもバックエンドに登録

4.パスルールの設定

こんな感じ f:id:piyojir0:20190719154927j:plain

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ええな...