亚马逊AWS官方博客
Setup SQL Server 2019 Availability Group on Amazon EC2
背景
- 在使用 Microsoft SQL Server 的用户中,有相当一部分的是运行在本地或者托管数据中心中的。而在这些用户中,因为客户行业属性的原因(政府或者教育客户),购买 SQL Server License 或有相应的折扣和优惠政策。由此,这类客户在迁移到 AWS 的时候更偏向于在 Amazon EC2 上自行部署并使用 BYOL 的方式。
- 而为了确保数据库的可靠性和高可用性,客户会通过使用 SQL Server Availability Group 来实现这一目的。
- 基于以上两点,这篇文章会介绍如何在 Amazon EC2 上一步一步来部署 SQL Server Availability Group 并实现数据库的可靠性和高可用性。
架构概述
在这个架构中我们会使用到:
- 通过标准 Windows Server 2019 的 AMI 启动的 EC2 (不包含 SQL Server)
- AWS Directory Service 的 Managed AD 用于管理 AD/DNS
- 构建在同一个 VPC 中
先决条件
- 已通过 AWS Directory Service 创建 Managed AD
- 拥有 Amazon EC2 和 Amazon VPC 的管理权限的 IAM 用户
配置部署
创建 VPC DHCP 选项集(可选)
注:此步骤是确保运行 SQL Server 的 Amazon EC2 可以通过 VPC DHCP 选项集自动指配已有域的 DNS 服务器,如果 VPC 网络环境里绝大部分的资源没有这类需求的话可以跳过次步骤,并通过手动配置的方式实现
- 创建 VPC DHCP 选项集
- 应用到当前的 VPC 环境后,后续创建的 EC2 会自动获取加入 AD 所用的 DNS Server IP
- 如果改应用对当前 VPC 会产生影响的话,运行 SQL Server 的 EC2 也可以在完成创建后手动修改
创建运行 SQL Server 2019 的 EC2
- 进入 AWS 管理控制台,选择 EC2 服务,并点击启动实例
- 在选择实例映像时,选择 “Microsoft Windows Server 2019 Base”,进入下一步
- 对于 SQL Server Availability Group 的使用场景,EC2 需要配置一个主要 IP 地址以及两个辅助 IP 地址,其中一个辅助 IP 地址用于创建 Failover Cluster,另一个辅助 IP 地址一个用于监听 Availability Group 侦听器。创建辅助 IP 地址如图所示:
- 根据提示完成 EC2 实例的创建,并通过过程中创建或之前已创建的密钥对(Keypair)远程登录到 EC2 实例上
- 通过运行如下命令打开网络连接设置,并修改 DNS 后缀
- 选择网络连接的属性,双击 TCP/IP 设置进入并切换至 DNS 选项卡,如下左图所示修改 DNS 后缀的配置,目的是为了可以确保同域的节点之间可以通过 DNS 名直接解析彼此
- 打开计算机设置,修改计算机名并加域,如下右图所示,完成后需重启实例
- 重启过后,关闭 Windows 防火墙或者打开 SQL Server 的例外以允许 EC2 之间的访问。在整个部署配置完成并成功连接之后,出于安全角度建议再根据实际访问需求调整安全组和 Windows 防火墙
- 下载并按照向导安装 SQL Server 2019 和 SQL Server Management Studio,过程中使用域用户运行 MSSQL Server 服务。为了确保顺利部署,这里可以先使用域管理员,如下图所示:
- 下载并安装 SSMS,安装完成后重启
- 重复以上步骤安装并配置另一台运行 SQL Server 的 Amazon EC2 实例;如需更多的实例节点,则继续重复以上步骤即可
配置 WSFC (Windows Server Failover Cluster)
- 在上一步骤所创建的每个集群节点上运行如下命令,并重启:
- (可选)配置基于文件共享的集群故障转移仲裁
- 完场上述配置后,检查故障转移集群状态,确认当前有节点已处于“Online”的状态以及当前集群的事件是否有异常;如有配置见证服务则需检查见证服务状态是否也处于“Online”,如下图所示:
配置 SQL Server Availability Group
- 在每个节点上打开 SQL Server 配置管理器,启用 SQL Server 的 Availability Group 并重启 SQL Server 服务
- 打开 SSMS 并连接到当前数据库实例,创建测试数据库(注意:选项中恢复模式为Full)并执行备份,如下图所示:
- 通过向导创建 Availability Group
- 在指定复制节点处,添加另一个节点,可用性模式可选为同步或者异步,如下图所示:
- 创建 Availability Group 监听器,将两台 EC2 的第二个辅助 IP 地址添加进去,如下图所示:
- 打开控制面板检查 Availability Group 状态,如下图所示;如需测试可以手动触发故障转移以验证
小结
- 通过以上的配置部署,可以实现在 Amazon EC2 上运行 SQL Server Availability Group,并给予 Windows Server Failover Cluster 实现故障转移集群的模式
- 在上述步骤中并未包含导入 License 的步骤,如果是通过 BYOL 的模式安装并运行 SQL Server 的话,需下载相应版本的安装包而非 Evaluation 版本
- 通过 BYOL 的方式在 Amazon EC2 上运行 SQL Server 是一种合理使用当前已有 License 的方式,但是在此基础上需要有一定的运维能力和支持,在使用该方式之前需事先进行评估;如果不具备该人员储备或资源的情况下,建议还是使用 Amazon RDS for SQL Server 或者其他托管数据库引擎以简化维护成本
参考
- 使用 VPC DHCP 选项集
https://docs.thinkwithwp.com/zh_cn/vpc/latest/userguide/VPC_DHCP_Options.html#DHCPOptionSet - 如何为 Amazon EC2 实例配置辅助私有 IP 地址
https://thinkwithwp.com/cn/premiumsupport/knowledge-center/secondary-private-ip-address/ - 下载 SQL Server 及 SQL Server Management Studio:
https://www.microsoft.com/en-us/sql-server/sql-server-downloads
https://aka.ms/ssmsfullsetup - What is SQL Server Availability Group
https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server?view=sql-server-ver15