目次
ロードバランサーとは?
ロードバランサーとは通信を複数のサーバーに分散する装置です。
大量の通信が来た場合、1つのサーバーのみだと処理しきれずにダウンしたり、レスポンスが遅延してしまう可能性があります。
ロードバーランサーを使用する事で通信を振り分け、サーバーの負荷を減少させます。
ロードバランサーにはレイヤー4で動作するものとレイヤー7で動作するものがあります。
※レイヤー4, レイヤー7については”OSI参照モデル”を確認下さい。
Azureではレイヤー4で動作するものを”ロードバランサー”、レイヤー7で動作するものをアプリケーションゲートウェイと呼んでします。当記事では、レイヤー4で動作する”ロードバランサー”を解説します。
レイヤー4のロードバランサーは送信元IP・送信元ポート・送信先IP・送信先ポート・プロトコルに応じてトラフィックを分散し、レイヤー7のロードバランサーはURLやHTTPヘッダーなどを基に負荷分散を行う事が可能です。
また、Azureのロードバランサーでは、サーバーがダウンしていないか監視する機能(正常性プローブ)も設定する事が可能です。
ユースケース
以下の様なケースでロードバランサーは利用されます。
- 本番利用するアプリケーションで高可用性が求められる場合
- 1台のサーバーで処理できるトラフィックを超える通信が想定される場合
ハンズオン概要
仮想マシンを2台作成し、ロードバランサーを用いて負荷分散をしていきます。
ロードバランサーを正しく機能させるにはフロントエンドIP・インバウンド規制・バックエンドプール・正常性プローブを設定する必要があります。
それぞれの役割は以下の通りです。
- フロントエンドIP:通信の入り口。ここで定義されたIPアドレスにアクセスが集まる。
- インバウンド規制:フロントエンドIPに届いた通信をどのようにサーバーに分散するかを定義する。
- バックエンドプール:通信の分配先となるサーバー。
- 正常性プローブ:サーバーがダウンしていないか判定する。正常性を確認する為のロジックを設定する。
手順
以下の手順でロードバランサーのハンズオンを行います。
- ログイン
- 仮想ネットワークの作成
- 可用性セットの作成
- 仮想マシンの作成
- ロードバランサーの作成
※当ページでは2022年12月現在の仮想ネットワークについて解説しています。クラウドサービスは頻繁にアップデートが施されるため、仕様が若干異なる可能性があります。
ログイン
まずは、Azure公式ページからAzureにログインしましょう。
Azureアカウントを保持している方はSign inを、保持していない方はFree accountよりアカウントを作成しましょう。
仮想ネットワークの作成
以下の設定で仮想ネットワークを作成します。
- 10.10.0.0/16のアドレス空間
- “lb-subnet”という10.10.1.0/24のアドレス範囲を持つサブネット
- “server-subnet”という名前の10.10.2.0/24のアドレス範囲を持つサブネット
基本タブは以下のように設定します。
IPアドレスタブは以下のように設定します。
その他のタブに関しては設定を変更する必要はありません。
※仮想ネットワークの作成方法詳細については、【Azure】仮想ネットワークとは?使い方徹底解説!を参照してください。
可用性セットの作成
可用性セットとは可用性を高めるための設定の1つです。複数の仮想マシンを可用性セットに登録すると、それぞれの仮想マシンが別々の更新ドメイン※1、障害ドメイン※2にアサインされるため、可用性が向上します。
※1 更新ドメイン:マシンのアップデートの際に同じ時間に更新が走る仮想マシンのグループ。OS等のアップデートが発生する際、同一更新ドメインの場合、同時にシャットダウンされる。
※2 障害ドメイン:同じ電源・スイッチを共有している仮想マシンのグループ。停電などの際、同一障害ドメインのマシンは同時にシャットダウンされる。
検索バーに”可用性セット”と入力し、”可用性セット”を押下します。
可用性セットの管理画面に移動したら、”作成”ボタンを押下します。
基本タブを以下のように設定して作成します。
- サブスクリプション:利用するサブスクリプションを選択します。
- リソースグループ:リソースを作成するためのリソースグループを選択します。今回は”test-loadbalancer”とします。
- 名前:可用性セットに付与する名前を決定します。今回は”test-lb-as”とします。
- 地域:リソースをデプロイする地域を選択します。今回は”Japan East”とします。
- 障害ドメイン:障害ドメインの数を設定します。今回は”2″とします。
- 更新ドメイン:更新ドメインの数を設定します。今回は”2″とします。
- マネージドディスクを使用:マネージドディスクを使用する場合は”はい”を選択します。今回は”いいえ”を選択します。
仮想マシンの作成
test-vm-1, test-vm-2の2台の仮想マシンを作成します。仮想マシン作成の詳細については【Azure】Virtual Machines(VM)とは?使い方徹底解説!を参照下さい。
基本タブを以下の様に設定します。
ネットワークタブを以下のように設定します。
その他のタブの設定は変更せず作成します。
作成したらRDP接続を行い、接続先でPowerShellを開きます。
開いたら以下のコマンドを実施し、バックエンドから”Hello World from test-vm-Xx”というレスポンスが返却されるようにします。
- Install-WindowsFeature -name Web-Server -IncludeManagementTools
- Remove-Item C:\inetpub\wwwroot\iisstart.htm
- Add-Content -Path “C:\inetpub\wwwroot\iisstart.htm” -Value $(“Hello World from “ + $env:computername)
全てのコマンドが実行完了したら、各仮想マシンのパブリックIPアドレスにアクセスし、以下の”Hello World from ${マシン名}”のレスポンスが返却される事を確認します。
ロードバランサーの作成
検索バーに”ロードバランサー”と入力し、”ロードバランサー”を選択します。
ロードバランサーの管理画面に遷移したら、左上の”作成”を押下します。
ロードバランサーの作成では、基本・フロントエンドIP構成・バックエンドプール・インバウンド規制・送信規制・タグ・確認及び作成のタブが存在します。
これらを利用してロードバランサーに必要な、①フロントエンドIP②インバウンド規制③バックエンドプール④正常性プローブについての設定を行っていきます。
基本タブ
基本タブでは、ルートテーブルの名前や配置場所を設定します。
- サブスクリプション:利用するサブスクリプションを選択します。
- リソースグループ:既存のリソースグループもしくは新規のリソースグループを作成します。今回は”test-loadbalancer”を選択します。
- 名前:任意の名前を付与します。今回は”test-loadbalancer”と命名します。
- 地域:ロードバランサーを作成する地域を選択します。今回は”Japan East”を選択します。
- SKU:SKU(契約プラン)を選択します。テスト等の高可用性を必要としない小規模アプリでは無料のBasic、運用環境の高可用性、パフォーマンスを必要とする場合は有料のStandardを選択します。今回はBasicを選択します。
- 種類:ロードバランサーの種類を選択します。パブリックと内部があり、パブリックは外部からの通信(パブリックIPアドレスからの通信)を、内部は内部の通信(プライベートIPからの通信)を振り分けます。今回は”パブリック”を指定します。
- レベル:単一リージョンでのロードバランサーか複数リージョン間でのロードバランサーかを指定します。Standardの場合、複数リージョンでのロードバランシングが可能です。Basicを選択しているので、”地域”を選択します。
フロントエンドIP構成
フロントエンドIP構成タブでは通信の出入りに利用されるIPアドレスの設定をします。
“フロントエンドIP構成の追加”をクリックし、以下を指定します。
- 名前:フロントエンドIP構成を識別するための名前を指定します。今回は”test-frontendip”と指定します。
- IPバージョン:IPアドレスのバージョンを指定します。”IPv4″を選択します。
- パブリックIPアドレス:(パブリックIPアドレスの設定を行います。新規作成を押下し、以下の様に設定します。
- 名前:パブリックIPアドレスの名前を指定します。今回は”test-publicip”とします。
- SKU:SKU(契約プラン)を選択します。
- レベル:単一リージョンに関連付けるか複数リージョンに関連付けるかを決定します。
- 割り当て:IPアドレスの割り当て方法を選択します。今回は”動的”を指定します。”静的”を指定すると、同じIPを永続して利用する事ができます。
バックエンドプール
バックエンドプールタブでは通信を分散する先のサーバーを指定します。
“バックエンドプールの追加”を押下し、以下の様に設定します。
- 名前:バックエンドプールを識別するための任意の名前を設定します。今回は”test-backendpool”と命名します。
- 仮想ネットワーク:通信を分配するサーバーを配置する仮想ネットワークを指定します。今回は”test-loadbalancer”を指定します。
- IP構成:追加を押下して作成したVM(test-vm-1, test-vm-2)を追加します。
※ロードバランサーのSKUと仮想マシンIPのSKUが異なると、追加する事ができません。
インバウンド規制
インバウンド規制タブでは、入って来た通信をどのように分散するかを設定します。
“負荷分散規則の追加”を押下し、以下の様に設定します。
- 名前:負荷分散規則に付与する名前を設定します。今回は”test-rule”とします。
- IPバージョン:IPのバージョンを指定します。”IPv4″を選択します。
- フロントエンドIPアドレス:フロントエンドIPアドレスを指定します。フロントエンドIP構成タブにて作成したものを選択します。
- バックエンドプール:バックエンドプールを指定します。バックエンドプールタブで作成したものを選択します。
- プロトコル:対象とする通信のプロトコルを指定します。Webアプリの場合は”TCP”を選択します。
- ポート:ポートを指定します。Webアプリケーションの場合は”80″を選択します。
- バックエンドポート:“80”を入力します。
- 正常性プローブ:サーバーが正常稼働しているかを確認する設定を行います。”新規作成”を押下して以下の様に設定します。
- 名前:作成するプローブに付与する名前を設定します。ここでは”test-probe”とします。
- プロトコル:“TCP”を選択します。
- ポート:正常性の確認結果を受け取るポートを指定します。”80″を指定します。
- 間隔:正常性を確認する間隔を指定します。デフォルトの5秒にしておきます。
- セッション永続化:同一クライアントからの通信を同じ仮想マシンで処理する事で、特定のクライアントからセッションを保持するための設定です。今回は”なし”とします。
- アイドルタイムアウト:ロードバランサーがコネクションを保持する時間を設定します。設定した時間を超過するとコネクションが一度削除されます。今回は15分とします。
- フローティングIP:共有IPアドレスを付与する事で障害時にも別インスタンスに切り替えられるようになる設定です。今回は”無効”を選択します。
送信規制
送信規制タブではアウトバウンドのルールについて指定します。
今回は指定が不要です。
タグ
タグタブでは、リソースを識別する為のキー/バリューのペア(タグ)を設定する事が可能です。
今回はタグは設定しません。
確認及び作成
設定に問題がなければ、左下の”作成”を押下します。
“デプロイが完了しました”と表示されたら作成完了です。
Load Balancerのテスト
全ての設定が完了したら、Load BalancerのパブリックIPアドレスを取得し、アドレスにアクセスしてみましょう。
“Hello World from test-vm-Xx”が表示されれば作成完了です。複数回アクセスすると、アクセス先のマシンが変更される事も確認でき、通信が分散されている事が分かります。
関連記事