本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon FCI 为SQL服务器设置多可用区基础架构 FSx
由 Manish Garg (AWS)、T.V.R.L.Phani Kumar Dadi ()、Nishad Mankar () 和 () AWS 创作 AWS RAJNEESH TYAGI AWS
摘要
如果你需要快速迁移大量 Microsoft SQL Server Always On 故障转移群集实例 (FCIs),这种模式可以帮助你最大限度地缩短配置时间。通过使用自动化和 Amazon FSx for Windows File Server,它可以减少手动工作、人为错误和部署大量集群所需的时间。
此模式为FCIs在 Amazon Web Services () 上部署的多可用区(多可用区)中的SQL服务器设置基础架构。AWS使用AWS CloudFormation模板可以自动配置此基础架构所需的AWS服务。 SQL使用 PowerShell 命令在亚马逊弹性计算云 (AmazonEC2) 实例上安装服务器和创建集群节点。
该解决方案使用高度可用的多可用区 A mazon FSx for Windows 文件系统作为存储SQL服务器数据库文件的共享见证。亚马逊FSx文件系统和托管SQL服务器的 EC2 Windows 实例加入了微软 Active Directory(AWS托管微软 AD)域的同一个AWS目录服务。
先决条件和限制
先决条件
一个活跃的AWS账户
具有AWS使用AWS CloudFormation 模板配置资源的足够权限的用户
AWS微软 Active Directory 的目录服务
S AWS ecrets Manager 中用于通过键值对向AWS托管 Microsoft AD 进行身份验证的凭据:
在 Sy AWS stems Manager 自动化中,你将在AWS托管的 Microsoft AD 加入活动中使用相同的密钥名称。
SQL用于SQL服务器安装和创建的 Windows 服务或域帐户的服务器媒体文件,这些文件将在创建群集时使用
虚拟私有云 (VPC),在不同的可用区中有两个公有子网,可用区中有两个私有子网,一个 Internet 网NAT关、网关、路由表关联和一台跳转服务器
产品版本
架构
源技术堆栈
目标技术堆栈
AWSEC2实例
FSx适用于 Windows 文件服务器的亚马逊
AWSSystems Manager 自动化操作手册
网络配置(子网VPC、互联网网关、网关、NAT网关、跳转服务器、安全组)
AWS Secrets Manager
AWS Managed Microsoft AD
Amazon EventBridge
AWSIdentity and Access Management (IAM)
目标架构
下图显示了单个AWS区域中的一个AWS账户,其中VPC包含两个可用区、两个带网关的公有子网、第一个公有子NAT网中的跳转服务器、两个私有子网(每个子网都有一个用于节点安全组中的SQL服务器节点的EC2实例)以及一个连接到每个SQL服务器节点的 Amazon FSx 文件系统。 AWS还包括 Directory Service EventBridge、Amazon、S AWS ecrets Manager 和 AWS Systems Manager。
自动化和扩缩
AWS 服务
其他工具
代码存储库
此模式的代码可在 GitHub aws-windows-failover-cluster-automat ion存储库中找到。
最佳实践
操作说明
任务 | 描述 | 所需技能 |
---|
部署 Systems Manager CloudFormation 堆栈。 | 登录您的AWS账户,然后打开AWS管理控制台。 导航到 CloudFormation 控制台,然后通过上传ssm.yaml 模板创建 System CloudFormation s Manager 堆栈。为以下参数提供值: StateUnJoinAssociationLoggingBucketName— 提供模板将为记录目的而创建的 S3 存储桶的名称。 SSMAssociationADUnjoinName— 提供AWS::SSM::Association 资源的名称。 SSMAutomationDocumentName— 为 Systems Manager 自动化运行手册提供一个名称。 EventBridgeName— 提供 EventBridge 活动总线的名称。
通过启动ssm.yaml CloudFormation 模板来部署 Systems Manager CloudFormation 堆栈。该模板将创建 Systems Manager Atomation 运行手册,该运行手册将在带有标签的新EC2实例启动时启动。ADJoined: FSXADD 自动化运行手册会将该实例添加到AWS托管的 Microsoft AD 目录中。
| AWS DevOps, DevOps 工程师 |
部署基础设施堆栈。 | 成功部署 Systems Manager infra 堆栈后,创建堆栈,其中包括EC2实例节点、安全组、Amazon FSx for Windows 文件服务器文件系统和IAM角色。 导航到 CloudFormation 控制台并启动infra-cf.yaml 模板。若要部署此堆栈,必需参数: ActiveDirectoryId — Microsoft AWS 托管 AD 的 ID
ADDnsIpAddresses1 — AWS 托管微软 AD 的主要 DNS IP 地址
ADDnsIpAddresses2 — AWS 托管微软 AD 的辅助 DNS IP 地址
FSxSecurityGroupName — Amazon FSx 安全组的名称
FSxWindowsFileSystemName — Amazon FSx 硬盘的名称
ImageID — 用于创建SQL服务器实例节点的基本 Windows 2012 R2 映像或亚马逊系统映像 (AMI) 的 ID
KeyPairName — 要附加到EC2实例节点以供访问的键值对
Node1SecurityGroupName — 第一个节点安全组的名称
Node2SecurityGroupName — 第二个节点安全组的名称
OUSecretName — 包含AWS托管 Microsoft AD 信息的机密名称
PrivateSubnet1 — 第一个私有子网的 ID
PrivateSubnet2 — 第二个私有子网的 ID
SqlFSxFCIName — 应用于主节点和辅助节点以及 Amazon 的标签的名称FSx。
SqlFSxServerNetBIOSName1 — 主EC2实例节点的名称(最多 15 个字符)
SqlFSxServerNetBIOSName2 — 辅助EC2实例节点的名称(最多 15 个字符)
VPC — VPC 身份证
WorkloadInstanceType — EC2 实例类型
部署 infra 堆栈。该堆栈将创建设置 Windows SQL 服务器所需的所有基础架构组件FCI。 EC2实例节点启动后,系统将调用 Systems Manager 自动化文档,将这些实例加入AWS托管 Microsoft AD。您可以在 Systems Manager 控制台的自动化页面上跟踪进度。
| AWS DevOps, DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|
安装 Windows 工具。 | 登录主EC2实例,即节点 1。要安装 Windows 功能(活动目录和FCI工具),请运行以下 PowerShell 脚本。 Install-WindowsFeature -Name RSAT-AD-Powershell,Failover-Clustering -IncludeManagementTools
Install-WindowsFeature -Name RSAT-Clustering,RSAT-ADDS-Tools,RSAT-AD-Powershell,RSAT-DHCP,RSAT-DNS-Server
登录到辅助EC2实例(节点 2),然后运行相同的脚本以启用节点 2 上的功能。
| AWS DevOps, DevOps 工程师,DBA |
在 Active Directory 域服务中预存集群计算机的对象。 | 要在 Active Directory 域服务 (AD DSCNO) 中预存群集名称对象 () 并为群集角色预留虚拟计算机对象 (VCO),请按照 Windows Server 文档中的说明进行操作。 | AWS DevOps,DBA, DevOps 工程师 |
创建 WSFC。 | 要创建 Windows 服务器故障转移群集 (WSFC) 群集,请执行以下操作: 登录主EC2实例,即节点 1。要创建 Amazon FSx 文件共享并授予对所列广告服务账户的完全访问权限,请运行以下代码。 Invoke-Command -ComputerName "<FSx Windows Remote PowerShell Endpoint>" -ConfigurationName FSxRemoteAdmin -scriptblock {
New-FSxSmbShare -Name "SQLDB" -Path "D:\share" -Description "SQL Databases Share" -ContinuouslyAvailable $true -FolderEnumerationMode AccessBased -EncryptData $true
grant-fsxsmbshareaccess -name SQLDB -AccountName "<domain\user>" -accessRight Full
}
此命令还将创建持续可用 (CA) 文件共享,该共享已针对微软SQL服务器使用进行了优化。 要在主实例(节点 1)上创建失效转移群集,请运行以下命令。 New-Cluster -Name <CNO Name> -Node <Node1 Name>, <Node2 Name> -StaticAddress <Node1 Secondary Private IP>, <Node2 Secondary Private IP>
命令需要使用以下参数: 域管理员或普通用户必须对两个节点都具有管理员权限才能创建 Windows Server 故障转移群集 (WSFC) 群集。否则,前面的命令将失败并返回消息 You do not have administrator privilege on servers 。 集群创建后,运行以下命令,以附加文件共享见证。 Set-ClusterQuorum -FileShareWitness \\<FSx Windows Remote PowerShell Endpoint>\share\witness
| AWS DevOps,DBA, DevOps 工程师 |
安装SQL服务器故障转移群集。 | WSFC集群设置完成后,在主实例(node1)上安装SQL服务器群集。 在两个节点上的 T 盘中,创建 tempdb 和 log 文件夹。 PowerShell 命令中使用文件夹。 在两个节点上复制SQL服务器安装SQL服务器的服务器媒体文件后,在节点 1 上运行以下 PowerShell 命令以在节点 1 上安装SQL服务器。
D:\setup.exe /Q `
/ACTION=InstallFailoverCluster `
/IACCEPTSQLSERVERLICENSETERMS `
/FEATURES="SQL,IS,BC,Conn" `
/INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server” `
/INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" `
/RSINSTALLMODE="FilesOnlyMode" `
/INSTANCEID="MSSQLSERVER" `
/INSTANCENAME="MSSQLSERVER" `
/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" `
/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node1>;Cluster Network 1;<subnet mask>" `
/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" `
/INSTANCEDIR="C:\Program Files\Microsoft SQL Server" `
/ENU="True" `
/ERRORREPORTING=0 `
/SQMREPORTING=0 `
/SAPWD=“<Domain User password>” `
/SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" `
/SQLSYSADMINACCOUNTS="<domain\username>" `
/SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" `
/AGTSVCACCOUNT="<domain\username>" /AGTSVCPASSWORD="<Domain User password>" `
/ISSVCACCOUNT="<domain\username>" /ISSVCPASSWORD="<Domain User password>" `
/FTSVCACCOUNT="NT Service\MSSQLFDLauncher" `
/INSTALLSQLDATADIR="\\<FSX DNS name>\share\Program Files\Microsoft SQL Server" `
/SQLUSERDBDIR="\\<FSX DNS name>\share\data" `
/SQLUSERDBLOGDIR="\\<FSX DNS name>\share\log" `
/SQLTEMPDBDIR="T:\tempdb" `
/SQLTEMPDBLOGDIR="T:\log" `
/SQLBACKUPDIR="\\<FSX DNS name>\share\SQLBackup" `
/SkipRules=Cluster_VerifyForErrors `
/INDICATEPROGRESS
| AWS DevOps,DBA, DevOps 工程师 |
向集群添加一个辅助节点。 | 要将SQL服务器添加到辅助节点(节点 2),请运行以下PowerShell 命令。 D:\setup.exe /Q `
/ACTION=AddNode `
/IACCEPTSQLSERVERLICENSETERMS `
/INSTANCENAME="MSSQLSERVER" `
/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" `
/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node2>;Cluster Network 2;<subnet mask>" `
/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" `
/CONFIRMIPDEPENDENCYCHANGE=1 `
/SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" `
/AGTSVCACCOUNT="domain\username>" /AGTSVCPASSWORD="<Domain User password>" `
/FTSVCACCOUNT="NT Service\MSSQLFDLauncher" `
/SkipRules=Cluster_VerifyForErrors `
/INDICATEPROGRESS
| AWS DevOps,DBA, DevOps 工程师 |
测试SQL服务器FCI。 | 在其中一个节点的 Windows 实例上,在管理工具中启动失效转移群集管理器。 导航到节点,确认节点状态为运行状态。 选择 “角色”,打开 “SQL服务器” () 的上下文(右键单击MSSQLSERVER)菜单,然后选择 “移动并选择节点”。 选择节点后,SQL服务器应在另一个节点上运行。
| DBA, DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|
清理资源。 | 要清理资源,请使用AWS CloudFormation 堆栈删除流程: 堆栈删除过程完成之后,堆栈将处于 DELETE_COMPLETE 状态。默认情况下,处于该DELETE_COMPLETE 状态的堆栈不会显示在 CloudFormation 控制台中。要显示已删除的堆栈,必须按照在控制台上查看已删除堆栈中所述更改堆栈视图筛选器。AWS CloudFormation 如果删除失败,则堆栈将处于 DELETE_FAILED 状态。有关解决方案,请参阅 CloudFormation 文档中的删除堆栈失败。 | AWS DevOps,DBA, DevOps 工程师 |
故障排除
事务 | 解决方案 |
---|
AWS CloudFormation 模板失败 | 如果 CloudFormation 模板在部署期间失败,请执行以下操作: |
AWS托管微软 AD 加入失败 | 若要解决加入问题,请执行以下步骤: 打开 Systems Manager 控制台。 选择部署区域。 在左侧窗格中,选择自动化,然后找到失败的自动化运行手册。 打开自动化运行手册,检查执行状态和执行步骤。 调查失败步骤的详细信息,以查看确切的错误或失败。
|
相关资源