SQL Server故障转移集群

在XenServer集群上给客户搭建一个应用服务,要求有负载均衡,Web服务器用Windows Server 2008 R2 + IIS,数据库Sql Server 2008 R2,并且使用SAN存储。我设计的逻辑架构如下图:

上面的架构图中包含7VM,分别是作为转发器的LVS DirectorLVS Backup、作为Web服务器装Windows Server 2008 R2系统的2VM、装有Sql Server 2008 R22VM以及作为SQL Server故障转移集群域控制器DNSISCSI Target1VM客户端通过虚拟IP访问Web服务器,请求首先到达LVS DirectorLVS Director根据特定的算法将请求转发到2Web务器其中的一台,Web服务器根据具体情况,往SQL Server服务器读或写数据。Web服务器通过虚拟IP访问SQL Server务器,其中接到请求的SQL Server服务器将读取存放在ISCSI Target中的相应数据或往ISCSI Target中写入相应的数据,而最终数据都存放在SAN存储中。

LVS DirectorLVS Backup的功能一样,它们之间通过Heartbeat来探测对方的状态,如果LVS Director出问题,LVS Backup将接管服务,即LVS Backup将会接收到来自客户端的请求,这样其中一台转发器出现故障不会影响到负载均衡的功能。同样,后面的Web服务器如果一台出现了故障,LVS会将请求发送到正常的那台Web服务器上。Web服务器通过虚拟IP访问SQL Server服务器,在Web服务器看来,就像后端只有一台SQL Server服务器一样,如果其中一SQL Server服务器出现故障,另一台SQL Server服务器将接受Web服务器的请求继续服务。这样一来,LVSWeb器、SQL Server服务器均不存在单点故障,只要每一种服务器还有一台能正常工作,服务就不会受影响。注意到了吧,作为域控制器、DNSISCSI Target的服务器只有一台,这里又引入了单点故障,但是这台VM基本上不装什么应用,一般认为是比较稳定的,不太容易出现问题,这里用一台应该就够了。

我猜可能有童鞋又有疑问了,我们不都是在用SAN存储吗,本来就是共享的,为何要搞个ISCSI Target呢?按本人的理解,没有一台VM作为ISCSI Target好像还真搞不了这个故障转移集群(如有误请指出)Windows Server 2008在创建集群时需要集群的成员有ISCSI共享盘,这些磁盘有作为仲裁磁盘的,也有作为共享数据盘的。我们的SAN存储是挂载XenServer上的,这些XenServer之间是共享SAN存储,但是对于XenServer2VM来说,它们添加磁盘就是通过你所熟悉的“add disk”操作来完成,这样一来,他们虽然也是用到了SAN存储,但是两个VM使用了SAN存储的不同部分的空间,在VM看来它们并没有共享什么存储。现在的做法是通过“add disk”给作为ISCSI TargetVM添加一1000G的磁盘,这个1000G空间来自SAN存储,然后在该VMMicrosoft ISCSI Target软件,通过这个软件将这1000G的磁盘作为ISCSI目标共享给两台Sql Server服务器,这样两台Sql Server服务器有了共享的ISCSI(作为仲裁盘、数据盘),就可以建立故障转移集群,并且将以后web服务器产生的数据存储在这个1000G的磁盘中。

欢迎微信扫码,进入【技术人成长】社群逛逛。