今回はAzureLoadBalancerを利用する際の注意点についてです。
■前提
ここでは、AzureLoadBalancerの機能の中の一つである、内部LBのことについて記載しております。
外部LBについては記載しておりません。
■AzureLoadBalancerの機能について
大別すると、以下2つの機能があります。
※後々重要になってきます。
① 負荷分散
② NAT
■①負荷分散について
負荷分散なので、LBの後ろにバックエンドサーバ(リアルサーバ)が複数台存在するケースで利用します。
そのため、設定が必要な項目は、
0.LBの作成
1.バックエンドプール
2.正常性プローブ
3.負荷分散規則
です。
■0.LBの作成
Azureポータルから「ロードバランサー」を選択します。
「ロードバランサーの作成」もしくは「追加」をクリックします。
詳細な設定は割愛しますが、「種類」は「内部」を選択します。
内部LBに設定するIPアドレスは「静的」を選び、内部LBのIPアドレスは10.3.1.11としました。
■1.バックエンドプール
「設定」>「バックエンドプール」で設定します。
バックエンドプールを追加する際、
「仮想マシン」もしくは「仮想マシンスケールセット」を選択することで、
バックエンドサーバ(群)を登録することができます。
ここでは、仮想マシンを2台登録しています。(testvm03,testvm04)
※尚、仮想マシンにパブリックIPアドレスが付与されている場合、候補として仮想マシンが表示されないため、パブリックIPはデタッチする必要があります。
※登録が完了するまで5分程度かかりました。
■2.正常性プローブ
「設定」>「正常性プローブ」で設定します。
バックエンドプール内のサーバが正常に動作しているかの判定基準をここで設定します。
※「正常性プローブ」を設定しない場合、この後の「3.負荷分散規則」が設定できません。
■3.負荷分散規則
「設定」>「負荷分散規則」で設定します。
■動作確認
事前に、testvm03,testvm04にはapacheをインストールし、index.htmlに以下の通り設定しております。
testvm03(10.3.1.6) ⇒ <h3>test message-vm03</h3>
testvm04(10.3.1.7) ⇒ <h3>test message-vm04</h3>
まずは、踏み台サーバから接続状況を確認します。
問題なく接続できました。
では、内部LBに設定したIPアドレス(静的)にアクセスしてみます。
※内部LBのIPアドレスは10.3.1.11
この時点ではtestvm03の結果が返されました。
では連続してアクセスしてみます。(途中でvm03 ⇒ vm4に切り替わっています。)
ここまでがAzureLoadBalancer(内部)の負荷分散の動作です。
続いて、NAT動作についてです。
■②NATについて
まず、どんな動作ができるのかを先に記載致します。
いわゆる、宛先NATができます。
例えば、クライアントからの接続がAzureLoadBalancerに80番ポートに届いた場合に、バックエンドサーバの80番ポートに転送する、ようなことができます。
設定が必要な項目は、
0.LBの作成
1.インバウンドNAT規則
です。
※NAT機能を使いたい場合には、「バックエンドプール」や「正常性プローブ」「負荷分散規則」の設定は不要です。
■0.LBの作成
ここは①負荷分散の項目と同じため、割愛します。
「種類」は「内部」を選択します。
内部LBに設定するIPアドレスは「静的」を選び、内部LBのIPアドレスは10.3.1.10としました。
※負荷分散で作成したAzureLoadBalancer(内部)とは別に、新しくAzureLoadBalancer(内部)を作成しています。
■1.インバウンドNAT規則
「設定」>「インバウンドNAT規則」をクリックします。
「追加」をクリックします。
「フロントエンドIPアドレス」には、AzureLoadBalancerのIPアドレスを入力します。
※デフォルトでは「LoadBalancerFrontEnd」という名前になります。
「サービス」にはAzureLoadBalancerが受け付けるプロトコルを定義します。複数プロトコルが設定可能です。HTTP通信を受け付けるのであれば、「HTTP」を選択します。
「ポート」には、AzureLoadBalancerが待ち受けているポートを入力します。
「ターゲット仮想マシン」「ネットワークIP構成」にはAzureLoadBalancerで受け付けた通信を転送するサーバ情報を入力します。
「ポートマッピング」は「既定」の場合、AzureLoadBalancerが受け付けたポートと同じポート番号で転送先サーバに通信を転送します。
「カスタム」の場合には、転送先サーバで待ち受けているポート番号を任意で設定できます。
※今回は「カスタム」を選択し、AzureLoadBalancerで90番で待ち受けて、バックエンドサーバでは80番ポートで受け取ります。
最終的な設定値は以下の通りです。
■動作確認
事前に、testvm01にはapacheをインストールし、
index.htmlに以下の通り設定しております。
testvm01(10.3.1.4) ⇒ <h3>test messages</h3>
では、踏み台サーバからアクセスしてみます。
AzureLoadBalancerのIPは10.3.1.10です。
期待通り、AzureLoadBalancer(内部)が90番ポートで受け取った通信を、
バックエンドサーバであるtestvm01の80番ポートに転送できています。
■補足1
今回は、同一サブネット上にAzureLoadBalancerを2台作成しました。
1台は負荷分散用AzureLoadBalancer
もう1台はNAT用AzureLoadBalancer
です。
2台ではなく1台に負荷分散機能とNAT機能を持たせることもできます。
AzureLoadBalancerの各設定項目が「負荷分散」「NAT」のどちらの設定項目で利用するのかをはっきりさせるために、今回はあえて2台用意しました。
■補足2
以下サイトが本記事の続きです。
以下サイトでは「負荷分散機能」と「NAT機能」の両方を利用したケースを紹介しています。
以上です。