基于aws平台构建SQL SERVER Always-On群集
SQL Server 2012/2014的Always On是针对sql高可用性新增的灾难恢复解决方案,是当前最推荐的sql故障群集架构。
基于AWS跨可用区(AZ)的物理容灾特性构建的sql always-on群集,更可消除由于物理设施方面的故障引起的整个群集不可用风险,保障了sql server可持续访问的高可用性。
传统的部署方式是在同一个物理位置(如同一层机房不同机柜)放置多服务器群集来实现高可用,这样的风险点是在于供电和制冷等物理设备的异常会导致群集不可用。而aws跨可用区的部署方式不仅避免了以上问题,更是可节约大量的线路成本和运维成本。
##本次验证的部署拓扑:
部署步骤概述:
- 第一部分:构建基础环境(AWS基础资源构建,AD、DNS、RDGW准备)
- 第二部分:构建WSFC故障转移群集
- 第三部分:构建SQL Server Always On群集
网络规划:
VPC | 192.168.0.0/16 |
---|---|
子网wsfc-az1-sub10 | 192.168.10.0/24 |
子网wsfc-az2-sub20 | 192.168.20.0/24 |
子网rdgw-az1-sub30 | 192.168.30.0/24 |
实例规划:
属性规划 | 规划值 | 描述 |
---|---|---|
RDGW实例IP地址 | 192.168.30.123 | |
AD实例类型 | t2.medium | |
AD实例IP地址 | 192.168.10.100 | |
AD的主机名 | Dc | |
Wsfc节点1实例类型 | c3.xlarge | |
Wsfc节点2实例类型 | c3.xlarge | |
测试域名 | wsfctest.com | |
Wsfc节点1主机名 | SQL-Master | |
Wsfc节点2主机名 | SQL-Slave | |
Wsfc1节点的IP地址 | 192.168.10.101 | 主IP,管理IP |
192.168.10.102 | Wsfc群集IP | |
192.168.10.103 | SQL AG监听组IP | |
Wsfc2节点的IP地址 | 192.168.20.101 | 主IP,管理IP |
192.168.20.102 | Wsfc群集IP | |
192.168.20.103 | SQL AG监听组IP | |
windows版本 | Windows 2012 standard | |
Sql版本 | Sql server enterprise 2014 | |
Wsfc共享见证 | \dc\wsfcshare | |
Sql server共享文件夹 | \dc\sqlshare |
第一部分:构建基础环境(AWS基础资源构建,AD、DNS、RDGW准备)
按照VPC的规划,
同一个VPC跨2个可用区创建3个子网
Sub10放置sql-master、DC节点
Sub20放置sql-slave节点
Sub30放置RDGW远程跳板机
准备必须的安全组(测试环境开放所有流量)和密钥
部署RDGW、DC的windows实例
RDGW作为跳板机和测试机,分配公网IP,并最先部署
注:以下的测试和操作都是通过该跳板机执行
登陆DC的windows实例,开始安装域控制器(集成DNS)
修改静态IP地址和域名解析指向
进入管理控制台,根据向导安装新林中的域控制器,同时安装dns
直至dc安装完毕,重启系统
创建额外dc管理员:dc / 123.com(加入administrators和domain admins组)
创建wsfc共享文件夹wsfcshare,授权域用户可读写
第二部分:构建wsfc故障转移群集
创建两台windows sql server实例,分别属于不同的AZ
每个节点按照规划分配好3个IP
把两台sql实例加入到域中
测试解析
两台sql实例开始安装WSFC
Install-windowsFeature failover-clustering -includemanagementtools
- 对WSFC进行配置
配置名为wsfctest.com的WSFC群集,资源IP使用192.168.x.102的附加IP
New-cluster -name wsfcluster -node sql-master,sql-slave -staticaddress 172.20.0.102,172.20.4.102
New-cluster -name wsfcluster -node sql-master,sql-slave -staticaddress 172.16.131.187,172.16.129.32
Set-clusterquorum -nodeadnfilesharemajority \adfs.light2cloud.com\wsfc
- 打开wsfc群集管理控制台,查看群集状态
注:下图的网络状态是正确的,同一时间点只会有一个可用群集IP在线,如图
登陆DNS,查看群集名称已经被正确解析,切与wsfc的联机网络对应(本例中为192.168.10.102)
在RDGW测试连通性
Sql-master关机(模拟在线服务器故障),控制台可见192.168.10.102脱机,192.168.20.102联接,群集故障切换正常
再次尝试解析群集名称,看wsfc是否生效
在dns服务器上,查看wsfccluster的解析变为192.168.20.102
- 恢复故障服务器,群集状态恢复
至此,在aws中跨AZ的WSFC群集构建完毕,下一步基于WSFC实现sql server的always-on高可用
第三部分:基于wsfc实现sql server的Always On故障转移
安装sql server企业版(只有企业版以上授权才支持Always On)
配置sql service登录方式使用AD用户登录
在sql server configuration manager中,对两个Sql Server节点开启Always On模式,重启sql服务
创建testdb测试数据库,并完成一次全量备份
通过SQL Management Studio 连接数据库,右键单击testdb, 选择任务->备份
注意备份类型选择"完整"
- 选择alwayson 高可用性向导
点击"添加副本",确认sql-master和sql-slave两个节点全部被添加。勾选"同步提交"和"自动故障转移"
选择"侦听器"标签,创建可用性组侦听器,侦听端口1433,添加192.168.x.103为侦听的两个网络IP
创建测试数据库 testdb
截图
对testdb进行全量备份
截图
一
配置高可用群集
修改AG可用性组的解析ttl时间为300s
在DNS上查看AG注册信息,会发现一个AG对应注册了两条A记录
在sql管理器中查看群集状态,群集工作正常
在wsfc管理器中的"节点"上查看AG群集状态
第四部分 ,开始测试:
用powershell写了一个插入循环,不断向测试表里插入数据。意在测试在故障切换的真实影响
其中测试sql地址使用AG的监听器的域名
当前查看解析到192.168.10.103,解析在sql-master上
故障模拟:
使sql-master宕机
数据实测插入有中断,测试过程4次插入失败,失败时间约为2s
AG的新dns已经解析到192.168.20.103,群集切换成功
在sql studio管理控制台的AG状态查看:可以看到sql-slave群集的角色状态已经变为"主要",故障的sql-master服务器降级为"辅助"
在wsfc群集管理器的"节点"中同样可以看到sql-master故障离线