创建和使用 Azure 共享磁盘

已完成

你的组织计划使用 Azure 共享磁盘实现 Windows 虚拟机 (VM) 的故障转移群集。 你现在需要评估如何创建 Azure 共享磁盘,并检查在现有 Windows 和 Linux VM 上使用共享磁盘的步骤。

创建 Azure 共享磁盘

可以使用各种工具创建 Azure 共享磁盘。

使用 Azure 门户

  1. 登录 Azure 门户,然后搜索并选择“磁盘”。

  2. 选择“+ 创建”以创建托管磁盘,然后在“基本信息”选项卡上提供以下信息:

    设置 说明
    订阅 选择订阅。
    资源组 选择现有资源组,或创建一个新的资源组。
    磁盘名称 为磁盘提供描述性名称。
    区域 选择要部署 Azure 共享磁盘的区域。
    可用性区域 (可选)选择可用性区域。
    源类型 选择现有磁盘创建源或选择“无”。
    大小 为共享磁盘选择支持的大小,例如 1024 GiB、P30。
  3. 在“加密”选项卡上,使用平台管理的密钥加密磁盘,或提供自己的存储在 Azure 密钥保管库中的磁盘加密集。

  4. 在“网络”选项卡上,为 Azure 共享磁盘提供连接方法。

  5. 在“高级”选项卡上,对“启用共享磁盘”选中“是”复选框,然后选择“最大共享数”。

  6. 在“标记”选项卡上,使用名称/值参数提供资源分类。 这些参数可帮助你跟踪与应用了相同标记的类似资源关联的成本。

  7. 在“审阅 + 创建”选项卡上,验证你的条目,然后选择“创建”。

也可使用 Azure PowerShell、Azure CLI 或 Azure 资源管理器模板(ARM 模板)创建共享磁盘。

使用 PowerShell

$dataDiskConfig = New-AzDiskConfig -Location "WestCentralUS" -DiskSizeGB 1024 -AccountType Premium\_LRS -CreateOption Empty -MaxSharesCount 2

New-AzDisk -ResourceGroupName "myResourceGroup" -DiskName "mySharedDisk" -Disk $dataDiskConfig

使用 Azure CLI

az disk create -g myResourceGroup -n mySharedDisk --size-gb 1024 -l westcentralus --sku Premium_LRS --max-shares 2

使用 ARM 模板

{ 
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "dataDiskName": {
      "type": "string",
      "defaultValue": "mySharedDisk"
    },
    "dataDiskSizeGB": {
      "type": "int",
      "defaultValue": 1024
    },
    "maxShares": {
      "type": "int",
      "defaultValue": 2
    }
  },
  "resources": [
    {
      "type": "Microsoft.Compute/disks",
      "name": "[parameters('dataDiskName')]",
      "location": "[resourceGroup().location]",
      "apiVersion": "2019-07-01",
      "sku": {
        "name": "Premium_LRS"
      },
      "properties": {
        "creationData": {
          "createOption": "Empty"
        },
        "diskSizeGB": "[parameters('dataDiskSizeGB')]",
        "maxShares": "[parameters('maxShares')]"
      }
    }
  ] 
}

将 Azure 共享磁盘与 VM 配合使用

现在你已了解如何创建 Azure 共享磁盘,请将磁盘连接到 VM 以测试共享功能。 使用以下 PowerShell 和 Azure CLI 命令可在两个 VM 上连接 Azure 共享磁盘。

使用 PowerShell

$resourceGroup = "<your resource group name>"
$location = "<region of your shared disk>"
$ppgName = "<your proximity placement groups name>"
$vm = Get-AzVM -ResourceGroupName "<your resource group name>" -Name "<your VM node name>"
$dataDisk = Get-AzDisk -ResourceGroupName $resourceGroup -DiskName "<your shared disk name>"
$vm = Add-AzVMDataDisk -VM $vm -Name "<your shared disk name>" -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun "<available LUN - check disk setting of the VM>"
Update-AzVm -VM $vm -ResourceGroupName $resourceGroup

使用 Azure CLI

diskId=$(az disk show -g "<your resource group name>" -n "<your shared disk name>" --query 'id' -o tsv)
az vm disk attach -g "<your resource group name>" --vm-name "<your VM node name>" --name $diskId

使用 Azure 共享磁盘创建故障转移群集

现在你已了解如何将 VM 连接到共享磁盘,便可以创建故障转移群集。

若要实现工作负荷的高可用性,请创建由多台 Windows Server 计算机组成的故障转移群集。 如果作为故障转移群集一部分的服务器发生故障或不可用,则相同故障转移群集中的另一台服务器将接管故障服务器的服务。 此过程称为故障转移,它将对访问服务的客户端造成的服务中断的影响降至最低。

故障转移群集组件

下表介绍故障转移群集组件。

组件 描述
节点 作为故障转移群集成员的 Windows Server VM。
客户端 使用在故障转移群集中运行的高可用性服务和应用程序的计算机。
网络 实现使用群集工作负荷的节点和计算机之间的通信。 使用部署 VM 的同一虚拟网络。 如果需要隔离群集通信,请创建更多子网。
群集角色 在群集节点上运行的高可用性角色或服务。
资源 由故障转移群集管理的物理或逻辑元素,例如共享文件夹、磁盘或 IP 地址。
群集存储 一个 Azure 共享磁盘,使每个群集节点都可以访问高可用性共享存储。

基础结构要求

故障转移群集依赖于基础结构服务。 Windows Server 支持多域群集和工作组群集。 下表介绍故障转移群集所需的网络基础结构元素。

元素 说明
DNS 群集中的服务器使用域名系统 (DNS) 来进行名称解析。 使用安装在 Azure VM 中的自定义 DNS 角色。
Active Directory SQL Server 故障转移群集实例 (FCI) 要求这两个 VM 都是 Microsoft Entra 域服务的成员(Microsoft Entra 域服务)。
管理帐户 在所有群集服务器上都具有管理权限的帐户。

初始化两个 VM 上的共享磁盘

在共享访问权限的所有 VM 上,使用主启动记录 (MBR) 或 GUID 分区表 (GPT) 分区样式初始化连接的磁盘。 还应使用 NTFS 文件格式格式化磁盘。

若要开始创建群集,必须在将加入群集的所有 VM 上安装故障转移群集功能。 使用以下命令可安装 Windows 故障转移群集服务:

Install-WindowsFeature -Name Failover-Clustering –IncludeManagementTools

故障转移群集验证

群集验证是故障转移群集生命周期的关键组件。 在初始部署之前以及进行一系列配置更改(例如修改仲裁设置)之后,可以使用它。 它还有助于解决性能和稳定性问题。 使用故障转移群集管理器或 Windows PowerShell 可运行验证。 这两个程序都会运行多个测试,以确保采用受支持的方式配置群集组件。

使用故障转移群集管理器或 PowerShell 可验证群集创建的先决条件。 以下示例在名为 node1 和 node2 的计算机上运行所有群集测试:

Test-Cluster –Node node1, node2