將 Linux Service Fabric 叢集部署到 Azure 虛擬網路
在此文章中,您學到如何使用 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/叢集資源的
- apiVersion 會設定為 "2019-03-01"
- vmImage 屬性會設為 "Ubuntu18_04"
- AzureDeploy.Parameters.json
針對 Ubuntu 20.04 LTS:
- AzureDeploy.json
- vmImageSku 屬性設定為 "20.04-LTS"
- Microsoft.ServiceFabric/叢集資源的
- 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 服務
- Bronze 的耐久性層級 (可在範本參數中設定)
- Silver 的可靠性層級 (可在範本參數中設定)
- 用戶端連線端點: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 檔案會宣告多個用來部署叢集和相關聯資源的值。 您可能需要為自己的部署修改某些參數:
參數 | 範例值 | 備註 |
---|---|---|
adminUserName | vmadmin | 叢集 VM 的系統管理員使用者名稱。 |
adminPassword | Password#1234 | 叢集 VM 的系統管理員密碼。 |
clusterName | mysfcluster123 | 叢集的名稱。 |
location | southcentralus | 叢集的位置。 |
certificateThumbprint | 如果建立自我簽署憑證或提供憑證檔案,則值應該空白。 若要使用先前上傳至金鑰保存庫的現有憑證,請填入憑證 SHA1 指紋值。 例如 "6190390162C988701DB5676EB81083EA608DCCF3"。 |
|
certificateUrlValue | 如果建立自我簽署憑證或提供憑證檔案,則值應該空白。 若要使用先前上傳至金鑰保存庫的現有憑證,請填入憑證 URL。 例如,"https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346"。 |
|
sourceVaultValue | 如果建立自我簽署憑證或提供憑證檔案,則值應該空白。 若要使用先前上傳至金鑰保存庫的現有憑證,請填入來源保存庫值。 例如 "/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
清除資源
如果您現在不打算繼續閱讀下一篇文章,您可能要刪除該叢集以避免產生費用。
下一步
了解如何調整叢集規模。
本文中的範本會部署使用憑證指紋來識別叢集憑證的叢集。 憑證的指紋皆不相同,因而使憑證管理更為困難。 將使用憑證指紋的已部署叢集切換為使用憑證通用名稱,有助於大幅簡化憑證管理作業。 若要了解如何更新叢集以使用憑證通用名稱進行憑證管理,請參閱將叢集變更為使用憑證通用名稱進行管理。