ロード バランサーは、UDP と TCP の両方のアプリケーションに対していくつかの機能を提供します。
浮動IPアドレス
一部のアプリケーション シナリオでは、バックエンド プール内の 1 つの VM で複数のアプリケーション インスタンスが同じポートを使用することが望ましいか、または必須となります。 ポートを再利用する一般的な例としては、高可用性のためにクラスタリングする、ネットワークの仮想アプライアンス、再暗号化なしに複数の TLS エンドポイントを公開する場合などが挙げられます。 複数の規則でバックエンド ポートを再利用するには、規則の定義でフローティング IP を有効にする必要があります。 フローティング IP を有効にすると、柔軟性が向上します。
フローティング IP の状態 | 結果 |
---|---|
フローティング IP が有効 | Azure は、IP アドレス マッピングを Load Balancer のフロントエンド IP アドレスへ 変更する |
フローティング IP が無効 | Azure で VM インスタンスの IP アドレスが公開される |
次の図は、フローティング IP の有効化の前と後における、IP アドレス マッピングの動作を示しています。
フローティング IP は、Azure portal、REST API、CLI、PowerShell、または他のクライアントを使用してロード バランサー規則で構成します。 フローティング IP を使用するには、規則の構成に加えて、仮想マシンのゲスト OS も構成する必要があります。
Floating IP 規則タイプは、いくつかのロード バランサーの構成パターンの基盤になります。 現在使用できる 1 つの例として、1 つ以上の Always On 可用性グループ リスナーの構成があります。 これらのシナリオについては、今後徐々に文書化します。
フローティング IP のゲスト OS の構成
動作させるために、ロード バランサーのフロントエンド IP およびポート宛てのすべてのトラフィックを受信するように仮想マシンのゲスト OS を構成します。 VM の構成では、以下を行う必要があります。
- ループバック ネットワーク インターフェイスを追加する
- ロード バランサーのフロントエンド IP アドレスを使用したループバックを構成します
- IP アドレスが割り当てられていないインターフェイスでもシステムがパケットを送受信できるようにします。 Windows システムでは、"弱いホスト" モデルを使用するようにインターフェイスを設定する必要があります。 Linux システムの場合、このモデルは通常、既定で使用されます。
- フロントエンド IP ポートでのトラフィックを許可するようにホスト ファイアウォールを構成する。
注
以下の例では、すべて IPv4 を使用します。IPv6 を使用するには、"ipv4" を "ipv6" に置き換える必要があります。
Windows Server
展開
バックエンドプール内の各 VM に対して、サーバーの Windows コマンドプロンプトで次のコマンドを実行します。
VM 上にあるインターフェイス名の一覧を取得するには、次のコマンドを入力します。
netsh interface ipv4 show interface
VM NIC (Azure マネージド) の場合は、 インターフェイス名 を使用するインターフェイスの名前に置き換えた後、次のコマンドを入力します。
netsh interface ipv4 set interface <interface-name> weakhostreceive=enabled
追加したループバック インターフェイスごとに、ループバック インターフェイス名をループバック インターフェイスの名前に置き換え、floating-IP と floating-IPnetmask をロード バランサーのフロントエンド IP に対応する適切な値に置き換えた後、次のコマンドを入力します。
netsh interface ipv4 add addr <loopback-interface-name> <floating-IP> <floating-IPnetmask> netsh interface ipv4 set interface <loopback-interface-name> weakhostreceive=enabled weakhostsend=enabled
最後に、ゲスト ホストでファイアウォールを使用する場合は、トラフィックが適切なポートで VM に到達できるようにルールを設定してください。 次の構成例では、1.2.3.4 のロード バランサー フロントエンド IP 構成と、ポート 80 の負荷分散規則を想定しています。
netsh int ipv4 set int "Ethernet" weakhostreceive=enabled netsh int ipv4 add addr "Loopback Pseudo-Interface 1" 1.2.3.4 255.255.255.0 netsh int ipv4 set int "Loopback Pseudo-Interface 1" weakhostreceive=enabled weakhostsend=enabled netsh advfirewall firewall add rule name="http" protocol=TCP localport=80 dir=in action=allow enable=yes
ウブントゥ
展開
バックエンド プール内の各 VM について、SSH セッションを使用して次のコマンドを実行します。
VM 上のインターフェイス名の一覧を取得するには、次のコマンドを入力します。
ip addr
追加したループバック インターフェイスごとに、ループバック インターフェイス名をループバック インターフェイスの名前に置き換え、floating-IP と floating-IPnetmask をロード バランサーのフロントエンド IP に対応する適切な値に置き換えた後、次のコマンドを入力します。
sudo ip addr add <floating-IP>/<floating-IPnetmask> dev lo:0
最後に、ゲスト ホストでファイアウォールを使用する場合は、トラフィックが適切なポートで VM に到達できるようにルールを設定してください。 この構成例では、ロード バランサーのフロントエンド IP 構成 1.2.3.4、ポート 80 の負荷分散規則、および Ubuntu での UFW (未コンパイルファイアウォール) の使用を前提としています。
sudo ip addr add 1.2.3.4/24 dev lo:0 sudo ufw allow 80/tcp
制限事項
- 負荷分散規則でフローティング IP が有効になっている場合、アプリケーションは送信にネットワーク インターフェイスのプライマリ IP 構成を使用する必要があります。
- ゲスト OS のループバック インターフェイスで構成されたフロントエンド IP アドレスにアプリケーションがバインドされている場合、Azure の送信接続は送信フローを書き換えず、フローは失敗します。 アウトバウンドのシナリオを確認してください。
- 負荷分散シナリオのセカンダリ IP 構成ではフローティング IP を使用できません。 この制限は、セカンダリ IP 構成が IPv6 でデュアルスタック構成の一部であるパブリック ロード バランサーや、アウトバウンド接続に NAT ゲートウェイを利用するアーキテクチャには適用されません。
次のステップ
- Azure Load Balancer で複数のフロントエンドを使用する方法について学習する。
- Azure Load Balancer のアウトバウンド接続について学習する。