4年ぶりにGCPを触り始めているのですが、自分の経験としてロードバランサー配下でインスタンス2台利用して負荷分散の設定をしたことがなかったので、今回テストとして試してみました。まずは概念からまとめていきたいと思います。
GCLB(Cloud Load Balancing)の概要
https://cloud.google.com/load-balancing
- 以下3つのロードバランサーがある
- HTTP(S) 負荷分散 :HTTP および HTTPS アプリケーション用のレイヤ 7 負荷分散
- TCP 負荷分散TCP/SSL :プロトコルを使用するアプリケーション用のレイヤ 4 負荷分散またはプロキシ
- UDP 負荷分散 :UDP プロトコルを使用するアプリケーション用のレイヤ 4 負荷分散
- 負荷分散の対象サービスはGCEインスタンスグループ
- 料金はAWSと変わらず約4000円ほど
GCEの作成
- VMインスタンス(2台)
- name:test-adachi,test-adachi02
- マシンタイプ(e2-micro/vCPU x 2,メモリ 1 GB)
- OS( Ubuntu 20.04.3 LTS)
- ネットワーク(テストなのでdefault)
- ファイアウォール(HTTPのみ)
- ネットワークタグ(ssh,http)
- Nginx
インスタンスグループの作成
- Compute Engine > インスタンスグループの作成
インスタンスグループはAWSでいうターゲットグループになります。なので上記作成したVMインスタンス2台を指定しましょう。ちなみにマネージド インスタンスグループ(ステートレス)ではオートスケールの細かい設定やヘルスチェックの設定等行えます。今後こっちに移行させたほうがが良さそうですね。
Cloud Load Balancingの設定
- ネットワークサービス>Cloud Load Balancing>ロードバランサーを作成
- HTTP(S) 負荷分散を選択しインターネットから自分の VM へを選択
- バックエンドの構成
- ホストとパスのルール
ここではホストやパスに対してURLを書き換えたり、リダイレクトなど細かく転送ルールの設定ができます。AWSだとリスナールールになりますね。今回は特にリダイレクトなどはしないので上記のバックエンドを指定しましょう。メンテページリダイレクトとかもできそうですね。
- フロントエンドの構成
フロントエンドの構成はAWSだとターゲットグループの細かい設定となります。今回はHTTPSではなくHTTPにしました。HTTPSであればSSL証明書も指定できますので、今後試していきたいと思います。その後作成したらフロントエンドに記載されているIPがロードバランサーのIPとなりますのでコピーしておきましょう。
これでロードバランサーの設定は以上となります。
ファイアウォールの作成
- VPCネットワーク>ファイアウォール
ロードバランサー用のファイアウォールを作成していきましょう。ターゲットタグはネットワーク上のすべてのインスタンスを選択し、ソースIPの範囲はLBのSRCIPである35.191.0.0/16, 130.211.0.0/22を指定します。以下決まっているので覚えましょう。プロトコルポートは80のみに絞ります。
ちなみにファイアウォールのターゲットタグでネットワーク上のすべてのインスタントを選択してしまうと、既存のインスタンスに全て紐付いてしまうので、VMインスタンスのネットワークタグとファイアウォールのターゲットタグを共通にすれば絞れるようにしましょう。
https://cloud.google.com/load-balancing/docs/https?hl=ja
負荷分散しているか確認
- Cloud Load Balancingのフロントエンドに記載してあるhttp://xxx.xxx.xxx.xxxでアクセスする
Nginxのアクセスログが2台とも出ていれば問題なしです。ちゃんとtest01,test02とアクセスするたびに切り替わって分散されていることが分かりますね。
まとめ
GCPで初めてLB作って、二台構成で負荷分散することができた。こんなに簡単なの!?
— adachin👾SRE (@adachin0817) September 12, 2021
AWSとほぼ設定は変わらず、サクッと設定することができました。と言ってもAWSの経験があるからこそと言った感じですね。今後はTerraformで書いてみよう!
参考:https://qiita.com/ShintaNakama/items/6b32cead9d7ea774afcd
0件のコメント