SQL Server 高可用性(二)群集与侦听器

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” 博客,谢绝转载!

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4