Skip to content

Commit 2ab18de

Browse files
authored
Merge pull request #190235 from inputoutputcode/chrpap/nsgupdate
Adjust wording and service tags
2 parents a9ddb28 + 791e5c9 commit 2ab18de

File tree

1 file changed

+51
-24
lines changed

1 file changed

+51
-24
lines changed

articles/service-fabric/service-fabric-best-practices-networking.md

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Azure Service Fabric networking best practices
33
description: Rules and design considerations for managing network connectivity using Azure Service Fabric.
44
author: chrpap
55
ms.topic: conceptual
6-
ms.date: 10/29/2021
6+
ms.date: 03/01/2022
77
ms.author: chrpap
88
---
99

@@ -36,7 +36,7 @@ Service Fabric cluster can be provisioned on [Linux with Accelerated Networking]
3636

3737
Accelerated Networking is supported for Azure Virtual Machine Series SKUs: D/DSv2, D/DSv3, E/ESv3, F/FS, FSv2, and Ms/Mms. Accelerated Networking was tested successfully using the Standard_DS8_v3 SKU on 01/23/2019 for a Service Fabric Windows Cluster, and using Standard_DS12_v2 on 01/29/2019 for a Service Fabric Linux Cluster. Please note that Accelerated Networking requires at least 4 vCPUs.
3838

39-
To enable Accelerated Networking on an existing Service Fabric cluster, you need to first [Scale a Service Fabric cluster out by adding a Virtual Machine Scale Set](./virtual-machine-scale-set-scale-node-type-scale-out.md), to perform the following:
39+
To enable Accelerated Networking on an existing Service Fabric cluster, you need to first [Scale a Service Fabric cluster out by adding a Virtual Machine Scale Set](virtual-machine-scale-set-scale-node-type-scale-out.md), to perform the following:
4040
1. Provision a NodeType with Accelerated Networking enabled
4141
2. Migrate your services and their state to the provisioned NodeType with Accelerated Networking enabled
4242

@@ -54,32 +54,30 @@ Scaling out infrastructure is required to enable Accelerated Networking on an ex
5454

5555
## Network Security Rules
5656

57-
The network security group rules described below are the recommended minimum for a typical configuration. We also include what rules are mandatory for an operational cluster if optional rules are not desired. Failure to open the mandatory ports or approving the IP/URL will prevent proper operation of the cluster and may not be supported. The [automatic OS image upgrades](../virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-upgrade.md) is recommended for Windows Updates. If you use [Patch Orchestration Application](service-fabric-patch-orchestration-application.md) an additional rule with the ServiceTag [AzureUpdateDelivery](../virtual-network/service-tags-overview.md) is needed.
58-
59-
The rules marked as mandatory are needed for a proper operational cluster. Described is the minimum for typical configurations. It also enables a complete security lockdown with network peering and jumpbox concepts like Azure Bastion. Failure to open the mandatory ports or approving the IP/URL will prevent proper operation of the cluster and may not be supported. The [automatic OS image upgrades](../virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-upgrade.md) is the recommendation for Windows Updates, for the [Patch Orchestration Application](service-fabric-patch-orchestration-application.md) an additional rule with the Virtual Network Service Tag [AzureUpdateDelivery](../virtual-network/service-tags-overview.md) is needed.
57+
The rules described below are the recommended minimum for a typical configuration. We also include what rules are mandatory for an operational cluster if optional rules are not desired. It allows a complete security lockdown with network peering and jumpbox concepts like Azure Bastion. Failure to open the mandatory ports or approving the IP/URL will prevent proper operation of the cluster and may not be supported.
6058

6159
### Inbound
62-
|Priority |Name |Port |Protocol |Source |Destination |Action | Mandatory
60+
|Priority |Name |Port |Protocol |Source |Destination |Action |Mandatory
6361
|--- |--- |--- |--- |--- |--- |--- |---
64-
|3900 |Azure portal |19080 |TCP |ServiceFabric |Any |Allow | No
65-
|3910 |Client API |19000 |TCP |Internet |Any |Allow | No
66-
|3920 |SFX + Client API |19080 |TCP |Internet |Any |Allow | Yes
67-
|3930 |Cluster |1025-1027 |TCP |VirtualNetwork |Any |Allow | Yes
68-
|3940 |Ephemeral |49152-65534 |TCP |VirtualNetwork |Any |Allow | Yes
69-
|3950 |Application |20000-30000 |TCP |VirtualNetwork |Any |Allow | Yes
70-
|3960 |RDP |3389-3488 |TCP |Internet |Any |Deny | No
71-
|3970 |SSH |22 |TCP |Internet |Any |Deny | No
72-
|3980 |Custom endpoint |443 |TCP |Internet |Any |Deny | No
62+
|3900 |Azure portal |19080 |TCP |ServiceFabric |Any |Allow |Yes
63+
|3910 |Client API |19000 |TCP |Internet |Any |Allow |No
64+
|3920 |SFX + Client API |19080 |TCP |Internet |Any |Allow |No
65+
|3930 |Cluster |1025-1027 |TCP |VirtualNetwork |Any |Allow |Yes
66+
|3940 |Ephemeral |49152-65534 |TCP |VirtualNetwork |Any |Allow |Yes
67+
|3950 |Application |20000-30000 |TCP |VirtualNetwork |Any |Allow |Yes
68+
|3960 |RDP |3389-3488 |TCP |Internet |Any |Deny |No
69+
|3970 |SSH |22 |TCP |Internet |Any |Deny |No
70+
|3980 |Custom endpoint |443 |TCP |Internet |Any |Deny |No
7371

7472
More information about the inbound security rules:
7573

76-
* **Azure portal**. This port is used by the Service Fabric Resource Provider to query information about your cluster in order to display in the Azure Management Portal. If this port is not accessible from the Service Fabric Resource Provider then you will see a message such as 'Nodes Not Found' or 'UpgradeServiceNotReachable' in the Azure portal and your node and application list will appear empty. This means that if you wish to have visibility of your cluster in the Azure Management Portal then your load balancer must expose a public IP address and your NSG must allow incoming 19080 traffic.
74+
* **Azure portal**. This port is used by the Service Fabric Resource Provider to query information about your cluster in order to display in the Azure Management Portal. If this port is not accessible from the Service Fabric Resource Provider then you will see a message such as 'Nodes Not Found' or 'UpgradeServiceNotReachable' in the Azure portal and your node and application list will appear empty. This means that if you wish to have visibility of your cluster in the Azure Management Portal then your load balancer must expose a public IP address and your NSG must allow incoming 19080 traffic. This port is recommended for extended management operations from the Service Fabric Resource Provider to guarantee higher reliability.
7775

78-
* **Client API**. The client connection endpoint for APIs used by PowerShell. Please open the port for the integration with Azure DevOps by using [AzureDevOps](../virtual-network/service-tags-overview.md) as Virtual Network Service Tag.
76+
* **Client API**. The client connection endpoint for APIs used by PowerShell.
7977

80-
* **SFX + Client API**. This port is used by Service Fabric Explorer to browse and manage your cluster. In the same way it's used by most common APIs like REST/PowerShell (Microsoft.ServiceFabric.PowerShell.Http)/CLI/.NET. This port is recommended for extended management operations from the Service Fabric Resource Provider to guarantee higher reliability. Please open the port for the integration with Azure API Management by using [ApiManagement](../virtual-network/service-tags-overview.md) as Virtual Network Service Tag.
78+
* **SFX + Client API**. This port is used by Service Fabric Explorer to browse and manage your cluster. In the same way it's used by most common APIs like REST/PowerShell (Microsoft.ServiceFabric.PowerShell.Http)/CLI/.NET.
8179

82-
* **Cluster**. Used for inter-node communication; should never be blocked.
80+
* **Cluster**. Used for inter-node communication.
8381

8482
* **Ephemeral**. Service Fabric uses a part of these ports as application ports, and the remaining are available for the OS. It also maps this range to the existing range present in the OS, so for all purposes, you can use the ranges given in the sample here. Make sure that the difference between the start and the end ports is at least 255. You might run into conflicts if this difference is too low, because this range is shared with the OS. To see the configured dynamic port range, run *netsh int ipv4 show dynamic port tcp*. These ports aren't needed for Linux clusters.
8583

@@ -96,10 +94,10 @@ More information about the inbound security rules:
9694
9795
### Outbound
9896

99-
|Priority |Name |Port |Protocol |Source |Destination |Action | Mandatory
100-
|--- |--- |--- |--- |--- |--- |--- |---
101-
|4010 |Resource Provider |443 |TCP |Any |ServiceFabric |Allow | Yes
102-
|4020 |Download Binaries |443 |TCP |Any |AzureFrontDoor.FirstParty |Allow | Yes
97+
|Priority |Name |Port |Protocol |Source |Destination |Action |Mandatory
98+
|--- |--- |--- |--- |--- |--- |--- |---
99+
|4010 |Resource Provider |443 |TCP |Any |ServiceFabric |Allow |Yes
100+
|4020 |Download Binaries |443 |TCP |Any |AzureFrontDoor.FirstParty |Allow |Yes
103101

104102

105103
More information about the outbound security rules:
@@ -113,13 +111,42 @@ Use Azure Firewall with [NSG flow log](../network-watcher/network-watcher-nsg-fl
113111
> [!NOTE]
114112
> Please note that the default network security rules should not be overwritten as they ensure the communication between the nodes. [Network Security Group - How it works](../virtual-network/network-security-group-how-it-works.md). Another example, outbound connectivity on port 80 is needed to do the Certificate Revocation List check.
115113
114+
### Common scenarios needing additional rules
115+
116+
All additional scenarios can be covered with [Azure Service Tags](../virtual-network/service-tags-overview.md).
117+
118+
#### Azure DevOps
119+
120+
The classic PowerShell tasks in Azure DevOps (Service Tag: AzureCloud) need Client API access to the cluster, examples are application deployments or operational tasks. This does not apply to the ARM templates only approach, including [ARM application resources](service-fabric-application-arm-resource.md).
121+
122+
|Priority |Name |Port |Protocol |Source |Destination |Action |Direction
123+
|--- |--- |--- |--- |--- |--- |--- |---
124+
|3915 |Azure DevOps |19000 |TCP |AzureCloud |Any |Allow |Inbound
125+
126+
#### Updating Windows
127+
128+
Best practice to patch the Windows operating system is replacing the OS disk by [automatic OS image upgrades](../virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-upgrade.md), no additional rule is required.
129+
The [Patch Orchestration Application](service-fabric-patch-orchestration-application.md) is managing in-VM upgrades where Windows Updates applies operating system patches, this needs access to the Download Center (Service Tag: AzureUpdateDelivery) to download the update binaries.
130+
131+
|Priority |Name |Port |Protocol |Source |Destination |Action |Direction
132+
|--- |--- |--- |--- |--- |--- |--- |---
133+
|4015 |Windows Updates |443 |TCP |Any |AzureUpdateDelivery |Allow |Outbound
134+
135+
#### API Management
136+
137+
The integration of Azure API Management (Service Tag: ApiManagement) need Client API access to query endpoint information from the cluster.
138+
139+
|Priority |Name |Port |Protocol |Source |Destination |Action |Direction
140+
|--- |--- |--- |--- |--- |--- |--- |---
141+
|3920 |API Management |19080 |TCP |ApiManagement |Any |Allow |Inbound
142+
116143
## Application Networking
117144

118145
* To run Windows container workloads, use [open networking mode](service-fabric-networking-modes.md#set-up-open-networking-mode) to make service-to-service communication easier.
119146

120147
* Use a reverse proxy such as [Traefik](https://docs.traefik.io/v1.6/configuration/backends/servicefabric/) or the [Service Fabric reverse proxy](service-fabric-reverseproxy.md) to expose common application ports such as 80 or 443.
121148

122-
* For Windows Containers hosted on air-gapped machines that can't pull base layers from Azure cloud storage, override the foreign layer behavior, by using the [--allow-nondistributable-artifacts](/virtualization/windowscontainers/about/faq#how-do-i-make-my-container-images-available-on-air-gapped-machines) flag in the Docker daemon.
149+
* For Windows Containers hosted on air-gapped machines that can't pull base layers from Azure cloud storage, override the foreign layer behavior, by using the [--allow-nondistributable-artifacts](https://docs.microsoft.com/virtualization/windowscontainers/about/faq#how-do-i-make-my-container-images-available-on-air-gapped-machines) flag in the Docker daemon.
123150

124151
## Next steps
125152

0 commit comments

Comments
 (0)