Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
在创建和管理 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 群集,以便执行以下步骤:
- 预配已启用加速网络的 NodeType
- 将服务及其状态迁移到已预配并已启用加速网络的 NodeType
若要在现有的群集上启用加速网络,必须横向扩展基础结构,因为就地启用加速网络会导致停机,原因它需要可用性集中的所有虚拟机处于停止和解除分配状态,然后才能在现有 NIC 上启用加速网络。
群集网络
Service Fabric 群集可以部署到现有的虚拟网络中,只需执行 Service Fabric 网络模式中介绍的步骤即可。
对于限制群集的入站和出站流量的节点类型,建议使用网络安全组 (NSG)。 确保在 NSG 中打开所需的端口。
Service Fabric 系统服务所在的主节点类型不需通过外部负载均衡器公开,可以通过内部负载均衡器公开
将静态公共 IP 地址用于群集。
网络安全规则
下述规则是建议的典型配置需要符合的最低要求。 还包括在不需要可选规则的情况下,哪些规则是操作群集必须遵守的。 它允许通过网络对等互连和跳板机概念(如 Azure Bastion)来实现完整的安全锁定。 如果未能打开强制端口或未能批准 IP/URL,群集的正常操作会被阻止,并且可能不受支持。
入站
| 优先级 | 名称 | 端口 | 协议 | 源 | 目标 | 动作 | 必需 |
|---|---|---|---|---|---|---|---|
| 3900 | Azure 门户 | 19080 | TCP | ServiceFabric | 任意 | 允许 | 是 |
| 3910 | 客户端 API | 19000 | TCP | Internet | 任意 | 允许 | 否 |
| 3920 | SFX + 客户端 API | 19080 | TCP | Internet | 任意 | 允许 | 否 |
| 3930 | 群集 | 1025-1027 | TCP | 虚拟网络 | 任意 | 允许 | 是 |
| 3940 | 临时 | 49152-65534 | TCP | 虚拟网络 | 任意 | 允许 | 是 |
| 3950 | 应用程序 | 20000-30000 | TCP | 虚拟网络 | 任意 | 允许 | 是 |
| 3960 | RDP | 3389 | TCP | Internet | 任意 | 拒绝 | 否 |
| 3970 | SSH | 22 | TCP | Internet | 任意 | 拒绝 | 否 |
| 3980 | 自定义终结点 | 443 | TCP | Internet | 任意 | 拒绝 | 否 |
有关入站安全规则的更多信息:
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 群集不需要这些端口。
应用程序:应用程序端口范围应足够大,足以满足应用程序的终结点要求。 该范围应与计算机上的动态端口范围分开,即配置中设置的临时端口范围。 每当需要新端口时,Service Fabric 将使用这些端口,并负责为节点上的这些端口打开防火墙。
RDP:可选,在需要从 Internet 或虚拟网络获取 RDP 时使用,用于跳板主机方案。
SSH:可选(如果对于 jumpbox 场景,Internet 或 VirtualNetwork 需要 SSH)。
自定义终结点:应用程序启用可访问 Internet 的终结点的示例。
注意
对于大多数使用 Internet 作为源的规则,请考虑限制为你的已知网络,最好是由 CIDR 块定义的。
出站
| 优先级 | 名称 | 端口 | 协议 | 源 | 目标 | 动作 | 必需 |
|---|---|---|---|---|---|---|---|
| 4010 | 资源提供程序 | 443 | TCP | 任意 | ServiceFabric | 允许 | 是 |
| 4020 | 下载二进制文件 | 443 | TCP | 任意 | AzureFrontDoor.FirstParty | 允许 | 是 |
有关出站安全规则的更多信息:
资源提供程序:UpgradeService 与 Service Fabric 资源提供程序之间的连接,以接收管理操作,例如 ARM 部署或强制性操作,例如种子节点选择或主要节点类型升级。
下载二进制文件:升级服务使用地址 download.microsoft.com 获取二进制文件,安装、重新映像和运行时升级需要此关系。 在“仅内部”负载均衡器的场景中,必须添加一个额外的外部负载均衡器,并为其配置允许端口 443 出站流量的规则。 或者,可以在成功设置后阻止此端口,但在这种情况下,必须将升级包分发到节点,或者该端口必须在短时间内处于打开状态,然后需要手动升级。
将 Azure 防火墙与 NSG 流日志和流量分析配合使用,以跟踪连接性问题。 ARM 模板具有 NSG 的 Service Fabric 是一个良好的着手示例。
需要其他规则的常见方案
借助 Azure 服务标记可以涵盖所有其他方案。
限制出站流量
对于某些客户,上述默认 NSG 规则不足以满足其网络安全要求。 例如,一个常见要求(默认情况下未提供)是阻止发到 Internet 的出站流量。 为此,客户可以根据下面的参考表应用 NSG 规则,以限制出站流量,同时维护基本的群集功能。 这些规则可以同时应用于经典群集和托管群集。 对于托管群集,请确保它们不会覆盖任何默认规则(前缀为“SFMC-” )。
注意
下表仅用于引用。
| 优先级 | 名称 | 端口 | 协议 | 源 | 目标 | 动作 |
|---|---|---|---|---|---|---|
| 1000 | AllowSFRP | 任意 | 任意 | 任意 | ServiceFabric | 允许 |
| 1001 | 允许存储 | 任意 | 任意 | 任意 | 存储 | 允许 |
| 1002 | 允许IMS | 任意 | 任意 | 任意 | 169.254.169.254/32 | 允许 |
| 1003 | AllowVIP | 任意 | 任意 | 任意 | 168.63.129.16/32 | 允许 |
| 1004 | AllowNTP | 123 | 任意 | 任意 | AzureCloud | 允许 |
| 1005 | 允许CRL | 80 | 任意 | 任意 | Internet | 允许 |
| 2000 | DenyInternet | 任意 | 任意 | 任意 | Internet | 拒绝 |
| 65000 | AllowVnetOutBound | 任意 | 任意 | 虚拟网络 | 虚拟网络 | 允许 |
| 65001 | AllowInternetOutBound | 任意 | 任意 | 任意 | Internet | 允许 |
| 65500 | DenyAllOutBound | 任意 | 任意 | 任意 | 任意 | 拒绝 |
- 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 更新会应用操作系统补丁,这需要访问“下载中心”(服务标记:AzureUpdateDelivery)来下载更新的二进制文件。
| 优先级 | 名称 | 端口 | 协议 | 源 | 目标 | 动作 | 方向 |
|---|---|---|---|---|---|---|---|
| 4015 | Windows 更新 | 443 | TCP | 任意 | AzureUpdateDelivery | 允许 | 出站 |
API Management
Azure API 管理(服务标记:ApiManagement)的集成需要客户端 API 访问权限才能从群集查询终结点信息。
| 优先级 | 名称 | 端口 | 协议 | 源 | 目标 | 动作 | 方向 |
|---|---|---|---|---|---|---|---|
| 3920 | API Management | 19080 | TCP | ApiManagement | 任意 | 允许 | 入站 |
应用程序网络
若要运行 Windows 容器工作负荷,请使用开放网络模式,使服务到服务的通信更方便。
使用反向代理(例如 Traefik 或 Service Fabric 反向代理)公开常用的应用程序端口,例如 80 或 443。
对于托管在无法从 Azure 云存储中拉取基本层的气隙计算机上的 Windows 容器,可通过在 Docker 守护程序中使用 --allow-nondistributable-artifacts 标志来重写外部层行为。
后续步骤
- 在运行 Windows Server 的 VM 或计算机上创建群集:创建适用于 Windows Server 的 Service Fabric 群集
- 在运行 Linux 的 VM 或计算机上创建群集:创建 Linux 群集
- 了解 Service Fabric 支持选项