你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

网络

在创建和管理 Azure Service Fabric 群集时,可以为节点和应用程序提供网络连接。 网络资源包括 IP 地址范围、虚拟网络、负载均衡器和网络安全组。 在本文中,你会了解针对这些资源的最佳做法。

查看 Azure Service Fabric 网络模式,了解如何创建使用以下功能的群集:现有虚拟网络或子网、静态公共 IP 地址、仅内部负载均衡器或内部和外部负载均衡器。

基础结构网络

使用加速网络使虚拟机的性能最大化,方法是:在资源管理器模板中声明 enableAcceleratedNetworking 属性。以下代码片段是关于虚拟机规模集 NetworkInterfaceConfigurations 的,后者可以启用加速网络

"networkInterfaceConfigurations": [
  {
    "name": "[concat(variables('nicName'), '-0')]",
    "properties": {
      "enableAcceleratedNetworking": true,
      "ipConfigurations": [
        {
        <snip>
        }
      ],
      "primary": true
    }
  }
]

可以在使用加速网络的 Linux 上以及使用加速网络的 Windows 上预配 Service Fabric 群集。

Azure 虚拟机系列 SKU 支持加速网络:D/DSv2、D/DSv3、E/ESv3、F/FS、FSv2 和 Ms/Mms。 加速网络已使用 Standard_DS8_v3 SKU 在 2019 年 1 月 23 日针对 Service Fabric Windows 群集成功进行测试,以及使用 Standard_DS12_v2 在 2019 年 1 月 29 日针对 Service Fabric Linux 群集成功进行测试。 请注意,加速网络至少需要 4 个 vCPU。

若要在现有的 Service Fabric 群集上启用加速网络,需要首先通过添加虚拟机规模集来横向扩展 Service Fabric 群集,以便执行以下步骤:

  1. 预配已启用加速网络的 NodeType
  2. 将服务及其状态迁移到已预配并已启用加速网络的 NodeType

若要在现有的群集上启用加速网络,必须横向扩展基础结构,因为就地启用加速网络会导致停机,原因它需要可用性集中的所有虚拟机处于停止和解除分配状态,然后才能在现有 NIC 上启用加速网络

群集网络

  • Service Fabric 群集可以部署到现有的虚拟网络中,只需执行 Service Fabric 网络模式中介绍的步骤即可。

  • 对于限制群集的入站和出站流量的节点类型,建议使用网络安全组 (NSG)。 确保在 NSG 中打开所需的端口。

  • Service Fabric 系统服务所在的主节点类型不需通过外部负载均衡器公开,可以通过内部负载均衡器公开

  • 静态公共 IP 地址用于群集。

网络安全规则

下述规则是建议的典型配置需要符合的最低要求。 还包括在不需要可选规则的情况下,哪些规则是操作群集必须遵守的。 它支持使用网络对等互连和 Jumpbox 概念(例如 Azure Bastion)实现完整的安全锁定。 如果未能打开强制端口或未能批准 IP/URL,群集的正常操作会被阻止,并且可能不受支持。

入站

优先度 名称 端口 协议 目标 操作 必需
3900 Azure 门户 19080 TCP ServiceFabric Any Allow
3910 客户端 API 19000 TCP Internet Any Allow
3920 SFX + 客户端 API 19080 TCP Internet Any Allow
3930 群集 1025-1027 TCP VirtualNetwork 任意 Allow
3940 临时 49152-65534 TCP VirtualNetwork 任意 Allow
3950 应用程序 20000-30000 TCP VirtualNetwork Any Allow
3960 RDP 3389 TCP Internet Any 拒绝
3970 SSH 22 TCP Internet Any 拒绝
3980 自定义终结点 443 TCP Internet Any 拒绝

有关入站安全规则的更多信息:

  • Azure 门户:Service Fabric 资源提供程序使用此端口查询有关群集的信息,以便在 Azure 管理门户中显示。 如果无法从 Service Fabric 资源提供程序访问此端口,你会在 Azure 门户中看到“找不到节点”或“UpgradeServiceNotReachable”等消息,并且节点和应用程序列表会显示为空。 这意味着,如果想通过 Azure 管理门户查看群集,负载均衡器必须公开一个公共 IP 地址,而且 NSG 必须允许传入 19080 流量。 建议对 Service Fabric 资源提供程序中的扩展管理操作使用此端口,以确保更高的可靠性。

  • 客户端 API:PowerShell 使用的 API 的客户端连接终结点。

  • SFX + 客户端 API:Service Fabric Explorer 使用此端口浏览和管理群集。 它与大多数常见 API(如 REST/PowerShell (Microsoft.ServiceFabric.PowerShell.Http)/CLI/.NET)的使用方式一样。

  • 群集:用于节点间通信。

  • 临时:Service Fabric 将这些端口的一部分用作应用程序端口,其余端口可用于 OS。 它还会将此范围映射到 OS 中的现有范围,因此,无论出于何种目的,你都可以使用此处示例中指定的范围。 确保起始端口与结束端口至少相差 255。 如果此差过小,可能会遇到冲突,因为此范围与 OS 共享。 要查看配置的动态端口范围,请运行netsh int ipv4 show dynamic port tcp。 Linux 群集不需要这些端口。

  • 应用程序:应用程序端口范围应足够大,足以满足应用程序的终结点要求。 此范围在计算机上的动态端口范围中应是独占的,即按配置中设置的 ephemeralPorts 范围。 每当需要新端口时,Service Fabric 将使用这些端口,并负责为节点上的这些端口打开防火墙。

  • RDP:可选,在需要从 Internet 或虚拟网络获取 RDP 时使用,用于跳板主机方案。

  • SSH:可选(如果对于 jumpbox 场景,Internet 或 VirtualNetwork 需要 SSH)

  • 自定义终结点:应用程序启用可访问 Internet 的终结点的示例。

注意

对于大多数将 Internet 作为源的规则,请考虑限制到已知网络,最好是通过 CIDR 块定义。

出站

优先度 名称 端口 协议 目标 操作 必需
4010 资源提供程序 443 TCP 任意 ServiceFabric Allow
4020 下载二进制文件 443 TCP Any AzureFrontDoor.FirstParty Allow

有关出站安全规则的更多信息:

  • 资源提供程序:UpgradeService 与 Service Fabric 资源提供程序之间的连接,以接收管理操作,例如 ARM 部署或强制性操作,例如种子节点选择或主要节点类型升级。

  • 下载二进制文件:升级服务使用地址 download.microsoft.com 获取二进制文件,安装、重新映像和运行时升级需要此关系。 在“仅内部”负载均衡器的场景中,必须使用允许端口 443 出站流量的规则,添加附加的外部负载均衡器。 或者,可以在成功设置后阻止此端口,但在这种情况下,必须将升级包分发到节点,或者该端口必须在短时间内处于打开状态,然后需要手动升级。

将 Azure 防火墙与 NSG 流日志流量分析配合使用,以跟踪连接问题。 ARM 模板具有 NSG 的 Service Fabric 是一个良好的着手示例。

注意

不应覆盖默认网络安全规则,因为它们可确保节点之间的通信。 网络安全组 - 工作原理。 另举一例,需要端口 80 上的出站连接才能执行证书吊销列表检查。

需要其他规则的常见方案

借助 Azure 服务标记可以涵盖所有其他方案。

限制出站流量

对于某些客户,上述默认 NSG 规则不足以满足其网络安全要求。 例如,一个常见的要求(默认情况下不提供)是阻止流向 Internet 的出站流量。 为此,客户可以根据下面的参考表应用 NSG 规则,以限制出站流量,同时维护基本的群集功能。 这些规则可以同时应用于经典群集和托管群集。 对于托管群集,请确保它们不会替代任何默认规则(以“SFMC-”为前缀)。

注意

下表仅用于引用。

优先度 名称 端口 协议 目标 操作
1000 AllowSFRP Any 任意 任意 ServiceFabric 允许
1001 允许存储 Any 任意 任意 存储 允许
1002 允许IMS Any 任意 任意 169.254.169.254/32 Allow
1003 AllowVIP Any 任意 任意 168.63.129.16/32 Allow
1004 AllowNTP 123 Any 任意 AzureCloud Allow
1005 AllowCRL 80 Any 任意 Internet 允许
2000 DenyInternet Any 任意 任意 Internet 拒绝
65000 AllowVnetOutBound Any 任意 VirtualNetwork VirtualNetwork 允许
65001 AllowInternetOutBound Any 任意 任意 Internet 允许
65500 DenyAllOutBound Any 任意 任意 任意 拒绝
  • AllowSFRP:允许群集与 Service Fabric 资源提供程序通信。
  • AllowStorage:允许群集与存储帐户通信。
  • AllowIMS:允许 Azure 实例元数据服务
  • AllowVIP:允许 Azure 资源通信
  • AllowNTP:允许网络时间协议。
  • AllowCRL:允许群集证书吊销列表检查。
  • DenyInternet:阻止发到 Internet 的出站流量。

Azure DevOps

Azure DevOps(服务标记:AzureCloud)中的经典 PowerShell 任务需要客户端对群集 API 的访问权限,例如应用程序部署或操作任务。 这不适用于仅 ARM 模板方法,包括ARM 应用程序资源

优先度 名称 端口 协议 目标 操作 方向
3915 Azure DevOps 19000 TCP AzureCloud 任意 允许 入站

正在更新 Windows

修补 Windows 操作系统的最佳做法是通过自动 OS 映像升级来替换 OS 磁盘,而无需任何其他规则。 修补业务流程应用程序将管理 VM 内升级,在此过程中 Windows 更新会应用操作系统补丁,这需要访问“下载中心”(服务标记:AzureUpdateDeliver)来下载更新二进制文件。

优先度 名称 端口 协议 目标 操作 方向
4015 Windows 更新 443 TCP Any AzureUpdateDelivery Allow 出站

API Management

Azure API 管理(服务标记:ApiManagement)的集成需要客户端 API 访问权限才能从群集查询终结点信息。

优先度 名称 端口 协议 目标 操作 方向
3920 API Management 19080 TCP ApiManagement 任意 允许 入站

应用程序网络

  • 若要运行 Windows 容器工作负荷,请使用开放网络模式,使服务到服务的通信更方便。

  • 使用反向代理(例如 TraefikService Fabric 反向代理)公开常用的应用程序端口,例如 80 或 443。

  • 对于托管在无法从 Azure 云存储中拉取基本层的气隙计算机上的 Windows 容器,可通过在 Docker 守护程序中使用 --allow-nondistributable-artifacts 标志来重写外部层行为。

Next steps