LoginSignup
2
0

More than 1 year has passed since last update.

ネットワーク作成からスケーラブルな仮想サーバー構築までをクラウドで行う【GC編】

Last updated at Posted at 2021-09-27

はじめに

こちらでAWSでスケーラブルな仮想サーバー構築を行うという記事を書いたのですが、そのGC編です。ちなみにこの記事では、GCとはGoogle Cloud(2020年10月にGCP→GCに名称が変わった)のことを指しています。この記事の表記ではGCで統一してみようと思います。

対象

AWSの記事と同じです。

前提

AWSの記事と同じです。GCでもコンソールの操作メインで書いてみます。

構成図

AWSの記事と同じような感じになりますが、GCの場合、インスタンスをInstance Groupとしてまとめることで、ロードバランサの負荷分散とオートスケーリングの設定の両方ができます。

gcp.png

方法

キャプチャやサービスの名称は2021年9月現在の情報です。

ネットワーク構築

VPC/サブネット切り分け、およびファイアウォールの設定を行います。

VPC

GCにログイン後、左メニュー「VPC ネットワーク」> 「VPC ネットワーク」を選択し、ページ上部の「VPC ネットワークを作成」をクリックします。今回名称と説明を以下のように指定しました。

名前 説明
auto-scaling-test-vpc for AutoScalingTest

「サブネット作成モード」では「カスタム」を選択し、1つのサブネットを作成します。以下のような値にしました。

名前 リージョン IPアドレス範囲
auto-scaling-test-public-subnet1 asia-northeast1 10.0.1.0/24

作成後は一覧にこのように表示されています。
スクリーンショット 2021-09-27 19.16.31.png

インスタンス

仮想サーバーのインスタンスを作成していきます。

インスタンスグループ作成

左メニュー「Compute Engine」> 「インスタンスグループ」に進み、「インスタンスグループを作成」をクリックします。作成画面に遷移するので、「新しいマネージドインスタンスグループ」を選び、項目を入力します。前半部分は以下のようにしました。

名前 ロケーション リージョン
auto-scaling-test-mig 複数のゾーン asia-northeast1

その後、「ポート名のマッピングを指定する」をクリックし、以下の値を設定します。

ポート名 ポート番号
http 80

「インスタンステンプレート」では「新しいインスタンステンプレートを作成」をクリックし、テンプレート作成画面に遷移します。今回は以下のように項目を入力しました。OSはデフォルト(Debian)のままにしています。

名前 マシンタイプ
auto-scaling-test-template e2-micro

その後、「管理、セキュリティ、ディスク、ネットワーキング、単一テナンシー」をクリックし、「管理」タブを開いて 「自動化」の「起動スクリプト」に以下を入力します。インスタンス起動時に、自動でApacheを起動する設定です。

#!/bin/bash
apt update
apt install -y apache2
chown -R $USER:$USER /var/www
echo Hello,AutoScalingTest > /var/www/html/index.html

その後「ネットワーキングタブ」で以下を設定します。

ネットワーク ネットワークタグ
作成したVPC(auto-scaling-test-vpc) auto-scaling-test-tag

「保存して次へ」をクリックし、最後にスケーリングの設定をします。以下の数値を入力します。

インスタンスの最小数 インスタンスの最大数
2 4

ここまで進んだら、「作成」をクリックします。

インスタンスグループに遷移するので、その中に「auto-scaling-test-mig」が表示されていることを確認します。少し待ったら、ステータスにチェックが入ります。

スクリーンショット 2021-09-27 19.41.12.png

ファイアウォール

ヘルスチェック用のファイアウォールを作成します。「VPCネットワーク」 > 「ファイアウォール」 > 画面上部「ファイアウォール ルールを作成」をクリックし、項目を入力します。今回は以下のように設定しました。

名前 ネットワーク ターゲット ターゲットタグ ソースフィルタソースIPの範囲 ソースIPの範囲プロトコルとポート プロトコルとポート
auto-scaling-test-allow-health-check 作成したVPC(auto-scaling-test-vpc) 指定されたターゲットタグ auto-scaling-test-tag IP範囲 130.211.0.0/22, 35.191.0.0/16 指定したプロトコルとポートにチェック
「tcp:」にチェック
ポート入力欄に「80」

入力後、「作成」をクリックします。以下のようにファイアウォールが作成されます。
スクリーンショット 2021-09-27 19.49.37.png

オートスケーリングの確認

左メニュー「Compute Engine」> 「VMインスタンス」をクリックし、インスタンス一覧に遷移してみると、インスタンスが2台作成されます。オートスケーリングが効いているか確認するため、このうち1台を手動で削除してみます。1台にチェックを入れ、画面上部の三点リーダーから「削除」をクリックします。

スクリーンショット 2021-09-27 22.35.43.png

確認画面が表示されるのでここでも「削除」をクリックします。削除が終わったあとにしばらく待ってみて、新しくインスタンスが作成されることが確認できたらOKです。(作成されているかどうかを確認するには、画面の更新をする必要があります。あと結構時間がかかります)

ロードバランサ

ロードバランサ設定を進めます。

外部IP予約

「VPCネットワーク」 > 「外部IPアドレス」 > 画面上部「静的アドレスを予約」をクリックし、予約を行います。今回は以下のようにしました。以下以外はデフォルトです。

名前 タイプ
auto-scaling-test-ip グローバル

入力後、「予約」をクリックします。

ロードバランサ

左メニュー「ネットワークサービス」 > 「Cloud Load Balancing」 > 「ロードバランサを作成」 > 「HTTP(S) 負荷分散」の「構成を開始」をクリックして次ページへ遷移します。
「インターネットから自分のVMへ」を選択し、「続行」をクリックします。

そこで、ロードバランサの名前を設定できます。今回はauto-scaling-test-lbという名前にしました。
その後、「バックエンドの構成」をクリックし、こちらにも名前を設定します。今回はauto-scaling-test-lb-backendとしました。その後「バックエンド」 > 「新しいバックエンド」で値を入力します。

インスタンスグループ ポート番号
作成したインスタンスグループ(auto-scaling-test-mig) 80

ヘルスチェックに関しては、「ヘルスチェックを作成」をクリックし、値を入力します。以下入力した値です。

名前 プロトコル ログ
auto-scaling-test-health-check HTTP オン

ここまで入力したら「保存」をクリックし、最後に「作成」をクリックします。

次に「フロントエンドの構成」をクリックします。ここでは以下の項目を設定します。

プロトコル IPアドレス IPバージョン ポート
HTTP 予約したIPアドレス(auto-scaling-test-ip) IPv4 80

「完了」を押下し、「作成」をクリックします。

ここまで設定すると、ロードバランサ&オートスケーリングの組み合わせが作成されています。作成したロードバランサをクリックして「IP:ポート」を確認し、ブラウザからアクセスすると以下のようなページに遷移します。

スクリーンショット 2021-09-20 21.30.53.png

負荷分散の確認

負荷分散が正しく行われているか確認します。
とりあえずファイアウォールを追加します。「VPCネットワーク」 > 「ファイアウォール」 > 画面上部「ファイアウォール ルールを作成」をクリックし、以下のように設定します。

名前 ネットワーク ターゲット ターゲットタグ ソースフィルタソースIPの範囲 ソースIPの範囲 プロトコルとポート
auto-scaling-test-allow-ssh 作成したVPC(auto-scaling-test-vpc) 指定されたターゲットタグ auto-scaling-test-tag IP範囲 0.0.0.0/0 指定したプロトコルとポートにチェック
「tcp:」にチェック
ポート入力欄に「22」

入力後、「作成」をクリックします。以下のようにファイアウォールが作成されます。

スクリーンショット 2021-09-27 21.37.04.png

これで、インスタンスにSSH接続ができるようになりました。
左メニュー「Compute Engine」> 「VMインスタンス」をクリックし、インスタンス一覧に遷移します。今回作成したインスタンスは一覧の中に2つあるはずなので、この2つのインスタンスの「接続」 > 「ブラウザウィンドウで開く」をクリックし、SSH接続のコンソールブラウザを展開します。両方展開すると2ブラウザ同時に開くことができます。

その後、両方のコンソールブラウザで以下のコマンドでApacheのログを確認してみます。

cat /var/log/apache2/access.log

すると、GoogleHC/1.0からのアクセスがたくさんあることがわかります。これはHealthCheckからのアクセスです。ここで、ブラウザからロードバランサの「IP:ポート」に10回ほどアクセスし、再度上のコマンドを叩いてみます。すると、両方のコンソールブラウザでHealthCheck以外からのアクセスが確認でき、その数を合計するとアクセスした回数になっているはずです。
このようにして、アクセスが分散されていることを確認できます。

おわりに

AWSと比較するとオートスケーリングとロードバランサの対象のグループが同じな分、シンプルに設定することができた印象です。ですがヘルスチェック用のファイアウォールを設定したりと、AWSと異なる部分があったため少し手間取りました。

たくさんGCも触って、操作感を覚えていきたいです。

(今回はあえてコンソールでの操作のみに拘りましたが、Cloud Shellとかを使った方が楽できるだろうなあ・・・とも感じました。)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0