Azure Load Balancer のフローティング IP の構成
ロード バランサーは、UDP と TCP の両方のアプリケーションに対していくつかの機能を提供します。
フローティング IP
一部のアプリケーション シナリオでは、バックエンド プール内の 1 つの VM で複数のアプリケーション インスタンスが同じポートを使用することが望ましいか、または必須となります。 ポートを再利用する一般的な例としては、高可用性のためにクラスタリングする、ネットワークの仮想アプライアンス、再暗号化なしに複数の TLS エンドポイントを公開する場合などが挙げられます。 複数の規則でバックエンド ポートを再利用するには、規則の定義でフローティング IP を有効にする必要があります。 フローティング IP を有効にすると、柔軟性が向上します。
フローティング IP の状態 | Outcome |
---|---|
フローティング 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 <interfacename> weakhostreceive=enabled
("interfacename" を、このインターフェイスの名前に置き換えてください)
追加した各ループバック インターフェイスに対して、次のコマンドを繰り返します。
netsh interface ipv4 add addr <loopbackinterfacename> floatingip floatingipnetmask
netsh interface ipv4 set interface <loopbackinterfacename> weakhostreceive=enabled weakhostsend=enabled
(loopbackinterfacename をこのループバック インターフェイスの名前に、floatingip と floatingipnetmask を、ロード バランサーのフロントエンド IP に対応する適切な値に置き換えてください)
最後に、ゲスト ホストでファイアウォールを使用する場合は、トラフィックが適切なポートで 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
Ubuntu
展開
バックエンド プール内の各 VM について、SSH セッションを使用して次のコマンドを実行します。
VM 上のインターフェイス名の一覧を取得するには、次のコマンドを入力します。
ip addr
ループバック インターフェイスごとに、次のコマンドを繰り返します。これにより、フローティング IP がループバック エイリアスに割り当てられます。
sudo ip addr add <floatingip>/<floatingipnetmask> dev lo:0
(floatingip と floatingipnetmask を、ロード バランサーのフロントエンド IP に対応する適切な値に置き換えます)
最後に、ゲスト ホストでファイアウォールを使用する場合は、トラフィックが適切なポートで VM に到達できるようにルールを設定してください。
次の構成例では、1.2.3.4 のロード バランサー フロントエンド IP 構成と、ポート 80 の負荷分散規則を想定しています。 この例では、Ubuntu での UFW (Uncomplicated Firewall) の使用も想定しています。
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 Gateway を利用するアーキテクチャには適用されません。
次のステップ
- Azure Load Balancer で複数のフロントエンドを使用する方法について学習する。
- Azure Load Balancer のアウトバウンド接続について学習する。