共用方式為


設定 Service Fabric 受控叢集的網路設定

在建立 Service Fabric 受控叢集時,會使用預設的網路設定。 此設定包含使用公用 IP 的 Azure Load Balancer、配置了一個子網路的 VNet,以及設定了基本叢集功能的 NSG。 此外,也會套用選擇性的 NSG 規則 (例如預設允許所有輸出流量),目的則是讓客戶能更容易地進行設定。 本文件會逐步解說如何修改下列網路設定選項及其他項目:

管理 NSG 規則

NSG 規則指導

在為受控叢集建立新的 NSG 規則時,請留意以下考量事項。

  • Service Fabric 受控叢集會保留 0 到 999 的 NSG 規則優先順序範圍,以供基本功能使用。 您無法建立優先順序值小於 1000 的自訂 NSG 規則。
  • Service Fabric 受控叢集會保留 3001 到 4000 的優先順序範圍,以供建立選擇性的 NSG 規則。 系統會自動新增這些規則,以便您可以快速且輕鬆地進行設定。 若要覆寫這些規則,您可以在 1000 到 3000 的優先順序範圍內新增自訂 NSG 規則。
  • 自訂 NSG 規則的優先順序應該在 1000 到 3000 的範圍內。

套用 NSG 規則

Service Fabric 受控叢集可讓您直接在部署範本的叢集資源內指派 NSG 規則。

請使用您 Microsoft.ServiceFabric/managedclusters 資源 (2021-05-01 版或更新版本) 的 networkSecurityRules 屬性來指派 NSG 規則。 例如:

{
  "apiVersion": "2021-05-01",
  "type": "Microsoft.ServiceFabric/managedclusters",
  "properties": {
    "networkSecurityRules": [
      {
        "name": "AllowCustomers",
        "protocol": "*",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "Internet",
        "destinationAddressPrefix": "*",
        "destinationPortRange": "33000-33499",
        "access": "Allow",
        "priority": 2001,
        "direction": "Inbound"
      },
      {
        "name": "AllowARM",
        "protocol": "*",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "AzureResourceManager",
        "destinationAddressPrefix": "*",
        "destinationPortRange": "33500-33699",
        "access": "Allow",
        "priority": 2002,
        "direction": "Inbound"
      },
      {
        "name": "DenyCustomers",
        "protocol": "*",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "Internet",
        "destinationAddressPrefix": "*",
        "destinationPortRange": "33700-33799",
        "access": "Deny",
        "priority": 2003,
        "direction": "Outbound"
      },
      {
        "name": "DenyRDP",
        "protocol": "*",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "VirtualNetwork",
        "destinationPortRange": "3389",
        "access": "Deny",
        "priority": 2004,
        "direction": "Inbound",
        "description": "Override for optional SFMC_AllowRdpPort rule. This is required in tests to avoid Sev2 incident for security policy violation."
      }
    ],
    "fabricSettings": [
      "..."
    ]
  }
}

ClientConnection 和 HttpGatewayConnection 的預設規則和選擇性規則

NSG 規則:SFMC_AllowServiceFabricGatewayToSFRP

為了讓 Service Fabric 資源提供者能夠存取叢集的 clientConnectionPort 和 httpGatewayConnectionPort,所以會新增預設的 NSG 規則。 此規則可透過服務標籤「ServiceFabric」來提供連接埠的存取權。

注意

這是一定會新增的規則,且無法加以覆寫。

{
    "name": "SFMC_AllowServiceFabricGatewayToSFRP",
    "type": "Microsoft.Network/networkSecurityGroups/securityRules",
    "properties": {
        "description": "This is required rule to allow SFRP to connect to the cluster. This rule can't be overridden.",
        "protocol": "TCP",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "ServiceFabric",
        "destinationAddressPrefix": "VirtualNetwork",
        "access": "Allow",
        "priority": 500,
        "direction": "Inbound",
        "sourcePortRanges": [],
        "destinationPortRanges": [
            "19000",
            "19080"
        ]
    }
}

NSG 規則:SFMC_AllowServiceFabricGatewayPorts

這個選擇性規則可讓客戶存取 SFX、使用 PowerShell 連線到叢集,以及藉由針對 clientConnectionPort 和 httpGatewayPort 開啟 LB 連接埠,而能夠從網際網路使用 Service Fabric 叢集 API 端點。

注意

如果某個自訂規則針對相同的連接埠具有相同的存取權、方向和通訊協定值,則不會新增此規則。 您可以使用自訂 NSG 規則來覆寫此規則。

{
    "name": "SFMC_AllowServiceFabricGatewayPorts",
    "type": "Microsoft.Network/networkSecurityGroups/securityRules",
    "properties": {
        "description": "Optional rule to open SF cluster gateway ports. To override add a custom NSG rule for gateway ports in priority range 1000-3000.",
        "protocol": "tcp",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "VirtualNetwork",
        "access": "Allow",
        "priority": 3001,
        "direction": "Inbound",
        "sourcePortRanges": [],
        "destinationPortRanges": [
            "19000",
            "19080"
        ]
    }
}

啟用從網際網路存取 RDP 連接埠的功能

Service Fabric 受控叢集預設不會啟用從網際網路對 RDP 連接埠進行輸入存取的功能。 您可以藉由在 Service Fabric 受控叢集資源上設定下列屬性,開啟從網際網路向 RDP 連接埠的輸入存取。

"allowRDPAccess": true

當 allowRDPAccess 屬性設定為 true 時,系統會將下列 NSG 規則新增至您的叢集部署。

{
    "name": "SFMC_AllowRdpPort",
    "type": "Microsoft.Network/networkSecurityGroups/securityRules",
    "properties": {
        "description": "Optional rule to open RDP ports.",
        "protocol": "tcp",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "VirtualNetwork",
        "access": "Allow",
        "priority": 3002,
        "direction": "Inbound",
        "sourcePortRanges": [],
        "destinationPortRange": "3389"
    }
}

Service Fabric 受控叢集會自動為節點類型中的每個執行個體建立輸入 NAT 規則。 若要尋找連接埠對應以連線到特定執行個體 (叢集節點),請遵循下列步驟:

使用 Azure 入口網站,找到受控叢集針對遠端桌面通訊協定 (RDP) 所建立的輸入 NAT 規則。

  1. 瀏覽至訂用帳戶內以下列格式命名的受控叢集資源群組:SFC_{cluster-id}

  2. 選取具有下列格式的叢集負載平衡器:LB-{cluster-name}

  3. 在負載平衡器的頁面上,選取 [輸入 NAT 規則]。 檢閱輸入 NAT 規則,以確認節點的輸入前端連接埠與目標連接埠的對應。

    下列螢幕擷取畫面會顯示三種不同節點類型的輸入 NAT 規則:

    Inbound Nat Rules

    根據預設,Windows 叢集的前端連接埠是在 50000 (含) 以上的範圍,目標連接埠則是連接埠 3389,並對應至目標節點上的 RDP 服務。

    注意

    如果您使用 BYOLB 功能,而且您想要使用 RDP,則必須個別設定 NAT 集區來進行這項操作。 這不會自動為這些節點類型建立任何 NAT 規則。

  4. 遠端連線到特定節點 (擴展集執行個體)。 您可以使用當您建立叢集時所設定的使用者名稱和密碼,或您已設定的任何其他認證。

下列螢幕擷取畫面會顯示如何使用「遠端桌面連線」來連線到 Windows 叢集中的應用程式 (執行個體 0) 節點:

Remote Desktop Connection

修改預設的負載平衡器設定

負載平衡器連接埠

Service Fabric 受控叢集會針對 [ManagedCluster] 屬性底下的 [loadBalancingRules] 區段底下所設定的所有負載平衡器 (LB) 連接埠,建立落於預設優先順序範圍內的 NSG 規則。 此規則會針對來自網際網路的輸入流量開啟 LB 連接埠。

注意

這項規則會新增至選擇性的優先順序範圍,而且可以藉由新增自訂 NSG 規則來加以覆寫。

{
    "name": "SFMC_AllowLoadBalancedPorts",
    "type": "Microsoft.Network/networkSecurityGroups/securityRules",
    "properties": {
        "description": "Optional rule to open LB ports",
        "protocol": "*",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "VirtualNetwork",
        "access": "Allow",
        "priority": 3003,
        "direction": "Inbound",
        "sourcePortRanges": [],
        "destinationPortRanges": [
        "80", "8080", "4343"
        ]
    }
}

負載平衡器探查

Service Fabric 受控叢集會自動為網狀架構的網路閘道連接埠,以及受控叢集屬性的 loadBalancingRules 區段底下所設定的所有連接埠,建立負載平衡器探查。

{
  "value": [
    {
        "name": "FabricTcpGateway",
        "properties": {
            "provisioningState": "Succeeded",
            "protocol": "Tcp",
            "port": 19000,
            "intervalInSeconds": 5,
            "numberOfProbes": 2,
            "loadBalancingRules": [
                {
                    "id": "<>"
                }
            ]
        },
        "type": "Microsoft.Network/loadBalancers/probes"
    },
    {
        "name": "FabricHttpGateway",
        "properties": {
            "provisioningState": "Succeeded",
            "protocol": "Tcp",
            "port": 19080,
            "intervalInSeconds": 5,
            "numberOfProbes": 2,
            "loadBalancingRules": [
                {
                    "id": "<>"
                }
            ]
        },
        "type": "Microsoft.Network/loadBalancers/probes"
    },
    {
        "name": "probe1_tcp_8080",
        "properties": {
            "provisioningState": "Succeeded",
            "protocol": "Tcp",
            "port": 8080,
            "intervalInSeconds": 5,
            "numberOfProbes": 2,
            "loadBalancingRules": [
            {
                "id": "<>"
            }
        ]
      },
      "type": "Microsoft.Network/loadBalancers/probes"
    }
  ]
}

啟用公用 IP

注意

目前僅支援公用 IPv4。

Service Fabric 受控叢集節點不需要使用自己的公用 IP 位址來進行通訊。 不過,某些案例可能需要節點具有自己的公用 IP 位址,才能與網際網路和公開 Azure 服務通訊。 例如:

  • 遊戲,其中主控台需要直接連線至雲端虛擬機器,進而執行遊戲實體處理。
  • 虛擬機器,其需要對分散式資料庫中另一個跨區域的虛擬機器進行外部連線。

如需 Azure 中的輸出連線詳細資訊,請參閱了解輸出連線

公用 IP 只能在次要節點類型上啟用,因為主要節點類型是保留給 Service Fabric 系統服務。 請遵循本文的自備負載平衡器一節中的步驟,為受控叢集建立次要節點類型。

Azure 會動態指派可用的 IP 位址。

注意

僅支援透過 ARM 範本啟用公用 IP。

下列步驟描述如何在您的節點上啟用公用 IP。

  1. 下載您的 ARM 範本

  2. 針對範本中的每個節點類型,將 enableNodePublicIP 新增至 ARM 範本:

    {
        "name": "<secondary_node_type_name>", 
        "apiVersion": "2023-02-01-preview", 
        "properties": { 
            "isPrimary" : false, 
            "vmImageResourceId": "/subscriptions/<your_subscription_id>/resourceGroups/<your_resource_group>/providers/Microsoft.Compute/images/<your_custom_image>", 
            "vmSize": "Standard_D2", 
            "vmInstanceCount": 5, 
            "dataDiskSizeGB": 100, 
            "enableNodePublicIP": true 
        }
    } 
    
  3. 部署您的 ARM 範本

  4. 請執行下列 PowerShell 命令,驗證您在節點上是否具有公用 IP:

    az vmss list-instance-public-ips -g MC_MyResourceGroup2_MyManagedCluster_eastus -n YourVirtualMachineScaleSetName
    

    此命令會以 JSON 格式輸出。

    [
      {
        "etag": "etag_0",
        "id": "<id_0/name>",
        "idleTimeoutInMinutes": 15,
        "ipAddress": "<ip_address_0>",
        "ipConfiguration": {
          "id": "<configuration_id_0>",
          "resourceGroup": "<your_resource_group>"
        },
        "ipTags": [],
        "name": "<name>",
        "provisioningState": "Succeeded",
        "publicIPAddressVersion": "IPv4",
        "publicIPAllocationMethod": "Static",
        "resourceGroup": "<your_resource_group>",
        "resourceGuid": "resource_guid_0",
        "sku": {
          "name": "Standard"
        }
      },
      {
        "etag": "etag_1",
        "id": "/<id_1/name>",
        "idleTimeoutInMinutes": 15,
        "ipAddress": "<ip_address_1>",
        "ipConfiguration": {
          "id": "<configuration_id_1>",
          "resourceGroup": "<your_resource_group>"
        },
        "ipTags": [],
        "name": "<name>",
        "provisioningState": "Succeeded",
        "publicIPAddressVersion": "IPv4",
        "publicIPAllocationMethod": "Static",
        "resourceGroup": "<your_resource_group>",
        "resourceGuid": "resource_guid_1",
        "sku": {
          "name": "Standard"
        }
      },
      {
        "etag": "etag_2",
        "id": "<id_2/name>",
        "idleTimeoutInMinutes": 15,
        "ipAddress": "<ip_address_2>",
        "ipConfiguration": {
          "id": "<configuration_id_2>",
          "resourceGroup": "<your_resource_group>"
        },
        "ipTags": [],
        "name": "<name>",
        "provisioningState": "Succeeded",
        "publicIPAddressVersion": "IPv4",
        "publicIPAllocationMethod": "Static",
        "resourceGroup": "<your_resource_group>",
        "resourceGuid": "resource_guid_2",
        "sku": {
          "name": "Standard"
        }
      }
    ]
    

啟用 IPv6

受控叢集預設不會啟用 IPv6。 這項功能將會啟用從 Load Balancer 前端到後端資源的完整雙重堆疊 IPv4/IPv6 功能。 您對受控叢集負載平衡器設定或 NSG 規則所做的任何變更,都會影響 IPv4 和 IPv6 路由。

注意

此設定無法在入口網站中使用,也無法在叢集建立完成後加以變更。

  • Service Fabric 受控叢集資源 apiVersion 應為 2022-01-01 或後續版本。
  1. 在 Service Fabric 受控叢集資源上設定下列屬性。

        "resources": [
             {
             "apiVersion": "[variables('sfApiVersion')]",
             "type": "Microsoft.ServiceFabric/managedclusters",
             ...
             "properties": {
                 "enableIpv6": true
                 },
             }
        ]
    
  2. 部署已啟用 IPv6 的受控叢集。 視需要自訂範例範本或建置自己的範本。 在下列範例中,我們會在 westus 建立名為 MyResourceGroup 的資源群組,並部署已啟用此功能的叢集。

     New-AzResourceGroup -Name MyResourceGroup -Location westus
     New-AzResourceGroupDeployment -Name deployment -ResourceGroupName MyResourceGroup -TemplateFile AzureDeploy.json
    

    部署之後,叢集的虛擬網路和資源將會是雙重堆疊。 因此,叢集的前端負載平衡器將會建立唯一的 dns 位址 (例如 mycluster-ipv6.southcentralus.cloudapp.azure.com),而此位址會與 Azure Load Balancer 上的公用 IPv6 位址以及 VM 上的私人 IPv6 位址相關聯。

自備虛擬網路

這項功能可讓客戶藉由指定受控叢集會將其資源部署到其中的專用子網路,來使用現有的虛擬網路。 如果您已經有設定好的 VNet 和子網路,以及您想要使用的相關安全性原則和流量路由,這種做法會很有用。 在部署至現有虛擬網路後,即可輕鬆地使用或納入其他網路功能,例如 Azure ExpressRoute、Azure VPN 閘道、網路安全性群組和虛擬網路對等互連。 此外,您也可以視需要自備 Azure Load Balancer

注意

在使用 BYOVNET 時,受控叢集資源會部署在一個子網路中。

注意

一旦建立了叢集,就無法變更此設定,而且受控叢集會將 NSG 指派給所提供的子網路。 請不要覆寫 NSG 指派,否則流量可能會中斷。

若要自備虛擬網路:

  1. 從訂用帳戶取得 Service Fabric 資源提供者應用程式的服務 Id

    Login-AzAccount
    Select-AzSubscription -SubscriptionId <SubId>
    Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
    

    注意

    請確定您位於正確的訂用帳戶中,如果訂用帳戶位於不同的租用戶,主體識別碼將會變更。

    ServicePrincipalNames : {74cb6831-0dbb-4be1-8206-fd4df301cdc2}
    ApplicationId         : 74cb6831-0dbb-4be1-8206-fd4df301cdc2
    ObjectType            : ServicePrincipal
    DisplayName           : Azure Service Fabric Resource Provider
    Id                    : 00000000-0000-0000-0000-000000000000
    

    請記下先前輸出的 Id 來作為 principalId,以供稍後的步驟使用

    角色定義名稱 角色定義識別碼
    網路參與者 4d97b98b-1d4f-4787-a291-c67834d212e7

    請記下 Role definition nameRole definition ID 屬性值,以供稍後的步驟使用

  2. 將角色指派新增至 Service Fabric 資源提供者應用程式。 新增角色指派屬於一次性動作。 您可以藉由執行下列 PowerShell 命令或設定 Azure Resource Manager (ARM) 範本來新增角色,詳情如下所述。

    在下列步驟中,我們會從 ExistingRG 資源群組中名為 ExistingRG-vnet 的現有虛擬網路來開始。 子網路名為 default。

    從現有的 VNet 取得所需資訊。

    Login-AzAccount
    Select-AzSubscription -SubscriptionId <SubId>
    Get-AzVirtualNetwork -Name ExistingRG-vnet -ResourceGroupName ExistingRG
    

    請記下下列子網路名稱以及回應中的 Subnets 區段所傳回的 Id 屬性值,以供稍後的步驟使用。

    Subnets:[
    {
    ...
    "Id": "/subscriptions/<subscriptionId>/resourceGroups/Existing-RG/providers/Microsoft.Network/virtualNetworks/ExistingRG-vnet/subnets/default"
    }]
    

    使用主體識別碼、步驟 2 中的角色定義名稱以及上面取得的指派範圍 Id,來執行下列 PowerShell 命令:

    New-AzRoleAssignment -PrincipalId 00000000-0000-0000-0000-000000000000 -RoleDefinitionName "Network Contributor" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>"
    

    或者,您也可以使用以 principalIdroleDefinitionIdvnetNamesubnetName 的適當值進行設定的 Azure Resource Manager (ARM) 範本來新增角色指派:

       "type": "Microsoft.Authorization/roleAssignments",
       "apiVersion": "2020-04-01-preview",
       "name": "[parameters('VNetRoleAssignmentID')]",
       "scope": "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'), '/subnets/', parameters('subnetName'))]",
       "dependsOn": [
         "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]"
       ],
       "properties": {
         "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7')]",
         "principalId": "00000000-0000-0000-0000-000000000000"
       }
    

    注意

    VNetRoleAssignmentID 必須是 GUID。 如果您再次部署範本時有納入這個角色指派,請確定 GUID 與原本使用的 GUID 相同。 建議您以隔離方式執行此作業,或在部署後將此資源從叢集範本中移除,因為其只需要建立一次。

    以下是您可以用於此步驟的完整範例:建立 VNet 子網路並執行角色指派的 Azure Resource Manager (ARM) 範本

  3. 在設定角色之後,為叢集部署設定 subnetId 屬性,如下所示:

  • Service Fabric 受控叢集資源 apiVersion 應為 2022-01-01 或後續版本。

      "resources": [
          {
              "apiVersion": "[variables('sfApiVersion')]",
              "type": "Microsoft.ServiceFabric/managedclusters",
              ...
              },
              "properties": {
                  "subnetId": "subnetId",
              ...
              }
      ]
    

    請參閱自備 VNet 叢集範例範本或自訂您自己的範本。

  1. 部署所設定的受控叢集 Azure Resource Manager (ARM) 範本。

    在下列範例中,我們會在 westus 建立名為 MyResourceGroup 的資源群組,並部署已啟用此功能的叢集。

     New-AzResourceGroup -Name MyResourceGroup -Location westus
     New-AzResourceGroupDeployment -Name deployment -ResourceGroupName MyResourceGroup -TemplateFile AzureDeploy.json
    

    當您自備 VNet 子網路時,公用端點仍會由資源提供者建立及管理,但會位於所設定的子網路中。 這項功能不允許您在 Azure Load Balancer 上指定公用 IP/重複使用靜態 IP。 如果您需要這些負載平衡器案例或未原生支援的其他負載平衡器案例,則可以搭配使用這項功能自備 Azure Load Balancer,也可以單獨使用。

自備 Azure Load Balancer

受控叢集會為主要和次要節點類型,建立具有靜態公用 IP 的 Azure 公用 Standard Load Balancer 和完整網域名稱。 自備負載平衡器可讓您將現有的 Azure Load Balancer 用於次要節點類型的輸入和輸出流量。 當您自備 Azure Load Balancer 時,您可以:

  • 針對私人或公用流量使用預先設定的 Load Balancer 靜態 IP 位址
  • 將 Load Balancer 對應至特定節點類型
  • 設定每一節點類型的網路安全性群組規則,因為每個節點類型都會部署到自己的子網路中
  • 維護您可能已有的現有原則和控制
  • 設定僅供內部使用的負載平衡器,並將預設負載平衡器用於外部流量

注意

使用 BYOVNET 時,受控叢集資源會部署到一個具有一個 NSG 的子網路 (不論是否有其他已設定的負載平衡器)。

注意

在部署節點類型之後,就無法從預設負載平衡器切換至自訂負載平衡器,但可以在部署後修改自訂負載平衡器設定 (如果已啟用的話)。

功能需求

  • 支援基本和標準 SKU Azure Load Balancer 類型
  • 必須已在 Azure Load Balancer 上設定後端和 NAT 集區
  • 必須使用所提供的公用負載平衡器或預設的公用負載平衡器來啟用輸出連線能力

以下是客戶可應用於其中的一些範例案例:

在此範例中,客戶想要透過設定了現有靜態 IP 位址的現有 Azure Load Balancer,將流量路由傳送至兩個節點類型。

Bring your own Load Balancer example 1

在此範例中,客戶想要透過現有 Azure Load Balancer 來路由傳送流量,以協助他們獨立管理流向應用程式 (位於不同節點類型上) 的流量。 在和這個範例一樣地進行設定時,每個節點類型都會位於其自己的受控 NSG 背後。

Bring your own Load Balancer example 2

在此範例中,客戶想要透過現有的內部 Azure Load Balancer 來路由傳送流量。 這可協助他們獨立管理流向應用程式 (位於不同節點類型上) 的流量。 在和這個範例一樣地進行設定時,每個節點類型都會位於其自己的受控 NSG 背後,並且會對外部流量使用預設負載平衡器。

Bring your own Load Balancer example 3

若要以您自己的負載平衡器進行設定:

  1. 從訂用帳戶取得 Service Fabric 資源提供者應用程式的服務 Id

    Login-AzAccount
    Select-AzSubscription -SubscriptionId <SubId>
    Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
    

    注意

    請確定您位於正確的訂用帳戶中,如果訂用帳戶位於不同的租用戶,主體識別碼將會變更。

    ServicePrincipalNames : {74cb6831-0dbb-4be1-8206-fd4df301cdc2}
    ApplicationId         : 74cb6831-0dbb-4be1-8206-fd4df301cdc2
    ObjectType            : ServicePrincipal
    DisplayName           : Azure Service Fabric Resource Provider
    Id                    : 00000000-0000-0000-0000-000000000000
    

    請記下先前輸出的 Id 來作為 principalId,以供稍後的步驟使用

    角色定義名稱 角色定義識別碼
    網路參與者 4d97b98b-1d4f-4787-a291-c67834d212e7

    請記下 Role definition nameRole definition ID 屬性值,以供稍後的步驟使用

  2. 將角色指派新增至 Service Fabric 資源提供者應用程式。 新增角色指派屬於一次性動作。 您可以藉由執行下列 PowerShell 命令或設定 Azure Resource Manager (ARM) 範本來新增角色,詳情如下所述。

    在下列步驟中,我們會從 Existing-RG 資源群組中,名為 Existing-LoadBalancer1 的現有負載平衡器來開始進行。

    從現有的 Azure Load Balancer 取得所需的 Id 屬性資訊。

    Login-AzAccount
    Select-AzSubscription -SubscriptionId <SubId>
    Get-AzLoadBalancer -Name "Existing-LoadBalancer1" -ResourceGroupName "Existing-RG"
    

    請記下下列 Id,以供下一個步驟使用:

    {
    ...
    "Id": "/subscriptions/<subscriptionId>/resourceGroups/Existing-RG/providers/Microsoft.Network/loadBalancers/Existing-LoadBalancer1"
    }
    

    使用主體識別碼、步驟 2 中的角色定義名稱以及剛才取得的指派範圍 Id,來執行下列 PowerShell 命令:

    New-AzRoleAssignment -PrincipalId 00000000-0000-0000-0000-000000000000 -RoleDefinitionName "Network Contributor" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/loadBalancers/<LoadBalancerName>"
    

    或者,您也可以使用以 principalIdroleDefinitionId 的適當值進行設定的 Azure Resource Manager (ARM) 範本來新增角色指派:

       "type": "Microsoft.Authorization/roleAssignments",
       "apiVersion": "2020-04-01-preview",
       "name": "[parameters('loadBalancerRoleAssignmentID')]",
       "scope": "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]",
       "dependsOn": [
         "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]"
       ],
       "properties": {
         "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7')]",
         "principalId": "00000000-0000-0000-0000-000000000000"
       }
    

    注意

    loadBalancerRoleAssignmentID 必須是 GUID。 如果您再次部署範本時有納入這個角色指派,請確定 GUID 與原本使用的 GUID 相同。 建議您以隔離方式執行此作業,或在部署後將此資源從叢集範本中移除,因為其只需要建立一次。

    請參閱此範例範本來建立公用負載平衡器並指派角色

  3. 為節點類型設定所需的輸出連線能力。 您必須設定用來提供輸出連線能力的公用負載平衡器,或使用預設的公用負載平衡器。

    設定 outboundRules 以設定用來提供輸出連線能力的公用負載平衡器。請參閱建立負載平衡器並指派角色範例 Azure Resource Manager (ARM) 範本

    OR

    若要將節點類型設定為使用預設負載平衡器,請在您的範本中進行下列設定:

    • Service Fabric 受控叢集資源 apiVersion 應為 2022-01-01 或後續版本。
     "resources": [
       {
       "apiVersion": "[variables('sfApiVersion')]",
       "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
       "properties": {
           "isPrimary": false,
           "useDefaultPublicLoadBalancer": true
           }
       }
     ]
    
  4. (選擇性) 在現有的 Azure Load Balancer 上設定輸入應用程式連接埠和相關探查。 如需範例,請參閱自備負載平衡器範例 Azure Resource Manager (ARM) 範本

  5. (選擇性) 設定套用至節點類型的受控叢集 NSG 規則,以在 Azure Load Balancer 上允許任何已設定的所需流量,否則系統會封鎖流量。 如需輸入 NSG 規則設定的範例,請參閱自備負載平衡器範例 Azure Resource Manager (ARM) 範本。 在範本中尋找 networkSecurityRules 屬性。

  6. 部署已設定的受控叢集 ARM 範本。針對此步驟,我們會使用自備負載平衡器範例 Azure Resource Manager (ARM) 範本

    下列命令會在 westus 中建立名為 MyResourceGroup 的資源群組,並使用現有負載平衡器來部署叢集。

     New-AzResourceGroup -Name MyResourceGroup -Location westus
     New-AzResourceGroupDeployment -Name deployment -ResourceGroupName MyResourceGroup -TemplateFile AzureDeploy.json
    

    部署完成後,會將次要節點類型設定為對輸入和輸出流量使用指定的負載平衡器。 Service Fabric 用戶端連線和網路閘道端點仍會指向受控叢集主要節點類型靜態 IP 位址的公用 DNS。

啟用加速網路

加速網路功能可針對屬於節點類型基礎資源的虛擬機器擴展集 VM 啟用單一根目錄 I/O 虛擬化 (SR-IOV) 功能。 這個高效能路徑會略過資料路徑中的主機,進而減少延遲、抖動和 CPU 使用率,供最嚴苛的網路工作負載使用。 您可以在支援的 VM SKU 上,使用加速網路佈建 Service Fabric 受控叢集節點類型。 如需其他考量,請參考這些限制和條件約束

  • 請注意,大多數一般用途和具有 2 個以上 vCPU 的計算最佳化執行個體大小,皆支援加速網路。 在支援超執行緒的執行個體中,加速網路可在具有 4 個以上 vCPU 的 VM 執行個體上進行支援作業。

藉由在 Resource Manager 範本中宣告 enableAcceleratedNetworking 屬性來啟用加速網路,如下所示:

  • Service Fabric 受控叢集資源 apiVersion 應為 2022-01-01 或後續版本。
   {
   "apiVersion": "[variables('sfApiVersion')]",
   "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
   ...
   "properties": {
       ...
       "enableAcceleratedNetworking": true,
       ...
   }

若要在現有的 Service Fabric 叢集上啟用加速網路,您必須先透過新增節點類型來擴增 Service Fabric 叢集,然後再執行下列步驟:

  1. 佈建已啟用加速網路的節點類型
  2. 將您的服務及其狀態移轉至已佈建並啟用加速網路的節點類型

要將基礎結構相應放大,必須在現有的叢集上啟用加速網路,因為要就地啟用加速網路,必須將可用性設定組中的所有虛擬機器全部停止和解除配置,才能在任何現有的 NIC 上啟用加速網路,因此會導致停機。

設定輔助子網路

輔助子網路可讓您另外建立沒有節點類型的受控子網路來支援各種案例,例如 Private Link 服務堡壘主機

在 Resource Manager 範本中宣告 auxiliarySubnets 屬性和所需參數以設定輔助子網路,如下所示:

  • Service Fabric 受控叢集資源 apiVersion 應為 2022-01-01 或後續版本。
    "resources": [
        {
            "apiVersion": "[variables('sfApiVersion')]",
            "type": "Microsoft.ServiceFabric/managedclusters",
              "properties": {
                "auxiliarySubnets": [
                  {
                  "name" : "mysubnet",
                  "enableIpv6" : "true"
                  }
                ]
              }
        }
    ]              

請參閱可用參數的完整清單

下一步

Service Fabric 受控叢集設定選項Service Fabric 受控叢集概觀