【GCP勉強録】Load Balancerを使ってセキュアで負荷分散できる構成を作ってみる(2) – スナップショットとVMインスタンスの複製 –

GCP
スポンサーリンク

 

前回記事の続きです。

流れを理解するためにもぜひこちらから参照してください。

では早速続きから構築していきます。

 

スポンサーリンク

VMインスタンス構築の続き

HTTPプロキシサーバの構築

前回はWEBサーバのインスタンスを作成したところで終了しております。

WEBサーバと言いつつ、まだ何もソフトウェアの設定もされていないまっさらなCentOS7のサーバなだけです。

ので、WEBサーバをWEBサーバ足らしめるためNGINXというソフトウェアをインストールします。

 

まずはWEBサーバ(test-web01)にSSHで接続しましょう。

前回の目的で説明した構成通り、まずは管理サーバへSSHします。

$ ssh -i [秘密鍵のファイルパス] [管理サーバの外部IPアドレス]
<出力>
Last login: Mon Jun 19 06:44:41 2023 from ***.***.***.***
[testuser@test-mgmt01 ~]$

その後、WEBサーバへSSH接続したいのですが、WEBサーバへSSHするには秘密鍵が必要です。

ので、test-mgmt01にSSHするときに使った秘密鍵をtest-mgmt01のローカルにも持ってきます。

もしくは新しくkeygenを使って作成しましょう。

新しく作成した場合はWEBサーバ(test-web01)に登録するのを忘れずに。

 

鍵を作ったら、それを使ってさらにWEBサーバ(test-web01)にSSHします。

[testuser@test-mgmt01 ~]$ ssh -i [秘密鍵のファイルパス] [WEBサーバの内部IPアドレス]
<出力>
Last login: Mon Jun 19 02:58:45 2023 from test-mgmt01
[testuser@test-web01 ~]$

鍵の設定ができていたら問題なくログインできるはずです。

ログインできたので、さっそくNGINXをインストールしてみます。

CentOS7ではyumによるパッケージ管理が簡単なので、yumでインストールを実施。

すると、以下のようなメッセージが出力されてうまくインストールできません。

[testuser@test-web01 ~]$sudo yum install nginx
<出力>
Cannot find a valid baseurl for repo: base/7/x86_64

これはなぜかというと、WEBサーバ(test-web01)には外部IPアドレスがついてないので、インターネットに接続することができず、yumのリポジトリにアクセスすることができないからです。

ではどうするかというと、外部にアクセスするようのプロキシサーバを立ててしまえばよいでしょう。

今回構築したサーバの中で外部IPアドレスを持っているのは管理サーバ(test-mgmt01)のみです。

なので、その管理サーバ内にHTTP Proxyの機能を持たせてしまいます。

 

というわけでまずはtest-mgmt01にSSHでログインして、Proxy用のソフトウェアであるsquidをインストールします。

[testuser@test-mgmt01 ~]$ sudo yum install squid
~省略~
完了しました!

忘れずにsquidの自動起動設定

[testuser@test-mgmt01 ~]$ sudo systemctl enable squid

あとはコンフィグの設定をしてHTTP Proxyとして使えるようにしましょう。

設定ファイルをエディター(今回はviを使う)で開いて、以下の設定を入れていきます。

[testuser@test-mgmt01 ~]$ sudo vi /etc/squid/squid.conf

#<変更箇所>
acl gcpnetwork src 10.128.0.0/20        # GCP Network 追記
#http_access allow localnet #コメントする
#http_access allow localhost #コメントする
http_access allow gcpnetwork # 追記

# 以下追記
no_cache deny all

forwarded_for off
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

今回は最低限の部分のみ変更。

Proxy用のポートを変更したりしたかったら各自調べて変えてください。(デフォルトは3128)

編集が完了したらsquidを起動。

問題なければエラーなく起動するはずです。

[testuser@test-mgmt01 ~]$ sudo systemctl start squid

 

ここまでできたら、実際にプロキシとして使えるかテストします。

再度WEBサーバ(test-web01)にログインして、テストとしてgoogleにアクセスしてみます。

[testuser@test-web01 ~]$ curl -I "https://www.google.com" -x http://[管理サーバの内部IPアドレス]:3128

<出力>
HTTP/1.1 200 Connection established

HTTP/1.1 200 OK

200 OKであればちゃんとアクセスできるようになっています。

これでProxyサーバの構築は完了。これを使ってyumで色々インストールしていきます。

 

WEBサーバにNGINXのインストール

プロキシサーバのおかげてWEBサーバも外部にアクセスできるようになりました。

ので、まずはyumの設定を変更してプロキシ経由で利用できるようにします。

[testuser@test-web01 ~]$ sudo vi /etc/yum.conf

#<変更箇所>
proxy=http://[管理サーバの内部IPアドレス]:3128 # 追記

これでyumはOK。

次にNGINXをインストールするのですが、デフォルトのリポジトリだと最新版がインストールできない場合があります。

ので、NGINXのリポジトリを作成します。

[testuser@test-web01 ~]$ sudo vi /etc/yum.repos.d/nginx.repo

# 以下記載
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

これでNGINXをインストールするときは最新のリポジトリを利用できるようになったので、あとはyumでNGINXをインストール。

[testuser@test-web01 ~]$ sudo yum install nginx -y

これでインストール完了です。

あとは適当に起動設定

[testuser@test-web01 ~]$ sudo systemctl enable nginx
[testuser@test-web01 ~]$ sudo systemctl start nginx

管理サーバ(test-mgmt01)から実際にhttpリクエストしてみます。

[testuser@test-mgmt01 ~]$ curl -I http://[WEBサーバの内部IPアドレス]
HTTP/1.1 200 OK
Server: nginx/1.24.0

200 OKなので大丈夫そうです。

ここまでできたらWEBサーバ(test-web01)のOSを落としておきます。

[testuser@test-web01 ~]$ sudo shutdown -h now

 

VMインスタンスの複製

WEBサーバ(test-web01)の設定は終わりましたが、今回はWEBサーバは2台必要です。

なので、もう1台作成する必要があるのですが、また最初からyumの設定して、NGINXを入れて、みたいなことは手間です。

なので、すでに完成したWEBサーバ(test-web01)を複製してもう1台(test-web02)を作成します。

複製には複製元となるスナップショットが必要。

なのでまずはtest-web01のスナップショットを取得します。

 

スナップショットの作成

[Compute Engine]の左メニュー[スナップショット]を押下し、[スナップショットを作成]をクリックします。

するとスナップショットの作成画面になるので、以下を設定。

名前:スナップショット名です。用途が分かるように。

ソースディスク:スナップショット元となるインスタンスを指定します。今回は「test-web01」

ロケーション:よくわからんのですが、とりあえずリージョンにしておきました。マルチリージョンだと他のリージョンでも使えるようになるんかな?

設定ができたら「作成」を押下。

問題がなければスナップショットが作成されます。

 

VMインスタンスの複製(クローン)

スナップショットが生成されたので、いよいよインスタンスの複製です。

まずは複製元となるサーバの情報を表示。

[VMインスタンス]から複製元のインスタンス(今回はtest-web01)をクリック。

「同様のものを作成」という項目があるのでそれを押下します。

VMインスタンス作成画面がでるので、インスタンス名をtest-web02とします。

ブートディスクの設定を変更します。

ブートディスクの[変更]をクリック。

「スナップショット」タブを開いて、スナップショットに先ほど作成したスナップショット名を選択します。

選択したら[選択]を押下。

あとは変更せずに「作成」をクリックすれば複製されたサーバが生成されます。

test-web01も起動しておきましょう。

 

これで必要なサーバは全て作成できました。

あとはいよいよロードバランサを作成して負荷分散機構を作るだけです。

次回で完成予定。

 

コメント

タイトルとURLをコピーしました