|
| 1 | +--- |
| 2 | +title: Increase Private Endpoint virtual network limits |
| 3 | +titleSuffix: Azure Private Link |
| 4 | +description: Learn how to increase private endpoints virtual network limits by upgrading to High Scale Private Endpoints. |
| 5 | +services: private-link |
| 6 | +author: ivapplyr |
| 7 | +ms.author: ivapplyr |
| 8 | +ms.date: 04/01/2025 |
| 9 | +ms.service: azure-private-link |
| 10 | +ms.topic: how-to |
| 11 | +#customer intent: As a network administrator, I want to increase private endpoint limits so that I can scale my virtual network infrastructure effectively. |
| 12 | +--- |
| 13 | + |
| 14 | +# How-to: Increase Private Endpoint virtual network limits |
| 15 | + |
| 16 | +Today, users are [limited](/azure/azure-resource-manager/management/azure-subscription-service-limits) to deploying only 1,000 private endpoints within their virtual network. It's common for users to navigate around this limitation by implementing a [Hub and Spoke](/azure/cloud-adoption-framework/ready/azure-best-practices/hub-spoke-network-topology) model or a [Mesh network](/azure/virtual-network-manager/concept-connectivity-configuration). Doing so would make it possible to deploy extra private endpoints across peered virtual networks to temporarily surpass the per virtual network limit. However, scaling in this manner places users at risk of a silently enforced limitation. Whenever users surpass 4,000 private endpoints across their peered virtual networks, they put themselves at risk of connectivity issues and packet drops. |
| 17 | + |
| 18 | +For users looking to surpass these current limits, we recommend upgrading to *High Scale Private Endpoints*. This feature increases standard limits to 5,000 private endpoints in a singular virtual network and 20,000 private endpoints across peered networks. This article details how to opt into this feature and provide extra considerations before enablement. |
| 19 | + |
| 20 | +> [!NOTE] |
| 21 | +> This feature is currently in public preview and available in select regions. We recommend reviewing all considerations before enabling it for your subscription. |
| 22 | +
|
| 23 | +## Prerequisites |
| 24 | + |
| 25 | +* An active Azure account with a subscription. [Create an account for free](https://azure.microsoft.com/free/). |
| 26 | +* Register feature flag Microsoft.Network/EnableMaxPrivateEndpointsVia64kPath on current subscription, see [Enable Azure preview features](/azure/azure-resource-manager/management/preview-features). |
| 27 | +* Understanding of [Hub and Spoke](/azure/cloud-adoption-framework/ready/azure-best-practices/hub-spoke-network-topology) or [Mesh network](/azure/virtual-network-manager/concept-connectivity-configuration) topology. |
| 28 | +* A virtual network with private endpoint configured, see [Create a private endpoint](/azure/private-link/create-private-endpoint-portal). |
| 29 | +* Private Endpoint Network Policies set to **Enabled** or **RouteTableEnabled** for all Private Endpoint Subnets, see [Manage network policies for private endpoints](/azure/private-link/disable-private-endpoint-network-policy). |
| 30 | + |
| 31 | +### Confirm if you need to upgrade |
| 32 | + |
| 33 | +If you need more than 1,000 private endpoints in a single virtual network or encounter a max private endpoint limit error, consider upgrading to *High Scale Private Endpoints*. |
| 34 | + |
| 35 | +For customers using a Hub and Spoke or Mesh topology, determine how many private endpoints are connected to your central virtual network containing client virtual machines. Use the provided ARG query to facilitate this process. |
| 36 | + |
| 37 | +```Azure Resource Graph |
| 38 | +Resources |
| 39 | +
|
| 40 | + | where subscriptionId == "\<yourSubscriptionIDHere>" |
| 41 | +
|
| 42 | + | where type =~ 'Microsoft.Network/virtualnetworks' |
| 43 | +
|
| 44 | + | project id, remoteVNetIds = properties.virtualNetworkPeerings |
| 45 | +
|
| 46 | + | mv-expand remoteVNetIds |
| 47 | +
|
| 48 | + | project id, remoteVNetId = tostring(remoteVNetIds.properties.remoteVirtualNetwork.id) |
| 49 | +
|
| 50 | + | where isnotempty(remoteVNetId) |
| 51 | +
|
| 52 | + | join kind=leftouter ( |
| 53 | +
|
| 54 | + Resources |
| 55 | +
|
| 56 | + | where type =~ 'Microsoft.Network/privateEndpoints' |
| 57 | +
|
| 58 | + | project id, subnetId = tostring(properties.subnet.id) |
| 59 | +
|
| 60 | + | extend VNetId = split(subnetId ,'/subnets/')[0] |
| 61 | +
|
| 62 | + | project id, VNetId = tostring(VNetId) |
| 63 | +
|
| 64 | + | summarize Count = count() by VNetId) |
| 65 | + on $left.remoteVNetId == $right.VNetId |
| 66 | + | extend Count = iff(isempty(Count), 0, Count) |
| 67 | + | summarize TotalRemotePE = sum(Count) by ['id'] |
| 68 | +
|
| 69 | + | join kind=leftouter ( |
| 70 | +
|
| 71 | + Resources |
| 72 | +
|
| 73 | + | where type =~ 'Microsoft.Network/privateEndpoints' |
| 74 | +
|
| 75 | + | project id, subnetId = tostring(properties.subnet.id) |
| 76 | +
|
| 77 | + | extend VNetId = split(subnetId ,'/subnets/')[0] |
| 78 | +
|
| 79 | + | project id, VNetId = tostring(VNetId) |
| 80 | +
|
| 81 | + | summarize Count = count() by VNetId) |
| 82 | +
|
| 83 | + on $left.id == $right.VNetId |
| 84 | +
|
| 85 | + | extend TotalPE = iff(isempty(Count), 0, Count) + TotalRemotePE |
| 86 | +
|
| 87 | +| project VNetId = id, TotalPE |
| 88 | +
|
| 89 | +| order by TotalPE desc |
| 90 | +
|
| 91 | +| order by ['VNetId'] asc |
| 92 | +
|
| 93 | +``` |
| 94 | + |
| 95 | +### Enable High Scale Private Endpoints |
| 96 | + |
| 97 | +To enable this feature, configure *Private Endpoint virtual network Policies*. We recommend enabling this property for all virtual networks you want to include in this feature and for all connected compute virtual networks in peering scenarios. |
| 98 | + |
| 99 | +> [!WARNING] |
| 100 | +> Upgrading or downgrading this feature triggers a platform update and results in a one-time connection reset. We recommend performing this action during a maintenance window. |
| 101 | +
|
| 102 | +#### [**PowerShell**](#tab/ARG-HSP-Powershell) |
| 103 | + |
| 104 | +```azurepowershell-interactive |
| 105 | +$vnetName = "myVirtualNetwork" |
| 106 | +$resourceGroupName = "myResourceGroup" |
| 107 | +$vnet = Get-AzVirtualNetwork -ResourceGroupName $resourceGroupName -Name $vnetName |
| 108 | +
|
| 109 | +$vnet.PrivateEndpointVNetPolicies = "Basic" |
| 110 | +$vnet | Set-AzVirtualNetwork |
| 111 | +
|
| 112 | +``` |
| 113 | + |
| 114 | +#### [**CLI**](#tab/ARG-HSP-CLI) |
| 115 | + |
| 116 | +```azurecli-interactive |
| 117 | +vnetName = "myVirtualNetwork" |
| 118 | +resourceGroupName="myResourceGroup" |
| 119 | +
|
| 120 | +az network vnet update --name $vnetName --resource-group $resourceGroupName --pe-vnet-policies="Basic" |
| 121 | +
|
| 122 | +``` |
| 123 | + |
| 124 | +--- |
| 125 | + |
| 126 | +### Validate configuration |
| 127 | + |
| 128 | +To validate the configuration, verify all necessary properties are set correctly. You can do this by checking the following: |
| 129 | + |
| 130 | +#### [**Portal**](#tab/validate-portal) |
| 131 | + |
| 132 | +1. In the search box at the top of the portal, enter **Virtual network**. Select **Virtual networks**. |
| 133 | + |
| 134 | +1. Select **myVNet**. |
| 135 | + |
| 136 | +1. In settings of **myVNet**, select **Subnets**. |
| 137 | + |
| 138 | +1. Select your subnet. |
| 139 | + |
| 140 | +1. In the **Edit subnet** pane, under **Network Policy for Private Endpoints**, confirm **Route Table** is selected. |
| 141 | + |
| 142 | +1. In the virtual network overview page, select **JSON view** in the top right corner. |
| 143 | + |
| 144 | +1. In the **Resource JSON** pane, select the latest API Version. |
| 145 | + |
| 146 | +1. Validate that the virtual network property *privateEndpointVNetPolicies* is set to **Basic**. |
| 147 | + |
| 148 | +1. Confirm that you can deploy more than 1,000 private endpoints in the respective virtual network. |
| 149 | + |
| 150 | +#### [**PowerShell**](#tab/validate-PowerShell) |
| 151 | + |
| 152 | +```Powershell |
| 153 | +
|
| 154 | +$vnetName = "myVirtualNetwork" |
| 155 | +$resourceGroupName = "myResourceGroup" |
| 156 | +$vnet = Get-AzVirtualNetwork / |
| 157 | +-ResourceGroupName $resourceGroupName / |
| 158 | +-Name $vnetName / |
| 159 | +$vnet.PrivateEndpointVNetPolicies |
| 160 | +
|
| 161 | +``` |
| 162 | + |
| 163 | +--- |
| 164 | + |
| 165 | +### Additional Considerations |
| 166 | + |
| 167 | +* Upgrading or downgrading this feature triggers a platform update and results in a one-time connection reset of all long-running private endpoint connections. We recommend configuring High Scale Private Endpoints during a maintenance window. |
| 168 | + |
| 169 | +* To downgrade from this feature, reduce the total private endpoint count in your virtual network to the limit before the feature was enabled. |
| 170 | + |
| 171 | +* Monitoring Bytes In / Out will no longer be available on all high scale private endpoints. |
| 172 | + |
| 173 | +* On-premises private endpoint traffic is now billed as an aggregate on your gateway virtual network. Previously, it was shown on the private endpoint resource in your billing cost center. This change doesn't affect your total bill. |
| 174 | + |
| 175 | +### Limitations |
| 176 | + |
| 177 | +| **Limit** | **Description** | |
| 178 | +|---|---| |
| 179 | +| Subscription must be enabled before enabling High Scale Private Endpoints. | Enabling Private Endpoint virtual network Policies before allow listing subscription feature flag requires a reconfiguration. | |
| 180 | +| Swift based virtual machines aren't supported. | Swift based virtual machines deployed within a High Scale Private Endpoint virtual network aren't supported with this feature. | |
| 181 | +| Feature currently available in select regions. | West Central US <br> UK South <br> East Asia <br> US East <br> US North | |
| 182 | + |
| 183 | +## Next Steps |
| 184 | + |
| 185 | +In this article, you learned how to enable High Scale Private Endpoints and the considerations that come with it. For more information on Azure Private Link, see the following articles: |
| 186 | + |
| 187 | +* [Private Link Availability](/azure/private-link/availability) |
| 188 | +* [Private Link DNS Zone Values](/azure/private-link/private-endpoint-dns) |
| 189 | +* [Manage network policies for private endpoints](/azure/private-link/disable-private-endpoint-network-policy) |
| 190 | +* [What is a private endpoint?](/azure/private-link/private-endpoint-overview) |
0 commit comments