スケーラブルなWebサイトを構築したい(Web2台構成)
お客さま自身で構築した仮想マシンをテンプレート化して保存しておくことで、同じ設定の仮想マシンを簡単に複製(増設)することが可能です。 本マニュアルでは、活用マニュアル「Webサイトの本番環境を構築したい(Web1台構成)」で作成した「web01」のスナップショットからテンプレートを作成し、そのテンプレートからもう1台仮想マシンを作成して2台構成で運用するケースを紹介します。
1台目と同様に2台目のサーバーにアクセスできるようにファイウォールとポートフォワードの設定を変更します。そして、web2台構成で運用するサーバーをロードバランサーに登録してスケーラブルにサイト運用をする手順を紹介します。
目次

1. 事前準備
- スナップショットを作成する前に、複製元の仮想マシン固有の設定の無効化を行います。
web01の設定例は以下のとおりです。
// 「データディスクの追加・アタッチ方法」※1の3-⑥の操作で追加した行をコメントアウト [root@web01 ~]# vim /etc/fstab #UUID=181a3582-5212-4b53-8e28-94c711b0f7b4 /data xfs defaults 0 0 // 「Mackerelを使ったリソース監視」※2で設定したMackerelエージェントのIDを上書きされないようにファイル名を変更 [root@web01 ~]# mv /var/lib/mackerel-agent/id /var/lib/mackerel-agent/id.backup // 念のためメモリーの内容をディスクに書き込む [root@web01 ~]# sync
※1:「データディスクの追加・アタッチ方法」をご参照ください。
※2:「Mackerelを使ったリソース監視」をご参照ください。
- 運用的に可能であれば、複製元の仮想マシンにて下記を実施します。
// SSHホスト鍵の削除※ [root@web01 ~]# rm -f /etc/ssh/ssh_host_* // キャッシュをクリア [root@web01 ~]# dnf clean all // コマンド実行履歴の消去 [root@web01 ~]# history -c
- ※複製元・複製先仮想マシンで同じSSHホスト鍵にならないよう対応します。本対応が難しい場合、後述の複製先の仮想マシンにて同様の対応をご検討ください。
- ※SSHホスト鍵を再作成すると、クライアントからログインする際に「SSHホスト鍵が一致しない」という警告/エラーが発生することがあります。フィンガープリントを確認いただき、SSHホスト鍵の更新を行ってください。
2. スナップショットの作成
- IDCFクラウドにログインし、クラウドコンソールのトップページのサービス一覧から、[コンピュート]>[ボリューム]とクリックし、「ボリューム」画面に移動します。


- 表示されたボリューム一覧より、「ボリューム名」「アタッチ先」「タイプ」等から、スナップショット対象のボリュームを確認し、「ボリューム名」をクリックします。

- ボリューム詳細画面にて[スナップショット]をクリックします。

- [スナップショット作成]をクリックします。

- 「スナップショットを作成しますか?」というポップアップが表示されるので[はい]をクリックします。

- 「作成中」と表示されるので、数分待ちます。

- 「スナップショットの作成が完了しました」と表示されます。

- [<ボリューム名>のスナップショット一覧へ]もしくは、左メニューから[スナップショット]をクリックします。


- スナップショット一覧より、対象スナップショットのステータスが「BackedUp」と表示されることを確認します。

以上で、スナップショットの作成は完了です。
3. テンプレートの作成
- 左メニューから[スナップショット]をクリックし、スナップショット一覧より、上記手順で作成したスナップショットの「スナップショット名」をクリックします。

- スナップショット詳細画面にて[テンプレート作成]をクリックします。

- 必要な情報を入力します。
入力例を以下に示します。
| 項目 | 設定内容 |
| テンプレート名 | WebTemplate |
| 説明 | web01のテンプレート |
| OSタイプ | ※お使いのOSタイプと同じもの、もしくは近いものをご選択ください。 |
| パスワードリセット | 有効 |
| ダイナミックスケール | 有効 |
- [作成する]をクリックします。

- 「テンプレートを作成してもいいですか?」というポップアップが表示されるので[はい]をクリックします。

- 「作成中」と表示されるので、待ちます。

- 「テンプレートの作成が完了しました。」と表示されます。

- [テンプレート一覧へ]もしくは、左メニューから[テンプレート]をクリックします。


- テンプレート一覧より、作成したテンプレートを確認します。

以上で、テンプレートの作成は完了です。
- 必要に応じて、「1. 事前準備」で行った設定変更を元に戻します。
// コメントアウトした行をコメントイン [root@web01 ~]# vim /etc/fstab UUID=181a3582-5212-4b53-8e28-94c711b0f7b4 /data xfs defaults 0 0 // ファイル名を元に戻す [root@web01 ~]# mv /var/lib/mackerel-agent/id.backup /var/lib/mackerel-agent/id // SSHホスト鍵を再作成※ [root@web01 ~]# systemctl restart sshd
※SSHホスト鍵を再作成すると、クライアントからログインする際に「SSHホスト鍵が一致しない」という警告/エラーが発生することがあります。フィンガープリントを確認いただき、SSHホスト鍵の更新を行ってください。
4. マイテンプレートから仮想マシンを作成
以上の手順で作成したテンプレートから仮想マシンを作成します。

- 左メニューから[仮想マシン]を選択し、[仮想マシン作成]をクリックします。
- 「仮想マシン作成」画面で、次のように設定します。
| 項目 | 設定内容 |
| マシンタイプ | Light.S1 |
| イメージ | [My Template] - [WebTemplate] ※注1 |
| ボリューム | データディスクなし(空欄のまま) |
| SSH Key | ※注2 |
| 仮想マシン台数 | 1台 |
| ネットワークインターフェース | ※注3 |
| 詳細情報 - マシン名 | web02 |
| 詳細情報 - グループ | (なし) |
- ※注1:「イメージ」の項目で「My Template」をクリックし、上記手順で作成したテンプレート「WebTemplate」を選択します。
- ※注2:SSH Keyの項目は、[SSHキー選択]を選び、作成済みのSSHキーを選択します。SSH秘密鍵を別途作成する場合は[作成]を選択し、生成された秘密鍵をローカルPCに保存します。詳しくは「めちゃ楽ガイド」6ページの手順3をご参照ください。
- ※注3:ご利用のアカウントによってネットワークインターフェースとして選択できるゾーン名が異なります。普段お使いのゾーン名をご選択ください。
- 設定後、画面下部の[確認画面へ]をクリックします。

- 確認画面で設定内容を確認し、画面下部の[作成]をクリックします。

- 仮想マシン一覧に作成した仮想マシン(web02)が追加されます。

以上で、仮想マシンの作成は完了です。
5. ポートフォワードとファイアウォールの設定変更
「web01」と「web02」に同じパブリックIPアドレスでアクセスできるように、ファイアウォールとポートフォワードの設定を変更します。
- 左メニューより[IPアドレス]を選択し、「IPアドレス」画面で表示されているIPアドレス名をクリックします。

- IPアドレス詳細画面で[ポートフォワード]タブを選択し、次の設定を追加します。
コメント パブリックポート プライベートポート 仮想マシン SSH-web01 Custom TCP 50001 22 web01 SSH-web02 Custom TCP 50002 22 web02

- ポートフォワードのSSHとHTTPのルールを削除します。

- ポートフォワードのルールは以下のようになります。

- 同じくIPアドレス詳細画面で[ファイアウォール]タブを選択し、次の設定を追加します。
| コメント | ソースCIDR | タイプ | ポートレンジ |
| SSH-web | My IP | Custom TCP | 50001-50002 |

- ファイアウォールのSSHルールを削除します。

- ファイアウォールのルールは以下のようになります。

6. ロードバランサーの設定
- IPアドレス詳細画面で[ロードバランサー]タブを選択し、次のように設定します。
コメント パブリックポート プライベートポート アルゴリズム 接続維持 仮想マシン web HTTP (80) 80 roundrobin (なし) web01,web02

7. 動作確認
仮想マシン「web01」「web02」にてテスト用ページを作成し、バランシングされることを確認します。
- 「1. 事前準備」の手順2の対応ができなかった場合、複製先の仮想マシン「web02」にて下記を実施します。
// SSHホスト鍵の削除・再作成※
[root@web02 ~]# rm -f /etc/ssh/ssh_host_*
[root@web02 ~]# systemctl restart sshd
// キャッシュをクリア
[root@web02 ~]# dnf clean all
// コマンド実行履歴の消去
[root@web02 ~]# history -c
※SSHホスト鍵を再作成すると、クライアントからログインする際に「SSHホスト鍵が一致しない」という警告/エラーが発生することがあります。フィンガープリントを確認いただき、SSHホスト鍵の更新を行ってください。
- 仮想マシン「web01」「web02」にて、テスト用ページを作成します。
web01
[root@web01 ~]# chown -R apache:apache /var/www/html
[root@web01 ~]# echo web01 > /var/www/html/index.html
web02
[root@web02 ~]# chown -R apache:apache /var/www/html
[root@web02 ~]# echo web02 > /var/www/html/index.html
- ブラウザにて、「5.ポートフォワードとファイアウォールの設定変更」で設定したIPアドレスにHTTPでアクセスします。

- ブラウザからの再読み込みを数回繰り返し、テスト用ページにて「web01」「web02」が分散して表示されることを確認します。
