在搭建了 AlwaysOn FCI 后,MSSQL 拥有了实例界别的高可用了。但是数据访问仍然存储在单个节点中,异地容灾还无法高可用。
如下图,在搭建 AlwaysOn FCI与AG组合 前,先搭建 Failover Cluster Instance(FCI):
若此时磁盘损坏,或者双节点都宕机,这就需要异地的灾备中心上线了。为了保证异地的高可用,在本地高可用 FCI 上,搭建 alwayson 可用性组。
架构如下图:
注意:在配置可用性组时,所有节点都加入同一个群集中。使用的是 FCI 的虚拟IP。
异地节点的计算机先加入域,配置网络,配置防火墙,安装故障转移工具,安装数据库实例,设置账号等。
在现有的群集中,添加节点:
验证添加完成后,节点 “server112” 则添加到群集中。
接下来激活 alwayson 可用性组,在FCI的主节点实例中激活,新的节点也要激活,都需要重启一次实例。
右键群集中 SQL server 应用属性,在首先所有者中,不需选择新增的节点。因为此实例是故障转移实例,不必把AG的节点选中。
现在好了,这样像正常一样配置可用性组了!访问时使用的是 FCI 的虚拟IP连接到群集实例中。
先在FCI的主节点实例中备份数据库,还原到新增的节点 (如 server112),按正常方法配置AG,完成如下。
此时群集中的实例如下:
搭建完成!!
在开放上线前测试一遍,进行FCI间的故障转移,注意别转到AG节点112(当然也会报错)
在数据库内部,进行一次来回的 AG 故障转移:
确定没什么问题,那就上线吧!
此外,还可以在AG 的单节点中再配置 FCI,当然AG只能在一个节点中读写,其他可设置只读。
参考:Adding SQL Server AlwaysOn Availability Groups to existing Failover Clusters