Skip to content

Commit 9faae9c

Browse files
Merge pull request #272032 from anavinahar/patch-277
Update load-balancer-multivip-overview.md
2 parents 3a78b0a + 08609ea commit 9faae9c

File tree

3 files changed

+44
-83
lines changed

3 files changed

+44
-83
lines changed

articles/aks/use-network-policies.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ Create the AKS cluster and specify `--network-plugin azure`, and `--network-poli
198198
If you plan on adding Windows node pools to your cluster, include the `windows-admin-username` and `windows-admin-password` parameters that meet the [Windows Server password requirements][windows-server-password].
199199

200200
> [!IMPORTANT]
201-
> At this time, using Calico network policies with Windows nodes is available on new clusters by using Kubernetes version 1.20 or later with Calico 3.17.2 and requires that you use Azure CNI networking. Windows nodes on AKS clusters with Calico enabled also have [Direct Server Return (DSR)][dsr] enabled by default.
201+
> At this time, using Calico network policies with Windows nodes is available on new clusters by using Kubernetes version 1.20 or later with Calico 3.17.2 and requires that you use Azure CNI networking. Windows nodes on AKS clusters with Calico enabled also have Floating IP enabled by default.
202202
>
203203
> For clusters with only Linux node pools running Kubernetes 1.20 with earlier versions of Calico, the Calico version automatically upgrades to 3.17.2.
204204

articles/aks/windows-best-practices.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ You might want to containerize existing applications and run them using Windows
3535
3636
AKS uses Windows Server 2019 and Windows Server 2022 as the host OS versions and only supports process isolation. AKS doesn't support container images built by other versions of Windows Server. For more information, see [Windows container version compatibility](/virtualization/windowscontainers/deploy-containers/version-compatibility).
3737

38-
Windows Server 2022 is the default OS for Kubernetes version 1.25 and later. Windows Server 2019 will retire after Kubernetes version 1.32 reaches end of life (EOL). Windows Server 2022 will retire after Kubernetes version 1.34 reaches its end of life (EOL). For more information, see [AKS release notes][aks-release-notes]. To stay up to date on the latest Windows Server OS versions and learn more about our roadmap of what's planned for support on AKS, see our [AKS public roadmap](https://github.com/azure/aks/projects/1).
38+
Windows Server 2022 is the default OS for Kubernetes version 1.25 and later. Windows Server 2019 will retire after Kubernetes version 1.32 reaches end of life. Windows Server 2022 will retire after Kubernetes version 1.34 reaches its end of life. For more information, see [AKS release notes][aks-release-notes]. To stay up to date on the latest Windows Server OS versions and learn more about our roadmap of what's planned for support on AKS, see our [AKS public roadmap](https://github.com/azure/aks/projects/1).
3939

4040

4141
## Networking
@@ -63,7 +63,7 @@ To help you decide which networking mode to use, see [Choosing a network model][
6363
6464
When managing traffic between pods, you should apply the principle of least privilege. The Network Policy feature in Kubernetes allows you to define and enforce ingress and egress traffic rules between the pods in your cluster. For more information, see [Secure traffic between pods using network policies in AKS][network-policies-aks].
6565

66-
Windows pods on AKS clusters that use the Calico Network Policy enable [Floating IP][dsr] by default.
66+
Windows pods on AKS clusters that use the Calico Network Policy enable Floating IP by default.
6767

6868
## Upgrades and updates
6969

articles/load-balancer/load-balancer-multivip-overview.md

Lines changed: 41 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -6,119 +6,80 @@ services: load-balancer
66
author: mbender-ms
77
ms.service: load-balancer
88
ms.topic: conceptual
9-
ms.date: 12/04/2023
9+
ms.date: 04/12/2024
1010
ms.author: mbender
1111
ms.custom: template-concept
1212
---
1313

1414
# Multiple frontends for Azure Load Balancer
1515

16-
Azure Load Balancer allows you to load balance services on multiple ports, multiple IP addresses, or both. You can use a public or internal load balancer to load balance traffic across a set of services like virtual machine scale sets or virtual machines (VMs).
16+
Azure Load Balancer allows you to load balance services on multiple frontend IPs. You can use a public or internal load balancer to load balance traffic across a set of services like virtual machine scale sets or virtual machines (VMs).
1717

18-
This article describes the fundamentals of load balancing across multiple IP addresses using the same port and protocol. If you only intend to expose services on one IP address, you can find simplified instructions for [public](./quickstart-load-balancer-standard-public-portal.md) or [internal](./quickstart-load-balancer-standard-internal-portal.md) load balancer configurations. Adding multiple frontends is incremental to a single frontend configuration. Using the concepts in this article, you can expand a simplified configuration at any time.
18+
This article describes the fundamentals of load balancing across multiple frontend IP addresses. If you only intend to expose services on one IP address, you can find simplified instructions for [public](./quickstart-load-balancer-standard-public-portal.md) or [internal](./quickstart-load-balancer-standard-internal-portal.md) load balancer configurations. Adding multiple frontends is incremental to a single frontend configuration. Using the concepts in this article, you can expand a simplified configuration at any time.
1919

20-
When you define an Azure Load Balancer, a frontend and a backend pool configuration are connected with a load balancing rule. The health probe referenced by the load balancing rule is used to determine the health of a VM on a certain port and protocol. Based on the health probe results, new flows are sent to VMs in the backend pool. The frontend is defined using a three-tuple comprised of an IP address (public or internal), a transport protocol (UDP or TCP), and a port number from the load balancing rule. The backend pool is a collection of Virtual Machine IP configurations (part of the NIC resource) which reference the Load Balancer backend pool.
20+
When you define an Azure Load Balancer, a frontend and a backend pool configuration are connected with a load balancing rule. The health probe referenced by the load balancing rule is used to determine the health of a VM on a certain port and protocol. Based on the health probe results, new flows are sent to VMs in the backend pool. The frontend is defined using a three-tuple comprised of a frontend IP address (public or internal), a protocol, and a port number from the load balancing rule. The backend pool is a collection of Virtual Machine IP configurations. Load balancing rules can deliver traffic to the same backend pool instance on different ports. This is done by varying the destination port on the load balancing rule.
2121

22-
The following table contains some example frontend configurations:
22+
You can use multiple frontends (and the associated load balancing rules) to load balance to the same backend port or a different backend port. If you want to load balance to the same backend port, you must enable [Azure Load Balancer Floating IP configuration](load-balancer-floating-ip.md) as part of the load balancing rules for each frontend.
2323

24-
| Frontend | IP address | protocol | port |
25-
| --- | --- | --- | --- |
26-
| 1 |65.52.0.1 |TCP |80 |
27-
| 2 |65.52.0.1 |TCP |*8080* |
28-
| 3 |65.52.0.1 |*UDP* |80 |
29-
| 4 |*65.52.0.2* |TCP |80 |
24+
## Add Load Balancer frontend
25+
In this example, add another frontend to your Load Balancer.
3026

31-
The table shows four different frontend configurations. Frontends #1, #2 and #3 use the same IP address but the port or protocol is different for each frontend. Frontends #1 and #4 are an example of multiple frontends, where the same frontend protocol and port are reused across multiple frontend IPs.
27+
1. Sign in to the [Azure portal](https://portal.azure.com).
3228

33-
Azure Load Balancer provides flexibility in defining the load balancing rules. A load balancing rule declares how an address and port on the frontend is mapped to the destination address and port on the backend. Whether or not backend ports are reused across rules depends on the type of the rule. Each type of rule has specific requirements that can affect host configuration and probe design. There are two types of rules:
29+
2. In the search box at the top of the portal, enter **Load balancer**. Select **Load balancers** in the search results.
3430

35-
1. The default rule with no backend port reuse.
36-
2. The Floating IP rule where backend ports are reused.
31+
3. Select **myLoadBalancer** or your load balancer.
3732

38-
Azure Load Balancer allows you to mix both rule types on the same load balancer configuration. The load balancer can use them simultaneously for a given VM, or any combination, if you abide by the constraints of the rule. The rule type you choose depends on the requirements of your application and the complexity of supporting that configuration. You should evaluate which rule types are best for your scenario. We explore these scenarios further by starting with the default behavior.
33+
4. In the load balancer page, select **Frontend IP configuration** in **Settings**.
3934

40-
## Rule type #1: No backend port reuse
41-
:::image type="content" source="media/load-balancer-multivip-overview/load-balancer-multivip.png" alt-text="Diagram of Load Balancer traffic with no backend port reuse.":::
35+
5. Select **+ Add** in **Frontend IP configuration** to add a frontend.
4236

43-
In this scenario, the frontends are configured as follows:
37+
6. Enter or select the following information in **Add frontend IP configuration**.
38+
If **myLoadBalancer** is a _Public_ Load Balancer:
4439

45-
| Frontend | IP address | protocol | port |
46-
| --- | --- | --- | --- |
47-
| ![green frontend](./media/load-balancer-multivip-overview/load-balancer-rule-green.png) 1 |65.52.0.1 |TCP |80 |
48-
| ![purple frontend](./media/load-balancer-multivip-overview/load-balancer-rule-purple.png) 2 |*65.52.0.2* |TCP |80 |
40+
| Setting | Value |
41+
|-------------------|-----------------------------------------------------------|
42+
| Name | **myFrontend2** |
43+
| IP Version | Select **IPv4** or **IPv6**. |
44+
| IP type | Select **IP address** or **IP prefix**. |
45+
| Public IP address | Select an existing Public IP address or create a new one. |
46+
47+
If **myLoadBalancer** is an _Internal_ Load Balancer:
4948

50-
The backend instance IP (BIP) is the IP address of the backend service in the backend pool, each VM exposes the desired service on a unique port on the backend instance IP. This service is associated with the frontend IP (FIP) through a rule definition.
49+
| Setting | Value |
50+
|-------------------|------------------------------------------------------------------------------------------|
51+
| Name | **myFrontend2** |
52+
| IP Version | Select **IPv4** or **IPv6**. |
53+
| Subnet | Select an existing subnet. |
54+
| Availability zone | Select *zone-redundant* for resilient applications. You can also select a specific zone. |
5155

52-
We define two rules:
56+
57+
7. Select **Save**.
5358

54-
| Rule | Map frontend | To backend pool |
55-
| --- | --- | --- |
56-
| 1 |![green frontend](./media/load-balancer-multivip-overview/load-balancer-rule-green.png) FIP1:80 |![green backend](./media/load-balancer-multivip-overview/load-balancer-rule-green.png) BIP1:80, ![green backend](./media/load-balancer-multivip-overview/load-balancer-rule-green.png) BIP2:80 |
57-
| 2 |![VIP](./media/load-balancer-multivip-overview/load-balancer-rule-purple.png) FIP2:80 |![purple backend](./media/load-balancer-multivip-overview/load-balancer-rule-purple.png) BIP1:81, ![purple backend](./media/load-balancer-multivip-overview/load-balancer-rule-purple.png) BIP2:81 |
59+
Next you must associate the frontend IP configuration you have created with an appropriate load balancing rule. Refer to [Manage rules for Azure Load Balancer](manage-rules-how-to.md#load-balancing-rules) for more information on how to do this.
5860

59-
The complete mapping in Azure Load Balancer is now as follows:
61+
## Remove a frontend
6062

61-
| Rule | Frontend IP address | protocol | port | Destination | port |
62-
| --- | --- | --- | --- | --- | --- |
63-
| ![green rule](./media/load-balancer-multivip-overview/load-balancer-rule-green.png) 1 |65.52.0.1 |TCP |80 |BIP IP Address |80 |
64-
| ![purple rule](./media/load-balancer-multivip-overview/load-balancer-rule-purple.png) 2 |65.52.0.2 |TCP |80 |BIP IP Address |81 |
63+
In this example, you remove a frontend from your Load Balancer.
6564

66-
Each rule must produce a flow with a unique combination of destination IP address and destination port. Multiple load balancing rules can deliver flows to the same backend instance IP on different ports by varying the destination port of the flow.
65+
1. Sign in to the [Azure portal](https://portal.azure.com).
6766

68-
Health probes are always directed to the backend instance IP of a VM. You must ensure that your probe reflects the health of the VM.
67+
2. In the search box at the top of the portal, enter **Load balancer**. Select **Load balancers** in the search results.
6968

70-
## Rule type #2: backend port reuse by using Floating IP
69+
3. Select **myLoadBalancer** or your load balancer.
7170

72-
Azure Load Balancer provides the flexibility to reuse the frontend port across multiple frontends configurations. Additionally, some application scenarios prefer or require the same port to be used by multiple application instances on a single VM in the backend pool. Common examples of port reuse include clustering for high availability, network virtual appliances, and exposing multiple TLS endpoints without re-encryption.
71+
4. In the load balancer page, select **Frontend IP configuration** in **Settings**.
7372

74-
If you want to reuse the backend port across multiple rules, you must enable Floating IP in the load balancing rule definition.
73+
5. Select the delete icon next to the frontend you would like to remove.
7574

76-
*Floating IP* is Azure's terminology for a portion of what is known as Direct Server Return (DSR). DSR consists of two parts: a flow topology and an IP address mapping scheme. At a platform level, Azure Load Balancer always operates in a DSR flow topology regardless of whether Floating IP is enabled or not. This means that the outbound part of a flow is always correctly rewritten to flow directly back to the origin.
75+
6. Note the associated resources that will also be deleted. Check the box that says 'I have read and understood that this frontend IP configuration as well as the associated resources listed above will be deleted'
7776

78-
With the default rule type, Azure exposes a traditional load balancing IP address mapping scheme for ease of use. Enabling Floating IP changes the IP address mapping scheme to allow for more flexibility.
77+
7. Select **Delete**.
7978

80-
:::image type="content" source="media/load-balancer-multivip-overview/load-balancer-multivip-dsr.png" alt-text="Diagram of load balancer traffic for multiple frontend IPs with floating IP.":::
81-
82-
For this scenario, every VM in the backend pool has three network interfaces:
83-
84-
* Backend IP: a Virtual NIC associated with the VM (IP configuration of Azure's NIC resource).
85-
* Frontend 1 (FIP1): a loopback interface within guest OS that is configured with IP address of FIP1.
86-
* Frontend 2 (FIP2): a loopback interface within guest OS that is configured with IP address of FIP2.
87-
88-
Let's assume the same frontend configuration as in the previous scenario:
89-
90-
| Frontend | IP address | protocol | port |
91-
| --- | --- | --- | --- |
92-
| ![green frontend](./media/load-balancer-multivip-overview/load-balancer-rule-green.png) 1 |65.52.0.1 |TCP |80 |
93-
| ![purple frontend](./media/load-balancer-multivip-overview/load-balancer-rule-purple.png) 2 |*65.52.0.2* |TCP |80 |
94-
95-
We define two floating IP rules:
96-
97-
| Rule | Frontend | Map to backend pool |
98-
| --- | --- | --- |
99-
| 1 |![green rule](./media/load-balancer-multivip-overview/load-balancer-rule-green.png) FIP1:80 |![green backend](./media/load-balancer-multivip-overview/load-balancer-rule-green.png) FIP1:80 (in VM1 and VM2) |
100-
| 2 |![purple rule](./media/load-balancer-multivip-overview/load-balancer-rule-purple.png) FIP2:80 |![purple backend](./media/load-balancer-multivip-overview/load-balancer-rule-purple.png) FIP2:80 (in VM1 and VM2) |
101-
102-
The following table shows the complete mapping in the load balancer:
103-
104-
| Rule | Frontend IP address | protocol | port | Destination | port |
105-
| --- | --- | --- | --- | --- | --- |
106-
| ![green rule](./media/load-balancer-multivip-overview/load-balancer-rule-green.png) 1 |65.52.0.1 |TCP |80 |same as frontend (65.52.0.1) |same as frontend (80) |
107-
| ![purple rule](./media/load-balancer-multivip-overview/load-balancer-rule-purple.png) 2 |65.52.0.2 |TCP |80 |same as frontend (65.52.0.2) |same as frontend (80) |
108-
109-
The destination of the inbound flow is now the frontend IP address on the loopback interface in the VM. Each rule must produce a flow with a unique combination of destination IP address and destination port. Port reuse is possible on the same VM by varying the destination IP address to the frontend IP address of the flow. Your service is exposed to the load balancer by binding it to the frontend’s IP address and port of the respective loopback interface.
110-
111-
You notice the destination port doesn't change in the example. In floating IP scenarios, Azure Load Balancer also supports defining a load balancing rule to change the backend destination port and to make it different from the frontend destination port.
112-
113-
The Floating IP rule type is the foundation of several load balancer configuration patterns. One example that is currently available is the [Configure one or more Always On availability group listeners](/azure/azure-sql/virtual-machines/windows/availability-group-listener-powershell-configure) configuration. Over time, we'll document more of these scenarios.
114-
115-
> [!NOTE]
116-
> For more detailed information on the specific Guest OS configurations required to enable Floating IP, please refer to [Azure Load Balancer Floating IP configuration](load-balancer-floating-ip.md).
11779

11880
## Limitations
11981

120-
* Multiple frontend configurations are only supported with IaaS VMs and virtual machine scale sets.
121-
* With the Floating IP rule, your application must use the primary IP configuration for outbound SNAT flows. If your application binds to the frontend IP address configured on the loopback interface in the guest OS, Azure's outbound SNAT won't rewrite the outbound flow, and the flow fails. Review [outbound scenarios](load-balancer-outbound-connections.md).
82+
* With the Floating IP rule, your application must use the primary IP configuration of the network interface of your virtual machine for outbound flows. If your application binds to the frontend IP address configured on the loopback interface in the guest OS, Azure's outbound won't rewrite the outbound flow, and the flow fails. Review [outbound scenarios](load-balancer-outbound-connections.md).
12283
* Floating IP isn't currently supported on secondary IP configurations.
12384
* Public IP addresses have an effect on billing. For more information, see [IP Address pricing](https://azure.microsoft.com/pricing/details/ip-addresses/)
12485
* Subscription limits apply. For more information, see [Service limits](../azure-resource-manager/management/azure-subscription-service-limits.md#networking-limits) for details.

0 commit comments

Comments
 (0)