灵活使用负载均衡和故障转移群集
2018-03-03
网络中存在一台DC域控制器,域名为“xxx.com”, IP 地址为192.168.0.1,两台IIS服务器组成负载均衡架构,为外界提高访问服务,WebServer1的IP地址为192.168.0.3,WebServer2的IP为192.168.0.4。通过Forefront TMG防火墙发布到公网上,防火墙主机的外部 IP为 89.221.163.101,内部IP为192.168.0.60。 后台SQL Server数据库负责管理数据,两台SQL Server服务器组成故障转移群集架 构,SQLServer1的 IP为192.168.0.5,内部私有IP为170.30.0.1,访问SAN共享存储区域的IP为10.0.0.101。
SQLServer2服务器的IP为 192.168.0.6,私有 IP为170.30.0.2,访问SAN存储区域的IP为10.0.0.102。SQL Server的共有IP是面对用户访问的,私有IP用来连接心跳线。数据存储在SAN中,IP为10.0.0.150,提供多块硬盘组成RAID阵列来存储数据。这些服务器上安装的都是Windows Server 2012。
创建后台共享存储
一 台Windows Server 2012服务器名称为Sanserver,配有三块硬盘,用来组件RAID 1阵列。运行“diskmgmt.msc”程序,在磁盘管理窗口中选择“磁盘1”项,在右键菜单上点击“转换到动态磁盘”项,在“磁盘”列表中选择“磁盘1”和“磁盘 2”,点击“确定”,在“磁盘1”项的右键菜单上点击“新建镜像卷→下一步”按钮,在选择磁盘窗口中的“可用”列表中选择“磁盘2→添加”,将其添加到“已选择”列表中。两块硬盘的容量均为1TB,所以卷大小总数和最大可用空间量也为1TB。
点击“下一步”为该镜像卷设置盘符(例如“K”盘)。之后选择“执行快速格式化”执行格式化操作,这样,就将两块磁盘制作成了RAID1阵列。在服务器管理器中点击“添加角色和功能”项,选择“文件和iSCSI服务→文件服务器”分支下的“iSCSI目标存储提供程序”和“iSCSI目标服务器”项,点击“安装”按钮,安装上述组件。
在服务器管理器左侧选择“文件和存储服务→iSCSI”项,点击右上角的“任务→新建iSCSI虚拟磁盘”,在向导的“按卷选择”列表中选择K盘,点击“下一步”,为其设置名称(如“xndisk1”)和 描 述 信息,之后设置容量。在“下一步”窗口中选择“新建iSCSI目标”,输入目标名(如“target1”)和描述信息,在“下一步”窗口中点击“添加”,在添加发起程序ID窗口中选择“输入选定类型的值”项,在“类型”列表中选择“IP地址”项,在“值”栏中输入“10.0.0.101”,点击“确定”,添加该IP。按照上述方法,添加另外一个地址为 10.0.0.102的 IP。
这样,就允许上述两个SQLServer服务器访问该目标存储。之后点击“创建”创建iSCSI虚拟磁盘和iSCSI目标,执行且为目标设置访问权限,分配iSCSI虚拟磁盘等操作。按照同样的方法,分别创建名为“xndisk2”和“xndisk3”的iSCSI虚拟磁盘。操作方法基本相同,所不同的是在向导窗口中选择“现有iSCSI目标”项,共用上述创建的iSCSI目标。这里的“xndisk1”盘作为存储盘,用来存储SQL Server数据库文件,容量最大。“xndisk2”盘作为仲裁磁盘使用,“xndisk3”磁盘作为SQL Server的分布式事务协调器(DTC)使用。
配置SQL Server故障转移群集
在 S Q L S e r v e r 1和SqlServer2上分别配置三块网卡,其中一块用来连接DC控制器,网络连接名称 为“gongy”,设 置 的 IP为192.168.0.5,将 其 加入域环境。一块网卡用来连接心跳网络,网络连接名称为“xtwl”,设置的 IP为 170.30.0.10。 注 意,在Internet协议版本4(TCP/IP)属性窗口中点击“高级”,在“DNS”面板中不选择“在DNS中注册此连接的地址”项,在“WINS”面板中取消“启用LMHOSTS查找”项的选择状态,并选择“禁用TCP/IP上的NetBIOS”项,取消与网络广播相关的设置,防止影响心跳线的数据传输和信号识别。
另一块网卡连接后台虚拟存储,设置器IP为10.0.0.10。 对 于SQLServer,同样配置三块网卡,执行与上述相同的操作,设置好所需的IP。在SQLServer1上打开服务器管理器,点击“工具→iSCSI发起程序”,在“目标”面板中输入Sanserver的IP,这里为10.0.0.150。点击“快速连接”,在“已发现的目标”列表中选择上述iSCSI目标,点击“完成”。之后在磁盘管理器中可以看到上述三个iSCSI虚拟盘,在其上分别点击“联机”,使其处于联机状态。之后分别在“磁盘1”到“磁盘3”上点击右键,选择“初始化磁盘”项,进行初始化。之后点击“新建简单卷”项,执行设定盘符,调整容量、格式化等操作。例如,将盘符分别设置为S,Q和T。
在SQLServer1上执行同样的连接操作,所不同的是,对磁盘执行联机操作,并修改盘符,与SQLServer一致即可。在SQLServer的服务器管理器中点击“添加角色和功能→故障转移群集→安装”,安装该角色。同理,在SQLServer上也安装该角色。在SQLServer上打开故障转移群集控制台,点击“创建群集”链接,在向导界面中分别输入两台SQLServer服务器的全称,例 如“sqlserver1.xxx.com”,“sqlserver2.xxx.com”点 击“添加”添加到“选定的服务器”列表中。之后按照提示,执行群集的测试操作。
测试通过后,输入群集的名称(例如“qunji1”),在“地址”列中设置器对外的IP(例如192.168.1.30)。点击“下一步”,执行群集的创建操作。在故障转移群集控制台左侧打开“qunji1.xxx.com”群集,打开“节点”,可以看到两台SQLServer主机,点击“存储→磁盘”项,可以看到上述三块iSCSI共享磁盘。打开“网络”,可以看到上述三个网络项目。选择作为心跳网络的项目(例如“群集网络2”),在属性窗口中选择“不允许在此网络上进行群集网络通讯”项,点击“确定”保存配置。
搭建好群集后,接下来配置角色。右击“角色”,选择“配置角色”项,在选择角色窗口中选择“分布式事务协调器”,点击“下一步”,输入客户访问点名称(例 如“clientp”),IP设 置为192.168.1.31。在下一步的选择存储窗口中选择盘符为T的卷,点击“完成”,执行针对DTC的高可用配置操作。在控制台左侧选择“qunji1.xxx.com”群集名,在右侧的“当前主服务器”栏中显示活动的节点主机名。例如SQLServer1为活动主机,在该机上需要安装.NET Framework 3.5组件,之后插入SQL Server 2012安装盘或者安装镜像文件,执行SQL Server 2012的安装操作。在安装界面中点击“新的SQL Server故障转移群集安装”链接,之后按照提示按部就班地完成SQL Server的安装操作。注意,在群集磁盘选择窗口中的“可用共享磁盘”列表中选择上述第一个iSCSI共享磁盘(盘符为S),用来存储SQL Server数据库。
在群集网络配置窗口中设置群集的IP,例如192.168.1.33。 在SQLServer2上同样执行SQL Server 2012的安装操作,所不同的是需要选择“向SQL Server故障转移群集添加节点”链接,执行SQL Server的安装操作,具体的安装过程和上述基本相同,所不同的是在群集节点配置和群集网络配置窗口显示已经配置好的群集和网络项目,选中后,按部就班地执行其余的安装操作(例如设置数据库引擎账号等)。在故障转移群集控制台左侧选择“群集名称→角色”项,在右侧显示上述安装的MSDTC和SQL Server角色,在“所有者节点”列中显示这些角色当前运行在哪台节点主机上。
在DC域控制器上执行SQL Server 2012安装程序,点 击“全 新SQL Server独立安装或向现有安装添加功能”链接,在“功能选择”中选择“管理工具→管理工具(完整)→安装”,安装所需的SQL Server管理工具。在DC上打开SQL Server Management Studio管理工具,在“服务器名称”栏输入上述SQL群集 名,例 如“qunji1.xxx.com”。使用 Windows 身份验证模式,点击“连接”,连接到SQLServer群集。为了顺利连接,可以在SQLServer1和SQLServer2上关闭Windows防火墙,或者在防火墙上开启TCP 1433端口。
因为网站需要使用SQL Server后台数据库,所以在左侧选择“数据库→新建数据库”项,或者打开查询窗口,执行诸如“create database数据库名称”之类的命令,来创建所需的数据库。为了让网站顺利连接数据库,需要配置账户,例如选择“安全性→登录名→sa”,在属性窗口中设置密码,在状态面板中选择“授予”和“已启用”项,点击“确定”并刷新“登录名”列表。如果使用SA账户连接,需要在SQL Server实例的属性窗口中选择“安全性”,在右侧选择“SQL Server和Windows身份验证模式”项。之后在SQL Server实例的右键菜单中点击“重新启动”,使配置生效。
配置WebServer的负载均衡群集
在WebServer1上分别打开服务器管理器,点击“添加角色和功能”,在角色列表中选择“Web服务器(IIS)”和“网络负载平衡”,点击“安装”。将网站相关文件复制到WebServer1服务器的合适路径中,之后分别打开IIS管理器,可以使用默认的站点,或者新建所需的站点。例如在左侧的“网站”项的右键菜单上点击“添加站点”并输入网站名称,在“内容目录”栏点击浏览,选择网站目录。在“IP地址”列表中选择“全部未分配”项,让其包含所有地址。点击“确定”创建该网站。
如果网站版本比较老的话,需要在左侧选择“应用程序池”项,在右侧选择上述站点名称,在右键菜单上点击“基本设置”项,在编辑应用程序池窗口中的“托管管道模式”列表中选择“经典”项。点击“确定”保存配置信息。在WebServer2上执行同样的操作,安装所需的角色,配置网站参数。因为网站需要连接后台SQL Server数据库,根据以上操作配置好数据库后,在相应的网站连接配置界面中的数据库服务器地址应该指向群集地址,例如“qunji1.xxx.com”,设置数据库名称,登录名和密码等参数后,就可以顺利启动网站了。
在WebServer1上打开网络负载平衡管理器,在左侧选择“网络负载平衡群集→新建群集”项,在“主机”栏输入WebServer1的IP,点击“连接”按钮,连接成功后,点击“下一步”按钮,在群集IP地址窗口中点击“添加”按钮,输入群集IP,例如192.168.1.50。在下一步的群集参数窗口中的“完整Internet名称”栏中输入具体的该网站的网址,例如“www.xxx.com”。在“群集操作模式”栏中选择“多播”项,当然,这需要交换机的支持。在下一步的端口规则窗口中点击“编辑”按钮,在弹出窗口中的“端口范围”栏中设置80到80,这样就只提供网站访问功能。
点击“完成”按钮,在网络负载平衡管理器中查看到WebServer1的状态从挂起变成已聚合后,在本群集名称的右键菜单上点击“添加主机到群集”项,按照操作向导的提示,添加WebServer2主机,方法与上述完全相同。为了让外部用户顺利访问网站,需要向Internet上的域名提供商申请一个域名,例如“xxx.com”。当域名申请成功后,登录到其后台管理界面,在域名管理中点击“新增解析”之类的按钮,增加一个A记录,主机记录名为“www”,在“记录值”中设置内网的公网地址,这样Internet上的用户就可以访问该域名了。之后在DC上执行“dnsmgmt.msc”程序,在DNS管理器中选择“DNS→域控制器名称→正向查找区域→xxx.com”,在右键菜单上点击“新建主机”,在“名称”栏输入“www”,在“IP地址”栏中输入负载平衡群集的IP,点击“添加主机”按钮,添加该记录。
配置防火墙 发布网络服务
本例使用Forefront TMG作为防火墙,对80端口设置映射到内网的Web服务器上。在Forefront TMG控制台窗口左侧选择“防火墙策略”,在右键菜单上点击“新建→网站发布规则”,输入本规则名称。在下一步窗口中选择“允许”,点击下一步,在发布类型窗口中选择“发布单个网站或负载平衡器”项。在下一步窗口中选择“使用不安全的连接发布的Web服务器或服务器场”,表示发布HTTP网站。在下一步的内部发布详细信息窗口中输入内部站点名称,选择“使用计算机名称或IP地址连接到发布的服务器”项,输入内网Web服务器地址,这里为负载平衡群集的IP。
在下一步窗口中的“路径”栏中输入“/*”,表示发布整个网站。点击下一步,在发布名称细节窗口中的“公网名称”栏中输入实际的网站域名,例如“www.xxx.com”,即上述申请的域名信息。在下一步的选择Web侦听器窗口中点击“新建”按钮,在弹出窗口中输入该侦听器名称,例如“http80”。点击下一步,选择“不需要与客户端建立SSL安全连接”项,点击下一步,在Web侦听器IP地址窗口中选择“外部”项,在下一步窗口中的列表中选择“没有身份验证”项,点击完成,创建该侦听器。返回上一级窗口,选择使用该侦听器,在下一步窗口中选择“无委派,但是客户端可以直接进行身份验证”项,之后点击完成按钮,创建该发布规则。点击Forefront TMG窗口上部的“应用”按钮,激活该规则。
在上述侦听器“属性”窗口的“身份验证”面板中点击“高级”,选择“允许通过HTTP进行客户端身份验证”项,点击应用和确定按钮保存配置信息。
有了故障转移群集和负载平衡群集的支持,上述网站的可靠性大大提高。例如,某台WebServer服务器出现故障无法工作时,另外一台WebServer服务器可以继续为外界提供访问服务。当某台SQLServer出现问题时,活动主机可以自动切换到另外一台SQL Server服务器上,依然可以正常支持网站的数据查询、存储、修改等要求。即使后台存储系统的某块硬盘损坏,因为有RAID1磁盘阵列的支持,另外一块磁盘依然可以保存所有的数据,SQL Server数据库依然处于完整可用状态,为SQL Server服务器提供有力的存储服务支持。