IBM Cloud VPC でシンプルなウェブサイト構築を体験する(2022年版) - 6. ロード・バランサー作成と動作確認

この記事は、[IBM Cloud VPCでシンプルなウェブサイト構築を体験する](https://qiita.com/kenichit/items/796b0cff7d09a0f517f6)の構築ステップを説明しています。IBM CloudのUI変更により連載記事構成の変更が必要となったため、2022年版として補足記事を作成しました。

既に作成したwebサーバーにアクセスできるようにするため、ロード・バランサーを作成します。さらに、ドメイン・ネーム登録サービスの設定を変更して、インターネットでアクセス可能なドメイン名を設定します。
このステップ実施の前提は、以下の全てのステップが掲載順通りに完了していることです。
* [IBM Cloud VPC でシンプルなウェブサイト構築を体験する(2022年版) - 1. VPC作成](https://qiita.com/kenichit/items/aa63cedf7f0a0aee71a1)
* [IBM Cloud VPC でシンプルなウェブサイト構築を体験する(2022年版) - 3. 仮想サーバー・インスタンス作成](https://qiita.com/kenichit/items/6384aab1a17cddcf41b0)
* [浮動IP取得とバインド](https://qiita.com/kenichit/items/63003852c4424d4c024d)
* [セキュリティー・グループ作成](https://qiita.com/kenichit/items/9624e7b93322f5d33b3a)

![dialog-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/45dd8312-7445-1b5f-8017-789a7647df34.png)

## ステップ6-1
「VPCインフラストラクチャー」>「ネットワーク」>「ロード・バランサー」をクリックします。
画面右側の「作成」ボタンをクリックします。
![lb-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/a011e8eb-1cd3-8ace-6ef0-a15aa726bdad.png)

## ステップ6-2
パラメーター・シートの「ロード・バランサー」のパラメーターを入力します。
![lb-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/7ca38644-c9e5-ad8f-a1e2-21ad7f9df62c.png)

## ステップ6-3
サブネットにチェックを入れて選択します。「プールの作成」ボタンをクリックします。
![lb-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/70e36fc8-1ccd-adf5-b2a3-1a07e121dab4.png)


## ステップ6-4
パラメーター・シートの「プール:名前」のパラメーターを入力し「作成」ボタンをクリックします。
![lb-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/b8c23793-7e3d-2c3a-9446-86ad9c4bace2.png)

## ステップ6-5
プールができたら、プール名の右側にある「サーバーの接続」をクリックします。
![lb-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/bc059bbf-8e45-26ce-2b5a-69f60e0ef5f6.png)

## ステップ6-6
作成済みのwebサーバーが配置されているサブネットにチェックを入れます。
![lb-06-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/4d0a594d-f5f0-1112-2459-103d6960f770.png)
web1とweb2の行のチェックを入れ、「ポートの構成」ボタンをクリックします。
![lb-06-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/914756ba-7ff3-f998-710c-3e54ace6fdb3.png)
「サーバー・ポート」にhttpのポート番号である80を入力し、「接続」ボタンをクリックします。
![lb-06-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/43319a9d-d358-2800-dd71-d71fef38a7c9.png)

## ステップ6-7
フロントエンド・リスナーを追加するため、「リスナーの作成」ボタンをクリックします。
![lb-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/750fcb16-9a2b-107e-bdf6-dd53ded53bed.png)

## ステップ6-8
パラメーター・シートの「フロントエンド・リスナー」のパラメーターを入力し、「作成」ボタンをクリックします。
![lb-08-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/ce01ea33-948b-232a-66bf-7323493ad91e.png)
![lb-08-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/158ab3ba-798f-f314-48d8-06e4f089ac14.png)

## ステップ6-9
「セキュリティ・グループ」の選択で「VPCデフォルト」の行のチェックを外し、「5.セキュリティー・グループの作成」で作成したロード・バランサー用セキュリティー・グループにチェックを入れます。
![lb-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/4944b837-fa3f-00ef-c853-a51a32912af0.png)


## ステップ6-10
入力が完了したら、画面右側の「ロード・バランサーの作成」ボタンをクリックします。
![lb-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/9e03f4f0-af40-9df3-c072-fdaf44259f25.png)
![lb-10-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/9f4f2861-3a79-57f8-953e-c981bb350839.png)

作成中になります。作成されるまで数分程度かかります。待っている間にホスト名とIPアドレスについて調べます。
作成したロード・バランサーのホスト名(スクリーンショットでは0aから始まるホスト名の部分)をコピーし、nslookupコマンドでIPアドレスを調べます。これまでのステップでロード・バランサーを作成すると2つのIPアドレスが表示されます。ホスト名が有効になるまで数分かかる場合があります。IPアドレスを次のステップで利用します。

```shell_session:実行例
$ nslookup 0a（中略）-jp-tok.lb.appdomain.cloud

Non-authoritative answer:
Name:        0a(中略)-jp-tok.lb.appdomain.cloud
Address: (IPアドレス)
Name:        0a(中略)-jp-tok.lb.appdomain.cloud
Address: (IPアドレス)
```

ロード・バランサーがアクティブになります。
![lb-10-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/a3509849-26c3-df59-92db-e0a0d84b495f.png)

## ステップ6-11
インターネットで有効なドメイン名でアクセスするため、所有するドメインへAレコードを追加します。

IBM Cloudコンソールで画面左上の三本線(ハンバーガーメニュー)をクリックし、「クラシック・インフラストラクチャー」>「ネットワーク」>「DNS」>「前方ゾーン」をクリックします。
![lb-11-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/bda98de4-82e9-b5a0-ab04-b49ee10274bb.png)

画面中央にドメインが表示されます。今回利用するドメイン名をクリックします。
スクリーンショットでは、赤枠で囲われたドメインを使いますが、名前を伏せています。
![lb-11-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/fc68f375-d73a-98c6-7e5c-8a28030dc76e.png)

「Add New Record」の部分にパラメーター・シートの「ホスト名」とIPアドレスを入力し「Add Record」ボタンをクリックして、Aレコードを追加します。ステップ6-10で2つのIPアドレスが表示されるため、2つのAレコード追加となります。

* 「Host」の項目には、パラメーター・シートの「ホスト名」の値を入力します。
* 「Points to」の項目には、ステップ6-10で調べたIPアドレスを入力します。

![lb-11-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/3239c132-7ce0-3de8-09b0-cc30d757f1ac.png)

IPアドレスは2つあるので、以下のような結果になります。実際にDNSに反映されるまで数分かかることがあります。
これで、_www\.\(今回利用しているドメイン名\)_ がURL用ドメイン名として利用できるようになります。
![lb-11-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/ad4bd3d1-238b-6386-3582-ef9b4bb4a778.png)

## ステップ6-12
ドメインとSSL証明書が正しく動作しているか検証するため、わざと警告が出るテストをします。

ブラウザーで https://(ロード・バランサーのホスト名)/helloworld.html にアクセスすると、以下のような警告が出ます。
![step611-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/df7acdcd-10a2-0c7a-c222-d29fbb2a27e6.png)

「詳細情報」ボタンを押すと、以下の理由が表示されます。
アクセスしているURL中のドメイン名とSSL証明書に書かれているドメイン名が異なるため、信頼できないウェブサイトに接続を試みているとブラウザーが判断しています。
![step611-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/d8a9ef37-2e0f-0c8a-f2c7-529a914762b6.png)

警告とその理由を確認しました。次の「動作確認」では、ブラウザーでアクセスするURL中のドメイン名とSSL証明書のドメイン名が一致している、正常系の動作確認をします。

# 動作確認
構築したウェブサイトが動作しているか確認します。
ブラウザーで新しいウィンドウまたはタブを開き、以下のURLでアクセスします。

```
https://(ステップ6-11で登録したホスト名).(URL用ドメイン名)/helloworld.html
```

Hello World ページが表示されます。
画面の「リロード」ボタンまたはブラウザーの再読込ボタンを押すと画面が切り替わります。
![web1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/7a5930b8-6fa6-ddf7-cabf-d3eccd401f3d.png)
ロード・バランサーがラウンドロビンでアクセスを割り振っていることを確認できます。
![web2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922552/886aa677-d943-5312-285d-2884a9514363.png)

以上、動作確認ができたらシンプルなウェブサイトの構築完了です。