こんにちは
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
前回GCEとCloud SQLを使って構築したDjango環境にGCLB(Google Cloud Load Balancing)を導入し、VMでの負荷分散環境を作りたいと思います。
今までの記事は以下となります。
環境イメージ
ざっくりこんな感じのイメージになると思います。正直自信はありません。
GCLBで使うプロキシのSubnetをVPC上に作らないといけなかったり、ヘルスチェック用の定義を作成しないといけなかったりとAWSと比べると色々手間だなぁと感じました。(もしかしたらAWSもそのあたりの設定項目が実はあり、私が気が付いていだけなのかもしれませんが…)
構築
VMをもう1台立ち上げる
Subnetをもう1つ作る
VPCの管理画面を開きます。サブネットタブを押下し、サブネットを追加を押下します。
今回は以下の設定を入れました。他はデフォルトの設定になります。
- 名前:classact-public-subnet02
- リージョン:asia-northeast1(東京)
- IPv4範囲:192.168.2.0/24
独り言
Clouud SQLとの連携に必要なVPCネットワークピアリングやプライベートサービスアクセスはVPC単位で設定されているからSubnetに追加に伴う追加設定は思ったよりも少なそう。。。
私の環境の場合FWのルールがSubnetに割り当てているIPアドレスレンジ単位になるので、そこには手を入れないといけませんでしたが。
VMを作成するためのマシンイメージを作成する。
GCE管理画面に移動してマシンイメージの元となるVM(今回はclassact-vm-django)を選択します。
右の3ポチ(名前がわからない)をクリックして新しいマシンイメージの作成を押下します。
以下の設定で作成します
- 名前:classact-django-image
- ソースVM:classact-vm-django(自動で選択されてます)
- ロケーション:マルチリージョン:asia
作成後暫く待機するとステータスに緑のチェックがつき、利用可能となります。
VMを立ち上げる
作成したpublic-subnet02にマシンイメージを使ってVMをデプロイしていきます。
作成したマシンイメージからインスタンス作成を押下します。
以下の設定で立ち上げました。長くなり恐縮です。
- 名前:classact-vm-django-other
- リージョン:asia-northeast1(東京)
- ゾーン:asia-northeast1-b(前立ち上げたVMが1-aなので別な場所にデプロイします)
- マシン構成:E2
- マシンタイプ:e2-micro
- ファイアウォール:ロードバランサ、HTTP
- ネットワーク:classact-vpc
- サブネットワーク:classact-public-subnet02
GCLBを作成し、VMと紐づける
インスタンスグループを作成する
GCLBにはバックエンドサービスというものを紐づけていくのですが、そのバックエンドサービスを作成するためにインスタンスグループというものを用意する必要があります。これを用意します。
インスタンスグループは各リージョン・ゾーンごとに1つずつ作らないといけない様子でした。
今回は東京リージョンの1-a,1-bそれぞれにDjango VMがあるため2つ作ります。
まず1つ目の設定は以下としました。VPCやSubnet、紐づけるVMを選択して作成します。
次に2つ目です。
正常に作成されていることを確認します。
バックエンドサービスとヘルスチェックの作成
次にインスタンスグループをまとめるバックエンドサービスを作成します。
バックエンドサービスを作成を押下します。
今回GCLBで紐づけたいVMは東京リージョンにしかない為、Regionalを選択します。
バックエンドサービスを作成したいのですが、途中にヘルスチェックを作成する項目があるので、まずこれを埋めます。
以下の設定で作成していきます。基本デフォルトで問題ありませんでした。
- 名前:classact-django-backend-healthcheck
- プロトコル:HTTP
ヘルスチェック作成後、バックエンドサービスの作成に戻ります。
以下の設定で作成しました。
- 名前:classact-django-backend-service
- リージョン:asia-northeast1
- ロードバランサの種類:リージョン外部アプリケーションロードバランサ
- バックエンドタイプ:インスタンスグループ
- プロトコル:HTTP
- ネットワーク:classact-vpc
- バックエンド1:インスタンスグループ:classact-instance-group-public-subnet01
- バックエンド2:インスタンスグループ:classact-instamce-group-public-subnet02
GCLBをデプロイする
ロードバランサをデプロイします。ロードバランサを作成を押下します。
ALBを使いたいのでアプリケーションの方を選択
インターネットにコンテンツ提供するLBなので、インターネット接続を選択
DjangoのVMは東京リージョンにしかない為、リージョンワークロードの方を選択
構成を押下します。
プロキシ用のサブネットの作成が必要そうですね。サブネットを予約を押下します。
以下の設定でProxy用のサブネットを作成します。
- classact-alb-subnet
- IPアドレス範囲:192.168.100.0/24
改めて以下の内容でGCLBのフロントエンドの構成を作成します。
入力出来たらバックエンドの構成を押下します。
- ロードバランサの名前:classact-django-alb
- リージョン:asia-northeast1(東京)
- ネットワーク:classact-vpc
- フロントエンドIPの名前:classactfrontendip
- プロトコル:HTTP
画面右にバックエンドを入れる項目がありますので、作成したバックエンドサービスを選択します。今回はclassact-django-backend-serviceとなります。入力後作成を押下します。
作成されたことを確認します。
作成したGCLBのIPアドレスを確認します。
テスト
GCLBのIPアドレスを任意のWebブラウザで叩いてDjangoのデフォルトの画面が出てくれば環境構築は成功です。
お疲れ様でした。