快速入门:使用 ARM 模板创建 Service Fabric 群集

Azure Service Fabric 是一款分布式系统平台,可方便用户轻松打包、部署和管理可缩放的可靠微服务和容器。 Service Fabric 群集是一组联网的虚拟机,可在其中部署和管理微服务。 本文介绍如何使用 Azure 资源管理器模板(ARM 模板)在 Azure 中部署 Service Fabric 测试群集。

Azure 资源管理器模板是定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 模板使用声明性语法。 你可以在不编写用于创建部署的编程命令序列的情况下,描述预期部署。

此五节点 Windows 群集由一个自签名证书提供保护,因此仅适用于教学(不能用于生产工作负载)。 我们将使用 Azure PowerShell 来部署模板。 除了 Azure PowerShell,还可以使用 Azure 门户、Azure CLI 和 REST API。 若要了解其他部署方法,请参阅部署模板

如果你的环境满足先决条件,并且你熟悉如何使用 ARM 模板,请选择“部署到 Azure”按钮。 Azure 门户中会打开模板。

部署到 Azure

先决条件

如果没有 Azure 订阅,请在开始前创建一个试用版订阅帐户。

安装 Service Fabric SDK 和 PowerShell 模块

若要完成本快速入门,需执行以下操作:

下载示例模板和证书帮助程序脚本

克隆或下载 Azure 资源管理器快速入门模板存储库。 或者,在本地从 service-fabric-secure-cluster-5-node-1-nodetype 文件夹复制要使用的以下文件:

登录 Azure

登录到 Azure,指定要用于创建 Service Fabric 群集的订阅。

# Sign in to your Azure account
Connect-AzAccount -Environment AzureChinaCloud -SubscriptionId "<subscription ID>"

创建一个存储在 Key Vault 中的自签名证书

Service Fabric 使用 X.509 证书来保护群集并提供应用程序安全功能,它使用 Key Vault 来管理那些证书。 若要成功创建群集,需要使用群集证书来实现节点到节点通信。 为了创建此快速入门测试群集,我们将创建一个用于群集身份验证的自签名证书。 生产工作负载需要多个使用正确配置的 Windows Server 证书服务创建的证书,或由已批准的证书颁发机构 (CA) 提供的证书。

# Designate unique (within cloudapp.chinacloudapi.cn) names for your resources
$resourceGroupName = "SFQuickstartRG"
$keyVaultName = "SFQuickstartKV"

# Create a new resource group for your Key Vault and Service Fabric cluster
New-AzResourceGroup -Name $resourceGroupName -Location chinaeast

# Create a Key Vault enabled for deployment
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $resourceGroupName -Location chinaeast -EnabledForDeployment

# Generate a certificate and upload it to Key Vault
.\scripts\New-ServiceFabricClusterCertificate.ps1

此脚本会提示你输入以下内容(请务必修改下面的示例值中的 CertDNSName 和 KeyVaultName):

  • 密码: Password!1
  • CertDNSName:sfquickstart.chinaeast.cloudapp.chinacloudapi.cn
  • KeyVaultName: SFQuickstartKV
  • KeyVaultSecretName: clustercert

完成后,该脚本会提供模板部署所需的参数值。 请确保将它们存储在以下变量中,因为部署群集模板需要它们:

$sourceVaultId = "<Source Vault Resource Id>"
$certUrlValue = "<Certificate URL>"
$certThumbprint = "<Certificate Thumbprint>"

查看模板

本快速入门中使用的模板来自 Azure 快速启动模板。 本文的模板太长,无法在此处显示。 若要查看模板,请参阅 azuredeploy.json 文件。

该模板中已定义了多个 Azure 资源:

若要查找与 Azure Service Fabric 相关的更多模板,请参阅 Azure 快速入门模板

自定义参数文件

打开 azuredeploy.parameters.json 并编辑参数值,以实现以下目的:

  • clusterName 与你在创建群集证书时为 CertDNSName 提供的值匹配
  • adminUserName 是不同于默认的 GEN-UNIQUE 令牌的某个值
  • adminPassword 是不同于默认的 GEN-PASSWORD 令牌的某个值
  • certificateThumbprint、sourceVaultResourceId 和 certificateUrlValue 都是空字符串 ("")

例如:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "clusterName": {
      "value": "sfquickstart"
    },
    "adminUsername": {
      "value": "testadm"
    },
    "adminPassword": {
      "value": "Password#1234"
    },
    "certificateThumbprint": {
      "value": ""
    },
    "sourceVaultResourceId": {
      "value": ""
    },
    "certificateUrlValue": {
      "value": ""
    }
  }
}

部署模板

将 ARM 模板和参数文件的路径存储在变量中,然后部署模板。

$templateFilePath = "<full path to azuredeploy.json>"
$parameterFilePath = "<full path to azuredeploy.parameters.json>"

New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $templateFilePath `
    -TemplateParameterFile $parameterFilePath `
    -CertificateThumbprint $certThumbprint `
    -CertificateUrlValue $certUrlValue `
    -SourceVaultResourceId $sourceVaultId `
    -Verbose

查看已部署的资源

部署完成后,在输出中找到 managementEndpoint 值,然后在 Web 浏览器中打开该地址,以便在 Service Fabric Explorer 中查看群集。

Service Fabric Explorer,其中显示了新群集

在 Azure 门户中,还可以通过 Service Fabric 资源边栏选项卡找到 Service Fabric Explorer 终结点。

Service Fabric 资源边栏选项卡,其中显示了 Service Fabric Explorer 终结点

清理资源

如果不再需要资源组,可以将其删除,这将删除资源组中的资源。

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue..."

接下来,从本地存储中删除群集证书。 列出已安装的证书以查找群集的指纹:

Get-ChildItem Cert:\CurrentUser\My\

然后删除证书:

Get-ChildItem Cert:\CurrentUser\My\{THUMBPRINT} | Remove-Item

后续步骤

若要了解如何创建自定义 Azure Service Fabric 群集模板,请参阅: