Service Fabric 受控叢集具有外部面向 IP,可讓外部用戶端存取叢集的資源。 不過,在某些情況下,最好提供這些資源的網際網路存取權,而不需將其直接公開至網際網路。 NAT 閘道會啟用此功能。
如果您的叢集具有需要從網際網路接收輸入流量的資源,但也有需要受到保護的私人資源,則 NAT 閘道可以提供協助。 此外,如果您具有需要在叢集外部建立連線,以存取祕密、儲存體和其他私人資源的應用程式,則 NAT 閘道可以提供協助。
以下是針對受控叢集使用公用 NAT 閘道的一些優點:
- 改善的安全性:Azure NAT 閘道是建置在零信任網路安全性模型之上,且預設為安全。 使用 NAT 閘道,子網路內的私人執行個體就不需要公用 IP 位址來連線到網際網路。 私人資源可以透過來源網路位址轉譯 (SNAT) 至 NAT 閘道的靜態公用 IP 位址或前置詞來連線虛擬網路外的外部來源。 您可以使用公用 IP 前置詞,提供一組連續的 IP 進行輸出連線,並根據這個可預測的 IP 清單來設定目的地防火牆規則。
- 復原:Azure NAT 閘道是一種完全受控的分散式服務。 其不會依賴個別的計算執行個體,例如 VM 或單一實體閘道裝置。 NAT 閘道一律有多個容錯網域並可承受多次失敗,而不會發生服務中斷。 軟體定義的網路讓 NAT 閘道具有高度復原性。
- 簡化的網路架構:NAT 閘道可讓您無需堡壘主機或 VPN 連線,即可存取私人子網路中的執行個體,來簡化網路架構。
- 效能:Azure NAT 閘道效能高且穩定。
下圖描述具有主要和次要節點類型的叢集,其中每個節點類型都有自己的子網路。 次要節點類型會放在 NAT 閘道後方,而且其所有傳出流量都會透過閘道路由傳送。 當流量源自次要節點類型時,公用 IP 位址就是 NAT 閘道的位址。 由於所有傳出要求都是透過 NAT 閘道路由傳送,因此您可以實作額外的 NSG 規則,其會改善安全性,並防止外部服務探索內部服務。
對於 Service Fabric 受控叢集上的 NAT 閘道,下列案例是支援的使用案例:
- 客戶可以在設定受控叢集網路設定一文的自備虛擬網路一節底下,將 NAT 閘道連結至任何節點類型和子網路設定。
- 客戶可以使用設定受控叢集網路設定一文的自備 Azure Load Balancer 一節中所述的專用子網路,將 NAT 閘道連結至次要節點類型。 當您新增自己的負載平衡器和 NAT 閘道時,可以增加對網路流量的控制。
必要條件
針對您的案例,請確定您遵循步驟來正確設定受控叢集的網路。
自備虛擬網路搭配 NAT 閘道
下列步驟描述如何將 NAT 閘道連結至您的虛擬網路子網路。
請遵循 Azure NAT 閘道快速入門中的步驟來建立 NAT 閘道。
提供 Service Fabric 資源提供者權限,以使用角色指派來修改 NAT 閘道的設定。 請遵循設定受控叢集網路設定一文的自備虛擬網路一節中的前兩個步驟,將 NAT 閘道的資訊插入子網路參數中。
現在,您已準備好將 NAT 閘道連結至虛擬網路的子網路。 您可以使用 ARM 範本、Azure CLI、Azure PowerShell 或 Azure 入口網站。
ARM 範本
請修改並部署下列 ARM 範本,以將 NAT 閘道引入子網路的屬性:
{
"apiVersion": "[variables('networkApiVersion')]",
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('vnetName')]",
"location": "[resourcegroup().location]",
"dependsOn": [
"[parameters('natGatewayId'))]"
],
"properties": {
"subnets": [
{
"name": "[parameters('subnetName')]",
"properties": {
"addressPrefix": "[parameters('subnetAddressPrefix')]",
"natGateway": {
"id": "[parameters('natGatewayId'))]"
}
}
}
]
}
}
Azure CLI
請使用您的資訊修改並執行下列 Azure CLI 命令:
az network vnet subnet update --resource-group myResourceGroup --vnet-name mvVNet --name mySubnet --nat-gateway myNATGateway
Azure PowerShell
將虛擬網路放入變數中
$net = @{ Name = `myVNet` ResourceGroupName = 'myResourceGroup' } $vnet = Get-AzVirtualNetwork @net
將 NAT 閘道放入變數中
$nat = @{ Name = 'myNATgateway' ResourceGroupName = 'myResourceGroup' } $natGateway = Get-AzNatGateway @nat
建立子網路設定
$subnet = @{ Name = 'mySubnet' VirtualNetwork = $vnet NatGateway = $natGateway AddressPrefix = '10.0.2.0/24' } Set-AzVirtualNetworkSubnetConfig @subnet
將設定儲存至虛擬網路
$vnet | Set-AzVirtualNetwork
Azure 入口網站
在 Azure 入口網站上,瀏覽至您的虛擬網路資源。
在 [設定] 下,選取 [子網路]。
選取您要與 NAT 閘道建立關聯的子網路。
開啟 [NAT 閘道] 下拉式清單,然後選取您的 NAT 閘道。
按一下 [檔案] 。
自備負載平衡器搭配 Azure NAT 閘道
下列步驟描述如何將 NAT 閘道連結至您的虛擬網路子網路。
注意
僅透過 ARM 範本支援此案例。
請遵循 Azure NAT 閘道快速入門中的步驟來建立 NAT 閘道。
提供 Service Fabric 資源提供者權限,以使用角色指派來修改 NAT 閘道的設定。 請遵循設定受控叢集網路設定一文的自備虛擬網路一節中的前兩個步驟,將 NAT 閘道的資訊插入子網路參數中。
請將下列屬性新增至您的部署,以將 NAT 閘道連結至您的專用子網路:
{
"apiVersion": "2023-03-01-preview",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[parameters('clusterLocation')]",
"properties": {
...
"isPrimary": false,
"natGatewayId": "[variables('natID')]",
"frontendConfigurations": [...],
...
}
下一步
- 檢閱本文所述的 Service Fabric 受控叢集網路案例。
- 檢閱 Service Fabric 受控叢集設定選項。