スケーラブルなWebサイトを構築したい(Web2台構成) | IDCFクラウド ご利用ガイド

スケーラブルなWebサイトを構築したい(Web2台構成)

お客さま自身で構築した仮想マシンをテンプレート化して保存しておくことで、同じ設定の仮想マシンを簡単に複製(増設)することが可能です。 本マニュアルでは、活用マニュアル「Webサイトの本番環境を構築したい(Web1台構成)」で作成した「web01」のスナップショットからテンプレートを作成し、そのテンプレートからもう1台仮想マシンを作成して2台構成で運用するケースを紹介します。

1台目と同様に2台目のサーバーにアクセスできるようにファイウォールとポートフォワードの設定を変更します。そして、web2台構成で運用するサーバーをロードバランサーに登録してスケーラブルにサイト運用をする手順を紹介します。


目次

  1. 事前準備
  2. スナップショットの作成
  3. テンプレートの作成
  4. マイテンプレートから仮想マシンを作成
  5. ポートフォワードとファイアウォールの設定変更
  6. ロードバランサーの設定
  7. 動作確認

1. 事前準備

  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を使ったリソース監視」をご参照ください。

  1. 運用的に可能であれば、複製元の仮想マシンにて下記を実施します。
    // SSHホスト鍵の削除※
    [root@web01 ~]# rm -f /etc/ssh/ssh_host_*
    
    // キャッシュをクリア
    [root@web01 ~]# dnf clean all
    
    // コマンド実行履歴の消去
    [root@web01 ~]# history -c
    
  • ※複製元・複製先仮想マシンで同じSSHホスト鍵にならないよう対応します。本対応が難しい場合、後述の複製先の仮想マシンにて同様の対応をご検討ください。
  • ※SSHホスト鍵を再作成すると、クライアントからログインする際に「SSHホスト鍵が一致しない」という警告/エラーが発生することがあります。フィンガープリントを確認いただき、SSHホスト鍵の更新を行ってください。

2. スナップショットの作成

  1. IDCFクラウドにログインし、クラウドコンソールのトップページのサービス一覧から、[コンピュート]>[ボリューム]とクリックし、「ボリューム」画面に移動します。
  1. 表示されたボリューム一覧より、「ボリューム名」「アタッチ先」「タイプ」等から、スナップショット対象のボリュームを確認し、「ボリューム名」をクリックします。
  1. ボリューム詳細画面にて[スナップショット]をクリックします。
  1. [スナップショット作成]をクリックします。
  1. 「スナップショットを作成しますか?」というポップアップが表示されるので[はい]をクリックします。
  1. 「作成中」と表示されるので、数分待ちます。
  1. 「スナップショットの作成が完了しました」と表示されます。
  1. [<ボリューム名>のスナップショット一覧へ]もしくは、左メニューから[スナップショット]をクリックします。
  1. スナップショット一覧より、対象スナップショットのステータスが「BackedUp」と表示されることを確認します。

以上で、スナップショットの作成は完了です。


3. テンプレートの作成

  1. 左メニューから[スナップショット]をクリックし、スナップショット一覧より、上記手順で作成したスナップショットの「スナップショット名」をクリックします。
  1. スナップショット詳細画面にて[テンプレート作成]をクリックします。
  1. 必要な情報を入力します。
    入力例を以下に示します。
項目設定内容
テンプレート名WebTemplate
説明web01のテンプレート
OSタイプ※お使いのOSタイプと同じもの、もしくは近いものをご選択ください。
パスワードリセット有効
ダイナミックスケール有効
  1. [作成する]をクリックします。
  1. 「テンプレートを作成してもいいですか?」というポップアップが表示されるので[はい]をクリックします。
  1. 「作成中」と表示されるので、待ちます。
  1. 「テンプレートの作成が完了しました。」と表示されます。
  1. [テンプレート一覧へ]もしくは、左メニューから[テンプレート]をクリックします。
  1. テンプレート一覧より、作成したテンプレートを確認します。

以上で、テンプレートの作成は完了です。

  1. 必要に応じて、「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. マイテンプレートから仮想マシンを作成

以上の手順で作成したテンプレートから仮想マシンを作成します。

  1. 左メニューから[仮想マシン]を選択し、[仮想マシン作成]をクリックします。
  2. 「仮想マシン作成」画面で、次のように設定します。
項目設定内容
マシンタイプ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:ご利用のアカウントによってネットワークインターフェースとして選択できるゾーン名が異なります。普段お使いのゾーン名をご選択ください。
  1. 設定後、画面下部の[確認画面へ]をクリックします。
  1. 確認画面で設定内容を確認し、画面下部の[作成]をクリックします。
  1. 仮想マシン一覧に作成した仮想マシン(web02)が追加されます。

以上で、仮想マシンの作成は完了です。


5. ポートフォワードとファイアウォールの設定変更

「web01」と「web02」に同じパブリックIPアドレスでアクセスできるように、ファイアウォールとポートフォワードの設定を変更します。

  1. 左メニューより[IPアドレス]を選択し、「IPアドレス」画面で表示されているIPアドレス名をクリックします。
  1. IPアドレス詳細画面で[ポートフォワード]タブを選択し、次の設定を追加します。
    コメントパブリックポートプライベートポート仮想マシン
    SSH-web01Custom TCP 5000122web01
    SSH-web02Custom TCP 5000222web02
  1. ポートフォワードのSSHとHTTPのルールを削除します。
  1. ポートフォワードのルールは以下のようになります。
  1. 同じくIPアドレス詳細画面で[ファイアウォール]タブを選択し、次の設定を追加します。
コメントソースCIDRタイプポートレンジ
SSH-webMy IPCustom TCP50001-50002
  1. ファイアウォールのSSHルールを削除します。
  1. ファイアウォールのルールは以下のようになります。

6. ロードバランサーの設定

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

7. 動作確認

仮想マシン「web01」「web02」にてテスト用ページを作成し、バランシングされることを確認します。

  1. 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ホスト鍵の更新を行ってください。

  1. 仮想マシン「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
  1. ブラウザにて、「5.ポートフォワードとファイアウォールの設定変更」で設定したIPアドレスにHTTPでアクセスします。
  1. ブラウザからの再読み込みを数回繰り返し、テスト用ページにて「web01」「web02」が分散して表示されることを確認します。