在本文中,您將瞭解如何使用 Azure CLI 和範本,將 Linux Service Fabric 叢集部署至 Azure 虛擬網路 (VNET)。 完成後,您將在雲端中執行叢集,您可以將應用程式部署到該叢集。 若要使用 PowerShell 建立 Windows 叢集,請參閱 在 Azure 上建立安全的 Windows 叢集。
先決條件
在開始之前:
- 如果您沒有 Azure 訂用帳戶,請建立 免費帳戶
- 安裝 Service Fabric CLI
- 安裝 Azure CLI
- 若要瞭解叢集的重要概念,請閱讀 Azure 叢集概觀
- 規劃並準備 生產叢集部署。
下列程式會建立七節點 Service Fabric 叢集。 若要計算在 Azure 中執行 Service Fabric 叢集所產生的成本,請使用 Azure 定價計算機。
下載並探索模板
下載下列 Resource Manager 範本檔案:
對於 Ubuntu 18.04 LTS:
-
AzureDeploy.json
- vmImageSku 屬性為 “18.04-LTS”
- Microsoft.ServiceFabric/clusters 資源的
- apiVersion 設定為「2019-03-01」
- vmImage 屬性設定為「Ubuntu18_04」
- AzureDeploy.Parameters.json
對於 Ubuntu 20.04 LTS:
-
AzureDeploy.json
- vmImageSku 屬性為 “20.04-LTS”
- Microsoft.ServiceFabric/clusters 資源的
- apiVersion 設定為「2019-03-01」
- vmImage 屬性設定為「Ubuntu20_04」
- AzureDeploy.Parameters.json
這些範本會將七個虛擬機器和三種節點類型的安全叢集部署到虛擬網路中。 其他範例範本可在 GitHub 上找到。 AzureDeploy.json 會部署許多資源,包括下列資源。
Service Fabric 叢集
在 Microsoft.ServiceFabric/clusters 資源中,Linux 叢集會部署具有下列特性:
- 三種節點類型
- 主要節點類型中的五個節點 (可在範本參數中配置),其他節點類型中各有一個節點
- 作業系統:(Ubuntu 18.04 LTS / Ubuntu 20.04)(可在範本參數中設定)
- 憑證已安全(可在範本參數中設定)
- DNS 服務 已啟用
- 青銅的耐久性等級(可在範本參數中設定)
- 銀牌的可靠性等級(可在範本參數中設定)
- 用戶端連線端點:19000 (可在範本參數中設定)
- HTTP 閘道端點:19080 (可在範本參數中設定)
Azure Load Balancer
在 Microsoft.Network/loadBalancers 資源中,會設定負載平衡器,並為下列埠設定探查和規則:
- 用戶端連線端點:19000
- HTTP 閘道端點:19080
- 應用端口:80
- 申請埠:443
虛擬網路和子網路
虛擬網路和子網路的名稱會在範本參數中宣告。 虛擬網路和子網路的位址空間也會在範本參數中宣告,並在 Microsoft.Network/virtualNetworks 資源中設定:
- 虛擬網路位址空間:10.0.0.0/16
- Service Fabric 子網路位址空間:10.0.2.0/24
如果需要任何其他應用程式埠,則需要調整 Microsoft.Network/loadBalancers 資源以允許流量進入。
Service Fabric 延伸模組
在 Microsoft.Compute/virtualMachineScaleSets 資源中,已設定 Service Fabric Linux 延伸模組。 此延伸模組可用來將 Service Fabric 啟動至 Azure 虛擬機器,並設定節點安全性。
以下是 Service Fabric Linux 延伸模組的範本程式碼片段:
"extensions": [
{
"name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
"properties": {
"type": "ServiceFabricLinuxNode",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"protectedSettings": {
"StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
},
"publisher": "Microsoft.Azure.ServiceFabric",
"settings": {
"clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
"nodeTypeRef": "[variables('vmNodeType0Name')]",
"durabilityLevel": "Silver",
"enableParallelJobs": true,
"nicPrefixOverride": "[variables('subnet0Prefix')]",
"certificate": {
"commonNames": [
"[parameters('certificateCommonName')]"
],
"x509StoreName": "[parameters('certificateStoreValue')]"
}
},
"typeHandlerVersion": "2.0"
}
},
設定範本參數
AzureDeploy.Parameters 檔案會宣告許多用來部署叢集和相關聯資源的值。 您可能需要修改部署的一些參數:
| 參數 | 範例值 | 註釋 |
|---|---|---|
| 管理者用戶名 | 虛擬機管理員 | 叢集 VM 的管理員使用者名稱。 |
| 管理員密碼 | 密碼#1234 | 叢集 VM 的管理員密碼。 |
| 叢集名稱 (clusterName) | mysf叢集123 | 叢集的名稱。 |
| 位置 | southcentralus | 叢集的位置。 |
| certificateThumbprint | 如果建立自我簽署憑證或提供憑證檔案,則值應該是空的。 若要使用先前上傳至金鑰保存庫的現有憑證,請填寫憑證 SHA1 指紋值。 例如,“AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00”。 |
|
| certificateUrlValue | 如果建立自我簽署憑證或提供憑證檔案,則值應該是空的。 若要使用先前上傳至金鑰保存庫的現有憑證,請填寫憑證 URL。 例如,“https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346"。 |
|
| sourceVault值 | 如果建立自我簽署憑證或提供憑證檔案,則值應該是空的。 若要使用先前上傳至金鑰保存庫的現有憑證,請填寫來源保存庫值。 例如,「/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT」。 |
部署虛擬網路和叢集
接下來,設定網路拓撲並部署 Service Fabric 叢集。 AzureDeploy.json Resource Manager 範本會建立虛擬網路 (VNET) 和 Service Fabric 的子網路。 範本也會部署已啟用憑證安全性的叢集。 對於生產叢集,請使用憑證授權單位 (CA) 的憑證作為叢集憑證。 自我簽署憑證可用來保護測試叢集。
本文中的範本會部署使用憑證指紋來識別叢集憑證的叢集。 沒有兩個憑證可以具有相同的指紋,這使得憑證管理更加困難。 將已部署的叢集從使用憑證指紋切換為使用憑證一般名稱,可讓憑證管理更簡單。 若要瞭解如何更新叢集以使用憑證通用名稱進行憑證管理,請閱讀將 叢集變更為憑證通用名稱管理。
使用現有憑證建立叢集
下列指令碼會使用 az sf cluster create 命令和範本來部署以現有憑證保護的新叢集。 此命令也會在 Azure 中建立新的金鑰保存庫,並上傳您的憑證。
ResourceGroupName="sflinuxclustergroup"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates\MyCertificate.pem"
# sign in to your Azure account and select your subscription
az login
az account set --subscription <guid>
# Create a new resource group for your deployment and give it a name and a location.
az group create --name $ResourceGroupName --location $Location
# Create the Service Fabric cluster.
az sf cluster create --resource-group $ResourceGroupName --location $Location \
--certificate-password $Password --certificate-file $CertPath \
--vault-name $VaultName --vault-resource-group $ResourceGroupName \
--template-file AzureDeploy.json --parameter-file AzureDeploy.Parameters.json
使用新的自我簽署憑證建立叢集
下列指令碼會使用 az sf cluster create 命令和範本,在 Azure 中部署新的叢集。 此命令也會在 Azure 中建立新的金鑰保存庫、將新的自我簽署憑證新增至金鑰保存庫,並在本機下載憑證檔案。
ResourceGroupName="sflinuxclustergroup"
ClusterName="sflinuxcluster"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates"
az sf cluster create --resource-group $ResourceGroupName --location $Location \
--cluster-name $ClusterName --template-file C:\temp\cluster\AzureDeploy.json \
--parameter-file C:\temp\cluster\AzureDeploy.Parameters.json --certificate-password $Password \
--certificate-output-folder $CertPath --certificate-subject-name $ClusterName.$Location.cloudapp.azure.com \
--vault-name $VaultName --vault-resource-group $ResourceGroupName
連線到安全叢集
使用 Service Fabric CLI 命令 sfctl cluster select 搭配您的金鑰連線到叢集。 請注意,僅對自簽名證書使用 --no-verify 選項。
sfctl cluster select --endpoint https://aztestcluster.southcentralus.cloudapp.azure.com:19080 \
--pem ./aztestcluster201709151446.pem --no-verify
使用命令 sfctl cluster health 檢查您是否已連線,且叢集狀況良好。
sfctl cluster health
清理資源
如果您未立即繼續閱讀下一篇文章,您可能想要 刪除叢集 以避免產生費用。
後續步驟
瞭解如何 擴展叢集。
本文中的範本會部署使用憑證指紋來識別叢集憑證的叢集。 沒有兩個憑證可以具有相同的指紋,這使得憑證管理更加困難。 將已部署的叢集從使用憑證指紋切換為使用憑證一般名稱,可讓憑證管理更簡單。 若要瞭解如何更新叢集以使用憑證通用名稱進行憑證管理,請閱讀將 叢集變更為憑證通用名稱管理。