活用マニュアル

ロードバランサーを活用してWebサーバーを負荷分散する

IDCFクラウドでは、負荷分散サービスとして仮想ルーターのロードバランサー機能と、高機能ロードバランサーサービスの「ILB(Infinite Load Balancer)」があります。
ポート単位で簡易的に負荷分散を行いたい場合は仮想ルーターを使用することで、容易に負荷分散環境を構築することができます。
ILBは仮想ルーターとは独立して稼働しているサービスです。また、ILBにはSSL証明書を設置することができます。

今回はWebサーバー2台で負荷分散をします。仮想ルーターでHTTP通信の負荷分散環境の構築と、ILBでの負荷分散サービスを構築します。
また、HTTPSの通信をILB経由で行う構成を記載します。入手済みのSSL証明書をアップロードします。本マニュアルの中でWebサーバーを「Web01」、「Web02」と記載しています。

※本マニュアルでは別環境(IPアドレスが異なる環境)からの確認手順や、SSL証明書をアップロードする手順が含まれています。
SSL証明書の準備、および別環境からアクセスできる準備をしてください。
SSL証明書については自己署名証明書、別環境についてはスマートフォンなどによる携帯キャリアの通信や、IDCFクラウド内の別ゾーンでも問題ありません。
なお、本マニュアルではDNSの設定は割愛しています。

1. Webサーバーと仮想ルーターによる負荷分散環境の構築

この章ではWebサーバーを構築して仮想ルーターで負荷分散する設定を行います。
サーバーの作成は、「Webサイトの本番環境を構築したい(Web1台構成)」を完了した状態からの手順です。
本マニュアルではゾーンをradianで設定しています。

① 2台目のWebサーバーをWeb01と同様に、「Webサイトの本番環境を構築したい(Web1台構成)」を参照し、(1)仮想マシンの作成まで実施します。
サーバー名はWeb02とし、Web01と同じゾーン「radian」で設定します。


② ファイアウォールとポートフォワーディングの設定をするため、コントロールパネルのメニューより「IPアドレス」をクリックし、IPアドレス一覧画面を開きます。対象のゾーン(radian)の仮想ルーターのIPアドレス名(デフォルトではno name)をクリックします。

③    ファイアウォールをクリックし、Web02用のSSH接続ルールを作成します。入力が完了したら、「+」ボタンで追加します。
追加できたら右上の「x」で設定画面を閉じます。
※Web01に対して22番ポートをポートフォワーディングで使用しているため、Web02は仮想ルーターの10022番ポートでサーバーの22番ポートにポートフォワーディングするように設定します。
ファイアウォールの設定も10022番ポートでアクセスできるように許可設定をします。
 
項目 設定内容
コメント SSHWeb02
ソースCIDR My IP
タイプ Custom TCP
ポートレンジ 10022
 

④    ポートフォワードをクリックし、SSHのポートフォワード設定を行います。
Web02の設定を次のように設定し、「+」ボタンで追加します。追加できたら右上の「x」で設定画面を閉じます。
項目
設定内容
コメント
SSHWeb02
パブリックポート
Custom TCP / 10022
プライベートポート
22
仮想マシン
Web02


⑤ Web02サーバーにログインしてサーバーを設定します。
サーバー作成時に使用した活用マニュアルの「Webサイトの本番環境を構築したい(Web1台構成)」(3)仮想マシンへのアクセスを参照して行います。
※現在の設定では80番ポートのポートフォワードの設定がWeb01に向いているため、IPアドレスでWebブラウザを確認することはできません。

⑥ curlコマンドでHTTPアクセスを実施し、Web02の表示を確認します。

[root@Web02 ~]# curl http://localhost/


  
    
    test
  
  
    

Web02

[root@Web02 ~]#

⑦ ロードバランサーで80番ポートを使用するため、ポートフォワードの設定を削除します。②を参照し、IPアドレス設定画面を開き、ポートフォワードをクリックします。
HTTP行の右側にある「ごみ箱」アイコンをクリックします。

⑧ ポートフォワードのルール削除確認メッセージが表示されるので「はい」をクリックします。

⑨ HTTPのポートフォワードルールが削除されていることを確認します。

⑩ Webブラウザにて仮想ルーターのIPアドレスへアクセス(http://仮想ルーターのIPアドレス)し、表示されなくなっていることを確認します。
(画像はedgeを使用した例)

    IPアドレス設定画面に戻り、ポートフォワードをクリックし、ロードバランサーをクリックします。ロードバランシングの設定を行います。
設定を次のように行い、「+」ボタンで追加します。(仮想マシンはWeb01、Web02の両方にチェックボックスを入れます。)
項目
設定内容
コメント
HTTP
パブリックポート
HTTP
プライベートポート
80
アルゴリズム
roundrobin
接続維持
なし
仮想マシン
Web01、Web02にチェック


⑫ Webブラウザにて仮想ルーターのIPアドレスへアクセス(http://仮想ルーターのIPアドレス)し、Web01、もしくはWeb02が表示できることを確認します。
ブラウザを数回更新し、Web02とWeb01が表示されることを確認します。
※表示されない場合、間隔を狭めて更新、強制更新(edgeではCtrl+F5)を行ってください。
(画像はedgeを使用した例)

以上で仮想ルーターによるロードバランシング設定は完了です。
次はILBで負荷分散環境を構築していきます。

2. ILBによる負荷分散環境の構築

ILB(Infinite Load Balancer)にて負荷分散環境を構築します。ロードバランサーを作成後、Firewallグループの設定を確認します。
Firewallグループでは自身の環境のみアクセスできるルールと、自身の環境のみアクセスできないルールの2種類を作成し、Firewallグループの動きを確認します。
また、ILBの設定が仮想ルーターの環境に影響しないことも合わせて確認します。
※MyIPの設定が必要になるため、(1)の③を参照し、IPアドレスのファイアウォールよりMyIPのアドレスを確認しておくことをお勧めいたします。

① コントロールパネルのトップ画面よりILBをクリックします。
※アクティブになっていない場合は、規約の同意画面に遷移します。

② ILB設定画面が表示されます。ロードバランサーを作成するため、「ロードバランサー作成」ボタンをクリックします。

    ロードバランサー作成の画面が表示されます。
ネットワークを選択し、FQDNを任意で設定します。(FQDNはサーバーにアクセスするためのURLになります。)
Configurationでプロトコル、ポート番号を設定し、「+」ボタンをクリックします。
項目
設定内容
ネットワーク
作成するゾーンのネットワークを選択(今回はradian)
FQDN
任意の文字列
Configuration
プロトコル[HTTP] / ポート番号[80]
オプション
なし


④ ConfigurationにHTTPの項目が追加されます。右の矢印をクリックして詳細設定を表示します。サーバーの項目でVMの指定をクリックします。
VMを選択(今回はWeb01とWeb02)して「+」ボタンで追加します。その他の設定は、今回はすべてデフォルトで構いません。

⑤ すべての設定項目を入力し、ページ下部の「確認画面へ」ボタンをクリックします。

⑥ 作成したロードバランサーのステータスがRunningになったことを確認します。

⑦ 作成したロードバランサーのFQDNをURLに指定してブラウザでアクセスできることを確認します。(http://ロードバランサーのFQDN)
また、ブラウザの更新を行い、Web01、Web02の両方が表示できることを確認します。
※バランシングの確認は(1)の⑫を参考にしてください。

⑧ メニューよりFirewallグループをクリックし、Firewallグループ設定画面を表示します。「Firewallグループ作成」ボタンをクリックします。
※Firewallグループの設定は、外部からロードバランサーへの通信制御が必要な場合に設定してください

⑨ Firewallグループ作成画面が表示されます。MyIPからのみアクセスを許可するFirewallグループを作成します。グループ名は任意(ここではallow)で指定します。
許可のテキストボックスに自身のIPを入力し、「+」ボタンをクリックしてルールを追加します。最後に「作成」ボタンをクリックして作成します。

⑩ 確認のメッセージが表示されるので、「はい」をクリックしてFirewallグループを作成します。

⑪ 同じようにFirewallグループ作成ボタンからFirewallグループ作成画面を表示します。MyIPからのアクセスは拒否するFirewallグループを作成します。
グループ名は任意(ここではdeny)で指定します。
拒否のテキストボックスに自身のIPを入力、「+」ボタンをクリックしてルールを追加します。許可のテキストボックスには0.0.0.0/0を入力し、「+」ボタンをクリックしてルールを追加します。

最後に「作成」ボタンをクリックして作成します。確認のメッセージが表示されるので「はい」をクリックします。

⑫ Firewallグループをロードバランサーに適用します。
メニューからロードバランサーをクリックし、ロードバランサー一覧画面を表示します。ロードバランサー一覧から作成したロードバランサー名をクリックします。

⑬ 自身の環境からのみ確認できるルール(allow)を適用します。設定ページ下部のオプションのFirewallグループ左にある矢印をクリックし、ルール選択ボックスを表示します。
プルダウンから許可設定(今回はallow)を選択し、「確認画面へ」をクリックします。
確認画面が表示されるので「Update」をクリックし、ルールを更新します。

⑭ ⑦と同様に確認をします。自身の環境からはページが表示されることを確認します。それ以外の環境(別のIPアドレスを所持している環境)からは、アクセスしても表示できないことを確認します。

⑮ 次に拒否のルールを確認します。⑫~⑬を参照し、Firewallグループを変更します。
Firewallグループには自身の環境からのみ拒否するルール(deny)を選択してルールを確認のメッセージが表示されますので、「はい」をクリックしてFirewallグループを変更します。

⑯ ⑭と同様に確認を行います。自身の環境からはページが表示できないことを確認します。それ以外の環境(別のIPアドレスを所持している環境)からは、表示できることを確認します。

⑰ 仮想ルーターで設定した負荷分散環境には影響がないことを確認します。(1)の⑫で確認した環境(http://仮想ルーターのIPアドレス)にアクセスをし、問題なく表示されることを確認します。

⑱ Firewallグループの適用を解除します。⑫~⑬を参照し、Firewallグループの設定を変更します。
Firewallグループのプルダウンから「指定しない」を選択し、「確認画面へ」ボタンをクリックします。確認画面が表示されるので「Update」をクリックし、ルールを更新します。

以上でILBの設定とFirewallグループの確認、および仮想ルーターの負荷分散環境との独立性を確認できました。

Firewallグループは今回設定をしたallowのように、許可の設定のみを行うと、許可した環境からのみアクセスが可能となります。
Firewallグループのルールには設定を行わなくても暗黙のdeny(0.0.0.0/0の拒否)が含まれており、特定の環境のみを許可したい場合(ホワイトリスト)は、allowのように許可設定のみを設定することで実現できます。
今回設定をしたdenyのように、特定の環境のみを拒否したい場合(ブラックリスト)は、すべて許可(0.0.0.0/0の許可)の設定を追加しておく必要があります。
なお、ILBでは許可のルールよりも拒否のルールの方が優先されます。

3. ILBにSSL証明書をアップロードしてHTTPS通信を行う

SSL証明書をILBにアップロードし、HTTPSの通信ができる環境を構築します。

① メニューからSSL証明書をクリックします。SSL証明書画面で「SSL証明書アップロード」ボタンをクリックします。

② 証明書アップロード画面が表示されます。証明書名に任意の名前を入力し、プライベートキー、パブリック証明書を貼り付けます。
中間証明書がある場合は、中間証明書も貼り付けます(2048文字以内)。最後に「アップロード」ボタンをクリックします。

③ SSL証明書のアップロード確認メッセージが表示されます。「はい」をクリックします。

④ メニューよりSSLポリシーをクリックします。SSLポリシー画面が表示されます。「SSLポリシー作成」ボタンをクリックします。

⑤ SSLポリシー作成画面が表示されます。ポリシー名に任意の名前を記入し、「作成する」ボタンをクリックします。
(デフォルトで必要なアルゴリズムが選択されています。アルゴリズムを変更したい場合は必要なものにチェックを入れます。もしくは、不要なもののチェックを外します。)

⑥ SSLポリシー作成確認メッセージが表示されます。「はい」をクリックします。

⑦ メニューよりロードバランサーをクリックします。前章で作成したロードバランサー名をクリックします。

⑧ ロードバランサーの設定画面が表示されます。Configurationの項目でプロトコルのプルダウンからHTTPSを「+」で追加します。HTTPS右側の矢印を開き、詳細設定画面を表示します。
サーバーの項目から「VMを指定」ボタンをクリックし、VMプルダウンメニューからWeb01、Web02を選択し「+」ボタンで追加します。
SSLの項目で証明書には②でアップロードしたもの、ポリシーには⑤で作成したものをプルダウンメニューより選択します。

⑨ ロードバランサー設定画面をページ下部までスクロールし、「確認画面へ」ボタンをクリックします。
確認画面で「Update」ボタンをクリックし、設定を更新します。

⑩ ブラウザからHTTPSでFQDN(https://ロードバランサーのFQDN)に対してアクセスします。証明書のサイト名とFQDNが異なるため、「セキュリティ証明書には問題があります」と表示されますが閲覧を続けて問題ありません。
※アップロードした証明書のサイト名と違っているために表示されます。
実際の運用ではCNAMEによりドメインを証明書のサイト名と合わせて運用することで正常な表示になります。
(例はブラウザにedgeを使用した場合)

⑪ Webページが表示されることを確認します。ブラウザを更新してWeb01、Web02の両方が表示されることを確認します。

以上でILBによるWebサーバーの負荷分散環境を構築できました。



今回は仮想ルーターとILBの両方で負荷分散する環境を作成しました。
仮想ルーターではポート番号をロードバランサーで使用することで簡単に負荷分散環境を構築できます。
ILBでは、より細かくロードバランサーとしての設定をすることが可能です。今回は詳細を割愛していますが、Configurationの設定を細かく指定することで、ロードバランシングアルゴリズムの変更や、コネクションタイムアウトの設定、セッション維持の設定、またヘルスチェックの指定が可能です。
また、SSL証明書をアップロードしてロードバランサー側でSSLの処理を行うことで、サーバーの負荷を軽減します。
Firewallグループと併用することで、仮想ルーターのロードバランサー機能より細かいアクセスコントロールが可能になります。
さらに、ILBは仮想ルーターから独立して動いており、自動的にロードバランサーがスケールするため、高負荷な環境でもほかのサービスに影響なく使用することができます。

すでに仮想ルーターを使用している環境でILBへ移行する際には、本マニュアルを使用し、仮想ルーターとILBを並行稼働させ、DNSの向き先を仮想ルーターからILBのFQDNに変更することで簡単に移行することができます。
簡易的に負荷分散環境を構築する場合は仮想ルーターを使用し、本番サービスや高負荷が予測される場合、また規模が比較的大きい場合にはILBを使用することをおすすめいたします。
※ILBは順次使用できるゾーンを拡大中です。

今回はIDCFクラウドでの負荷分散環境構築をご紹介しました。ILBをご活用いただきより便利にIDCFクラウドをご利用ください。

このページの先頭へ このページの先頭へ