本文介绍如何为 SQL Server 在 Azure 虚拟机上运行的 Windows Server 故障转移群集配置三个仲裁选项之一:
- 磁盘见证
- 云见证
- 文件共享见证
概述
群集的仲裁由必须成为活动群集成员的投票节点数量决定,这样才能确保群集正确启动或持续运行。 配置仲裁器资源,使两节点集群能够在只有一个节点在线时继续运行。 Windows Server故障转移群集是Azure VM上SQL Server高可用性选项的基础技术:故障转移群集实例(FCI)和可用性组(AG)。
磁盘见证是最具弹性仲裁选项,但若要在 Azure VM 上的SQL Server上使用磁盘见证,必须使用Azure共享磁盘,这会对高可用性解决方案施加一些限制。 因此,在配置使用 Azure 共享磁盘的故障转移群集实例时,请使用磁盘见证,否则尽可能使用云见证。 如果使用 Windows Server 2012 R2 或更早版本(不支持云见证),则可以使用文件共享见证。
以下仲裁选项可用于 Azure 虚拟机上的 SQL Server:
| 云见证 | 磁盘见证 | 文件共享见证 | |
|---|---|---|---|
| 支持的 OS | Windows Server 2016+ | 全部 | 全部 |
若要了解有关仲裁的详细信息,请参阅 Windows Server 故障转移群集概述。
云见证
云见证是一种故障转移群集仲裁见证,它使用Azure存储来提供群集仲裁的投票。
下表提供了有关云见证的其他信息和注意事项:
| 见证类型 | 说明 | 要求和建议 |
|---|---|---|
| 云见证 |
|
|
为故障转移集群配置云见证仲裁资源时,请考虑:
- 您的故障转移群集不存储访问密钥。 而是生成并安全地存储共享访问安全(SAS)令牌。
- 只要访问密钥保持有效,生成的 SAS 令牌就仍有效。 在轮换主访问密钥时,必须先在所有使用该存储帐户的群集上利用辅助访问密钥更新 Cloud Witness,然后才重新生成主访问密钥。
- 云见证使用 Azure Storage 帐户服务的 HTTPS REST 接口。 这意味着它需要在所有群集节点上打开 HTTPS 端口。
云见证需要一个 Azure 存储帐户。 要配置存储帐户,请执行以下步骤:
转到 Azure 门户中的 Storage 帐户页。
在 “存储帐户 ”页上,选择“ + 创建 ”以打开 “创建存储帐户 ”页。
在 “创建存储帐户”页上,配置以下设置:
- 为存储帐户输入名称。 存储帐户名称必须为 3 到 24 个字符,并且只能包含数字和小写字母。 存储帐户名称还必须在Azure内是唯一的。
- 对于 帐户类型, “常规用途 ”是合适的。
- 对于 性能, 标准 是合适的。
- 对于 复制, 本地冗余存储(LRS) 是合适的。
创建存储帐户后,请按照以下步骤为故障转移群集配置云见证仲裁资源:
现有的 Set-ClusterQuorum PowerShell 命令具有与云见证对应的新参数。
可以使用 PowerShell 命令通过 cmdlet Set-ClusterQuorum 配置云见证:
Set-ClusterQuorum -CloudWitness -AccountName <StorageAccountName> -AccessKey <StorageAccountAccessKey>
在极少数情况下,需要使用不同的终结点,请使用以下 PowerShell 命令:
Set-ClusterQuorum -CloudWitness -AccountName <StorageAccountName> -AccessKey <StorageAccountAccessKey> -Endpoint <servername>
有关查找存储帐户访问密钥的帮助,请参阅 云见证文档。
磁盘见证
磁盘见证是群集可用存储组中的小型群集磁盘。 此磁盘具有高可用性,并且可在节点之间故障切换。
建议在使用共享存储高可用性解决方案时, 例如使用Azure共享磁盘的故障转移群集实例时,选择磁盘见证作为法定人数选项。
下表提供了有关仲裁磁盘见证的其他信息和注意事项:
| 见证类型 | 说明 | 要求和建议 |
|---|---|---|
| 磁盘见证 |
|
|
若要为磁盘见证使用Azure共享磁盘,必须先创建磁盘并装载该磁盘。 为此,请按照《Azure共享磁盘故障转移群集实例指南》的 Mount disk 部分中的步骤进行操作。 磁盘不必是高级的。
装载磁盘后,请按照以下步骤将其添加到群集存储:
- 打开故障转移群集管理器。
- 在左侧导航窗格上,选择“存储”下的“磁盘”。
- 在右侧导航窗格上,选择“操作”下的“添加磁盘”。
- 选择刚装载的Azure共享驱动器并记下名称,例如
Cluster Disk 3。
将磁盘添加为群集存储后,请使用 PowerShell 将其配置为磁盘见证:
现有的 Set-ClusterQuorum PowerShell 命令具有与云见证对应的新参数。
使用 PowerShell cmdlet Set-ClusterQuorum 时,使用文件共享的路径作为磁盘见证的参数:
Set-ClusterQuorum -NodeAndDiskMajority "Cluster Disk 3"
还可以使用故障转移群集管理器;遵循与云见证相同的步骤,但改为选择磁盘见证作为仲裁选项。
文件共享见证
文件共享见证人是通常在运行 Windows Server 的文件服务器上配置的 SMB 文件共享。 它在 witness.log 文件中维护群集信息,但不存储群集数据库的副本。 在Azure中,可以在单独的虚拟机上配置文件共享。
如果磁盘见证或云见证在你的环境中不可用或不受支持,则配置文件共享见证。
下表提供了有关仲裁文件共享见证的其他信息和注意事项:
| 见证类型 | 说明 | 要求和建议 |
|---|---|---|
| 文件共享见证 |
|
以下是有关托管文件共享见证的文件服务器的其他注意事项:
|
创建文件共享并正确配置权限后,请将文件共享装载到群集节点。 可以遵循高级文件共享故障转移群集实例操作指南的 装载文件共享部分 中所述的相同的一般步骤。
正确配置和装载文件共享后,使用 PowerShell 将文件共享添加为仲裁见证资源:
Set-ClusterQuorum -FileShareWitness <UNC path to file share> -Credential $(Get-Credential)
系统会提示输入针对文件共享的非管理员的本地帐户和密码,该帐户对共享具有完全的管理员权限。 群集会保持名称和密码的加密,并且任何人都无法访问。
你还可以使用故障转移群集管理器;遵循与云见证相同的步骤,但改为选择文件共享见证作为仲裁选项。
更改仲裁投票
可以更改参与 Windows Server 故障转移群集的节点的仲裁投票。
有关详细信息,请查看 WSFC 仲裁模式和投票配置。
修改节点投票设置时,请遵循以下指导原则:
| 法定人数投票指南 |
|---|
| 默认从没有投票的每个节点开始。 每个节点应该只有一个附带明确理由的投票。 |
| 为承载可用性组主副本的群集节点或故障转移群集实例的首选所有者启用投票。 |
| 启用对自动故障转移管理者的投票。 在可能由于自动故障转移而托管主副本或FCI的情况下,每个节点都应有投票权。 |
| 如果某个可用性组具有多个次要副本,则仅为具有自动故障转移的副本启用投票。 |
| 对处于次级灾难恢复站点的节点禁用投票功能。 如果主站点没有任何问题,则辅助站点中的节点不应该影响群集脱机决策。 |
| 投票数应为奇数,且至少有三个法定人数投票。 如有必要,请在双节点群集中添加 仲裁见证 以获得第三票。 |
| 故障转移后重新评估投票分配。 你不希望故障转移到不支持有效仲裁的群集配置。 |
可以使用故障转移群集管理器或 PowerShell 调整仲裁投票:
Import-Module FailoverClusters
$node = "AlwaysOnSrv1"
(Get-ClusterNode $node).NodeWeight = 0
$cluster = (Get-ClusterNode $node).Cluster
$nodes = Get-ClusterNode -Cluster $cluster
$nodes | Format-Table -property NodeName, State, NodeWeight
还可以在提升的命令提示符中使用 cluster.exe:
cluster.exe Cluster001 node AlwaysOnSrv1 /prop NodeWeight=0
相关内容
- HADR 配置最佳做法(Azure VM 上的SQL Server)
- Windows Server vm Azure 上具有SQL Server的故障转移群集
- 在 Azure 虚拟机上的 SQL Server 的 Always On 高可用性组
- 具有 SQL Server on Azure Virtual Machines 的故障转移群集实例
- 概述:Always On 故障转移群集实例(SQL Server)