SQL Server 高可用性(二)群集与侦听器
一、群集 1. MSFC
在SQL Server中谈到群集,首先就会存在一个误区。实际上,SQL Server群集应当理解为“在MSFC中运行的SQL Server Service”,它依赖于MSFC。
在Windows Server 2003时,Windows的群集被称为Microsoft Cluster Service(MSCS)。从Windows Server 2008 开始被称为 Microsoft Failover Cluster(MSFC)。 在创建SQL Server群集之前,必须在Windows中实现一个MSFC,然后再将SQL Server安装成为MSFC中的一个“服务与应用程序”。2. 节点
SQL Server群集实际上是将SQL Server实例作为一个服务安装在MSFC的每一个节点。MSFC最多允许16个节点。也就是说,可以将一个SQL Server实例安装到最多16个节点上。
但同一时间只能在其中一个节点(主节点)运行这个SQL Server实例(服务)。即使你想在辅助节点上强行启动对应的SQL Server实例,MSFC也会加以阻止。3. Fail-over 关于群集的第二个误区,是群集与负载平衡的区别。故障转移群集是用于获得高可用性的,而非用于实现负载平衡。
MSFC会一直监听SQL Server实例(服务),当主节点上的SQL Server实例失败(Fail)了,MSFC会通知下一个节点立即运行SQL Server实例,并且MSFC将连接到旧节点上的全部请求转移到新的节点,从而保证客户端业务的连续性。这就是Fail-over(故障转移),也就是说,只有在发生故障时才会转移,而不是负载平衡(Load Balance)。4. 仲裁
MSFC中存在一个非常重要的因素,那就是节点配置方式(仲裁)。可以理解为,仲裁需要使用投票机制,得票超过半数的节点才能成为主节点。
Windows Server 2003时较常用的是2个节点加1个仲裁磁盘。
Windows Server 2008则推荐使用节点多数(奇数个节点),当节点数量为偶数时才推荐添加一个仲裁磁盘。也就是说,Windows Server 2008 创建 Microfost Windows Cluster 时,仲裁磁盘(共享存储)并不是必须的。二、侦听器
侦听器在MSFC中被称为虚拟网络名称(Virtual Network Name)。MSFC的侦听器
MSFC自身就有一个侦听器,客户端可以直接访问这个侦听器。对这个侦听器的访问被MSFC重定向到主节点。 例如,使用远程桌面直接连接到侦听器。进入远程桌面后,
再查看这台计算机的属性,可以发现其实就是主节点这台计算机。2. SQL Server Cluster的侦听器
要访问SQL Server群集,必须访问SQL Server Cluster的侦听器。 如果直接访问主节点的名称,则报错,因为SQL Server群集实例并没有绑定到主节点名称,而是只绑定到MSFC中的SQl Server群集侦听器。3. AlwaysOn可用性组的侦听器
要访问AlwaysOn可用性组,可以使用以下两种方式: (1)访问AlwaysOn可用性组的侦听器
连接到侦听器后,客户端可以实现read/write。而且由于后端的节点是自动Fail-over,所以客户端不用关心后端发生的节点切换。
(2)直接访问指定的节点
如果可以连接到指定的节点,客户端可以实现read-only(前提条件是该节点启用了read-only选项。但是客户端在write时可能会报错,因为这个节点不一定就是主节点。当这个节点Fail后,客户端的连接被断开。
本文出自 “我们一起追过的MSSQL” 博客,谢绝转载!