GCP勉強第2弾。
今回は色々なサービスを使って簡単なシステム構成を構築してみます。
目的
以下図のような構成を持つシステムを構築する

ユーザー(クライアント)はGCP上の管理サーバにのみ外部からSSHできる。
WEBサーバ1, 2はそれぞれhttpリクエストを受けてコンテンツを返却する。
WEBサーバは内部IPアドレスからのみのアクセスしか受け付けない(httpもsshも)
WEBサーバそれぞれに外部IPからhttpアクセスできるように、Load Balancerを用意する。
Load Balancerは外部IPアドレスを持ち、httpアクセスのみ許可されている。
・・・こんな感じです。
外部からマネジメントするには管理サーバ経由で行う、というポリシーの元構築する感じですね。
WEBサーバには外部からのアクセスをさせないよう、そもそも外部IPを持たせずに構築したいと思います。
VMインスタンス構築
VPCネットワーク作成
まずはVMインスタンスをそれぞれ作成していくのですが、
今回はできるだけセキュアに構築したいということで、不要なポートは開けたくない。
前回の勉強記事ではデフォルトのnetworkを使用しましたが、今回はそこから作成していきます。
左のメニューから[VPCネットワーク] -> [VPCネットワーク] をクリック

[VPCネットワークを作成]をクリック

VPCネットワーク作成の画面に遷移するので、情報を入力していきます。

名前:VPCネットワークの識別名。今回はtest-server-networkとします。
説明:任意で後でわかりやすいように記載
サブネット:基本的には自動で良いかと思います。自分でサブネットを設定したい場合はカスタムにするのが良いと思われますが、まだやったことないのでどういう制約があるのか分からぬ

IPV4ファイアウォールルールのチェックは全て外しておきます。(後で自分で設定する)
静的ルーティングモードはよくわからないのでとりあえず「リージョン」にしとく。
ここまで入力できたら[作成]を押下。
問題がなければ正常に作成されるはずです。

VPCネットワークにファイアウォールを設定
上の画面で先ほど作成したVPCネットワーク(今回はtest-server-network)をクリックします。
すると、色々な情報が出てくるので「ファイアウォール」のタブをクリックします。

[ファイアウォールルールを追加]というボタンがあるのでクリック

まずは外部からのsshを許可するファイアウォールルールを作成します。


ターゲットには「ネットワーク上のすべてのインスタンス」を設定しておきます。
これでこのVPCネットワークを使用したインスタンスは自動的にこのルールに従ってアクセスを制限することができます。
送信元IPv4範囲に許可したいIPアドレス帯を入力します。
今回はグローバルからのアクセスは全て許可したかったので、「0.0.0.0/0」としました。
もしグローバルからのIPを絞りたい場合(例として、200.200.200.33からのみアクセス可)は
「200.200.200.33/32」と設定するとよし
あと、このルールで許可するプロトコルはSSHのみにしたいので、TCPにチェックを入れて22番ポートのみ許可します。
もしSSHポートを変更している場合、変更先のポート番号を入力します。
ここまで入力完了したら「OK」をクリック。
問題なければVPCネットワークのファイアウォールルールに追加されます。

あとは同様に同じNW帯の内部IPアドレスからのアクセスは全て許可するルールを追加します。
設定はこんな感じ。


今回使用するプライベートNWのIPアドレス帯は「10.128.0.0/20」なので、IPv4範囲にはそれを指定。
プロトコルは全て許可します。
入力が終わったら「作成」をクリック。
同様にVPCネットワークにルールが追加されます。
とりあえず今回はこれだけ入れておけばOKです。
VMインスタンス(管理サーバ)を作成
ここまでできたら管理サーバを作ってみます。
VMインスタンスの作成方法は前回まとめているので、そちらを参考にしつつ、前回と違う部分だけ説明。
インスタンス名は「test-mgmt01」、OSはCentOS7とします。
前回と違う箇所は「ネットワーキング」の中の「ネットワークインターフェース」設定です。
デフォルトだと、GCPが事前に用意した「default」というネットワークを使用するようになっているのですが、
今回は自分で作成したネットワークを使用したいため、そこを編集します。

「ネットワークインターフェース」のdefaultネットワークのプルダウンをクリックすると、設定画面が出てきます。

ネットワーク:先ほど作成したVPCネットワーク名(プルダウンで選択できます)
サブネットワーク:指定したVPCネットワークと同じもの
IPスタックタイプ:v6を使わないのであればシングルスタックでOK
プライマリ内部IPv4アドレス:static要件がなければエフェメラルでOK
外部IPv4アドレス:こちらもstatic要件がなければエフェメラルでOK
ネットワークサービスティア:よくわからんけどデフォルトがプレミアムだったのでそっち。おそらくコストも変わらない(ハズ)
こんな感じで入力して「完了」をクリック。
また、前回はVMインスタンスを作成した後にユーザーを追加(=公開鍵の設定)をしましたが、作成の段階でもSSH公開鍵の設定ができます。
今回はこのタイミングで公開鍵を設定してしまいます。


上部赤枠の部分を押したり入力したりすればOK
あとは前回通りにVMインスタンスの作成をすればOKです。
VMインスタンス(WEBサーバ)を作成
同じようにWEBサーバも作っていきます。
管理サーバとほぼ同じやり方で作成してOKですが、大きな違いとして
WEBサーバには外部IPアドレスを持たせないようにします。
設定箇所は先ほどの「ネットワークインターフェース」の設定部分。
外部IPv4アドレスを「なし」に設定します。

これでこのインスタンスには外部IPアドレスが割り当てられなくなります。
あとは同じように作成するだけです。
インスタンスが立ち上がったらOS側の設定をしていきます。
が、とりあえず今回はここまで。
続きはPart2で整理していきます。
コメント