如何在Azure中配置SQL Server 2008 R2故障转移群集实例
配置Azure实例
我不会在这里详细介绍一些屏幕截图,特别是因为Azure门户UI经常会经常更改,所以我拍摄的任何屏幕截图都会很快变得陈旧。相反,我将只介绍您应该了解的重要主题。
故障域或可用区?
为了确保您的SQL Server实例具有高可用性,您必须确保您的群集节点位于不同的故障域(FD)或不同的可用区(AZ)中。您的实例不仅需要驻留在不同的FD或AZ中,而且您的文件共享见证(见下文)也需要驻留在与您的群集节点所在的FD或AZ不同的FD或AZ中。
这是我的看法。AZ是最新的Azure功能,但到目前为止它们仅在少数几个地区得到支持。AZ提供比FD(99.95%)更高的SLA(99.99%),并保护您免受我在我的帖子Azure Outage Post-Mortem中描述的那种云中断 。如果您可以在支持AZ的区域中部署,那么我建议您使用AZ。
在本指南中,我使用了AZ,当您进入有关配置负载均衡器的部分时,您会看到它们。但是,如果使用FD,除了负载均衡器配置将引用可用性集而不是可用区之外,一切都将完全相同。
你问什么是文件共享见证?
Windows Server故障转移群集(WSFC)要求您配置“见证”以确保故障转移正常运行,而无需详细说明。WSFC支持三种见证:磁盘,文件共享和云。由于我们在Azure中,因此无法使用磁盘见证。Cloud Witness仅适用于Windows Server 2016及更高版本,因此我们可以使用文件共享见证。如果您想了解有关群集仲裁的更多信息,请查看Microsoft Press博客上的帖子,来自MVP:了解Windows Server 2012 R2中的Windows Server故障转移群集仲裁。
将存储添加到SQL Server实例
在配置SQL Server实例时,您需要为每个实例添加其他磁盘。最低限度,您需要一个磁盘用于SQL数据和日志文件,一个磁盘用于Tempdb。在云中运行时,是否应该为日志和数据文件设置单独的磁盘有些争议。在后端,存储全部来自同一个地方,您的实例大小限制了您的总IOPS。在我看来,分离日志和数据文件确实没有任何价值,因为您无法确保它们在两个物理磁盘集上运行。我会留给你决定,但我把日志和数据全部放在同一卷上。
通常,SQL Server 2008 R2 FCI会要求您将tempdb放在群集磁盘上。但是,SIOS DataKeeper有一个非常好的功能,称为DataKeeper非镜像卷资源。本指南不包括将tempdb移动到此非镜像卷资源,但为了获得最佳性能,您应该执行此操作。真的没有理由复制tempdb,因为它无论如何都是在故障转移时重新创建的。
就存储而言,您可以使用任何存储类型,但必须尽可能使用托管磁盘。确保群集中的每个节点都具有相同的存储配置。启动实例后,您将需要附加这些磁盘并将它们格式化为NTFS。确保每个实例使用相同的驱动器号。
联网
这不是一项艰难的要求,但如果可能的话,请使用支持加速网络的实例大小。此外,请确保在Azure门户中编辑网络接口,以便您的实例使用静态IP地址。要使群集正常工作,您需要确保更新DNS服务器的设置,使其指向Windows AD / DNS服务器而不仅仅是某个公共DNS服务器。
安全
默认情况下,同一虚拟网络中的节点之间的通信是敞开的,但如果您已锁定Azure安全组,则需要知道必须在群集节点之间打开哪些端口并调整安全组。根据我的经验,在Azure中构建群集时遇到的几乎所有问题都是由阻塞的端口引起的。
DataKeeper有一些端口需要在群集实例之间打开。这些端口如下:
UDP:137,138
TCP:139,445,9999,以及10000到10025范围内的端口
故障转移群集有自己的一组端口要求,我甚至不会尝试在此处进行记录。这篇文章似乎涵盖了这一点。
此外,稍后描述的Load Balancer将使用必须允许每个节点上的入站流量的探测端口。本指南中常用和描述的端口是59999。
最后,如果您希望您的客户端能够访问您的SQL Server实例,您需要确保您的SQL Server端口是打开的,默认情况下是1433。
请记住,Windows防火墙或Azure安全组可以阻止这些端口,因此请务必检查这两个端口以确保它们可访问。
加入域名
SQL Server 2008 R2 FCI的要求是实例必须驻留在同一Windows Server域中。因此,如果您还没有这样做,请确保已将实例加入Windows域。
本地服务帐户
安装DataKeeper时,它会要求您提供服务帐户。您必须创建域用户帐户,然后将该用户帐户添加到每个节点上的本地管理员组。在DataKeeper安装期间询问时,请将该帐户指定为DataKeeper服务帐户。注意:暂时不要安装DataKeeper!
域全局安全组
安装SQL 2008 R2时,系统会要求您指定两个全局域安全组。您可能希望展望SQL安装说明并立即创建这些组。您还需要创建域用户帐户并将其放在每个安全帐户中。您将指定此帐户作为SQL Server群集安装的一部分。
其他先决条件
您必须在两个群集实例的每个实例上启用故障转移群集和.Net 3.5。启用故障转移群集时,还要确保启用可选的“故障转移群集自动化服务器”,因为Windows Server 2012 R2中的SQL Server 2008 R2群集是必需的。
创建Cluster和DataKeeper卷资源
我们现在准备开始构建集群。第一步是创建基本群集。由于Azure处理DHCP的方式,我们必须使用Powershell创建集群,而不是集群UI。我们使用Powershell,因为它允许我们在创建过程中指定静态IP地址。如果我们使用UI,则会看到VM使用DHCP,并且它会自动分配重复的IP地址,因此我们希望通过使用Powershell来避免这种情况,如下所示。
New-Cluster - 名称 cluster1 - 节点 sql1 ,sql2 - StaticAddress 10.0 .0 .100 - NoStorage
群集创建后,运行Test-Cluster。这在SQL Server安装之前是必需的。
测试- 集群
您将收到有关存储和网络的警告,但您可以忽略Azure中SANless群集中的预期。如果有任何其他警告或错误,您必须在继续之前解决这些问题。
创建群集后,您需要添加文件共享见证。在我们指定为文件共享见证的第三台服务器上,创建一个文件共享,并为我们刚刚创建的集群计算机对象提供读/写权限。在这种情况下,$ Cluster1将是在共享和NTFS安全级别都需要读/写权限的计算机对象的名称。
创建共享后,您可以使用配置群集仲裁向导(如下所示)配置文件共享见证。
安装DataKeeper
在安装DataKeeper之前等待创建基本集群非常重要,因为DataKeeper安装会在故障转移群集中注册DataKeeper Volume Resource类型。如果你已经跳过枪并安装了DataKeeper,那没关系。只需再次运行安装程序并选择“修复安装”。
下面的屏幕截图将引导您完成基本安装。首先运行DataKeeper安装程序。
您在下面指定的帐户必须是域帐户,并且必须是每个群集节点上的本地管理员组的一部分。
当提供SIOS许可证密钥管理器时,您可以浏览到临时密钥,或者如果您有永久密钥,则可以复制系统主机ID并使用它来申请永久许可证。如果您需要刷新密钥,SIOS许可证密钥管理器是一个将安装的程序,您可以单独运行以添加新密钥。
创建DataKeeper卷资源
在每个节点上安装DataKeeper后,您就可以创建第一个DataKeeper卷资源了。第一步是打开DataKeeper UI并连接到每个群集节点。
如果一切都正确完成,服务器概述报告应该如下所示。
您现在可以创建第一个Job,如下所示。
选择源和目标后,将显示以下选项。对于同一区域中的本地目标,您唯一需要选择的是同步。
选择“是”并将此卷自动注册为群集资源。
完成此过程后,打开故障转移群集管理器并查看磁盘。您应该在Available Storage中看到DataKeeper Volume资源。此时,WSFC将其视为普通群集磁盘资源。
SQL Server 2008 R2仅在带有SQL Server SP2或更高版本的Windows Server 2012 R2上受支持。不幸的是,Microsoft从未发布过包含SP2或SP3的SQL Server 2008 R2安装介质。相反,您必须在安装之前将Service Pack整合到安装介质上。如果您尝试使用标准SQL Server 2008 R2媒体进行安装,则会遇到各种问题。我不记得你会看到的确切错误,但我记得他们并没有真正指出确切的问题,你会浪费大量的时间来弄清楚出了什么问题。
截至本文撰写之日,Microsoft在Azure Marketplace中没有带有SQL Server 2008 R2产品的Windows Server 2012 R2,因此如果要在Windows Server 2012 R2上运行SQL 2008 R2,您将自带SQL许可证在Azure中。如果他们稍后添加该图像,或者您选择在Windows Server 2008 R2映像上使用SQL 2008 R2,则必须先卸载现有的SQL Server独立实例,然后再继续。
我按照本文选项1中的指导将SP3整合到我的SQL 2008 R2安装介质上。当然,您将不得不调整一些内容,因为本文引用的是SP2而不是SP3。确保在我们将用于群集的两个节点的安装介质上整合SP3。
使用带有SP3的SQL Server 2008 R2媒体进行整理,运行安装程序并安装群集的第一个节点,如下所示。
如果您使用除SQL Server的默认实例以外的任何其他内容,则本指南中将介绍一些其他步骤。最大的区别是您必须锁定SQL Server使用的端口,因为默认情况下,SQL Server的命名实例不使用1433.一旦锁定端口,每当我们引用端口时,您还需要指定该端口而不是1433本指南中的1433,包括防火墙设置和Load Balancer设置。
在这里,请确保指定未使用的新IP地址。这是我们稍后在配置内部负载均衡器时将使用的相同IP地址。
正如我之前提到的,SQL Server 2008 R2使用AD安全组。如果您还没有创建它们,请继续创建它们,如下图所示,然后再继续执行SQL安装中的下一步。
指定先前创建的安全组。
确保您指定的服务帐户是关联的安全组的成员。
在此处指定SQL Server管理员。
如果一切顺利,您现在可以在群集的第二个节点上安装SQL Server。
在第二个节点上,运行带有SP3安装的SQL Server 2008 R2,然后选择“将节点添加到SQL Server FCI”。
继续安装,如以下屏幕截图所示。
假设一切顺利,您现在应该配置一个双节点SQL Server 2008 R2群集,其外观如下所示。
但是,您可能会注意到只能从活动群集节点连接到SQL Server实例。问题是Azure不支持免费ARP,因此您的客户端无法直接连接到群集IP地址。相反,客户端必须连接到Azure负载均衡器,该负载均衡器将连接重定向到活动节点。要使其工作,有两个步骤:创建负载均衡器并修复SQL Server群集IP以响应负载均衡器探测并使用255.255.255.255子网掩码。这些步骤如下所述。
我将假设您的客户端可以直接与SQL集群的内部IP地址通信,因此我们将在本指南中创建内部负载均衡器(ILB)。如果需要在公共Internet上公开SQL实例,则可以使用公共负载均衡器。
在Azure门户中,按照屏幕截图创建一个新的Load Balancer,如下所示。Azure门户UI快速变化,但这些屏幕截图应该为您提供足够的信息来完成您需要做的事情。随着我们的进展,我会召集重要的设置。
在这里,我们创建了ILB。在此屏幕上需要注意的重要事项是您必须选择“静态IP地址分配”并指定我们在SQL群集安装期间使用的相同IP地址。
由于我使用了可用区,我将Zone Redundant视为一种选择。如果您使用了可用性集,那么您的体验将略有不同。
在后端池中,确保选择两个SQL Server实例。您不希望在池中添加文件共享见证。
在这里,我们配置健康探测器。大多数Azure文档都使用端口59999,因此我们将坚持使用该端口进行配置。
在这里,我们将添加一个负载平衡规则。在我们的示例中,我们希望将所有SQL Server流量重定向到活动节点的TCP端口1433。选择浮动IP(直接服务器返回)为已启用也很重要。
现在,我们必须在其中一个群集节点上运行Powershell脚本,以允许Load Balancer Probe检测哪个节点处于活动状态。该脚本还将SQL群集IP地址的子网掩码设置为255.255.255.255.255,以避免与我们刚刚创建的Load Balancer发生IP地址冲突。
# 定义 变量 $ ClusterNetworkName = “” # 的 集群 网络 名称(使用 优惠- ClusterNetwork 上 的Windows 服务器 2012 的 高 以 找到 该 名称)$ IPResourceName = “” # 的 IP 地址 资源 名称 $ ILBIP = “” # 的 IP 地址 的 在 内部 负载 平衡器(ILB)和 SQL 集群 导入- 模块 FailoverClusters # 如果 您 正在 使用 的Windows 服务器 2012 或 更高:获取- ClusterResource $ IPResourceName | Set - ClusterParameter - Multiple @ { Address = $ ILBIP ; ProbePort = 59999 ; SubnetMask = “255.255.255.255” ; 网络= $ ClusterNetworkName; EnableDHCP时= 0 } # 如果 您 正在 使用 的Windows 服务器 2008 R2 使用 此:#cluster RES $ IPResourceName / 私法 enable,使能= 0 地址= $ ILBIP probeport = 59999 子网掩码= 255.255。255.255
如果正确运行,这就是输出的样子。
下一步
如果你到了这一点并且仍然无法远程连接到群集,那么你就不会是第一个人。在安全性,负载均衡器,SQL端口等方面,有很多问题可能出错。我编写本指南以帮助解决连接问题。
事实上,在这个非常安装中,我在SQL Server配置管理器中的SQL Server TCP / IP属性方面遇到了一些奇怪的问题。当我查看属性时,我没有看到SQL Server群集IP地址是它正在侦听的地址之一,所以我不得不手动添加它。我不确定这是不是异常,但在我从远程客户端连接到集群之前,这肯定是我必须解决的问题。
正如我之前提到的,您可以对此安装进行的另一项改进是为TempDB 使用DataKeeper非镜像卷资源。如果你设置了它,请注意人们经常遇到的以下两个配置问题。
第一个问题是如果将tempdb移动到第一个节点上的文件夹,则必须确保在第二个节点上创建完全相同的文件夹结构。如果在尝试进行故障转移时不这样做,SQL Server将无法联机,因为它无法创建TempDB
第二个问题发生在创建集群后,将其他DataKeeper卷资源添加到SQL集群的任何时候。您必须进入SQL Server群集资源的属性,并使其依赖于您添加的新DataKeeper Volume资源。对于TempDB卷和您在创建集群后可能决定添加的任何其他卷都是如此。
如果您对此配置或任何其他群集配置有任何疑问,请随时与我联系或在下面发表评论。
如何在Azure中配置SQL Server 2008 R2故障转移群集实例相关推荐
- SQL SERVER 2008 R2 故障转移群集实验总结
最近完成了SQL SERVER 2008 R2 故障转移群集实验,特总结了一下. 1.系统版本要匹配,我的操作系统环境是windows server 2008 r2,数据库也要2008 r2才行,起码 ...
- 配置SQL Server 2008 R2 Reporting Services
记录如何在本地配置SQL Server 2008 R2 Reporting Services,笔者环境为Windows 7 64位 + SQL Server 2008 R2 一.准备工作 其实准备工作 ...
- 在Windows 2008 R2下部署SQL Server 2008 R2 群集(一)
技术参考见SQL Server 2008 故障转移群集入门. 部署环境: 整个部署过程在虚拟环境下完成. 涉及到三台虚拟机: 计算机R2DCIscsi:角色DC,DNS,安装有Windows Serv ...
- 在Windows Server 2008服务器上安装SQL Server 2008 R2
本文讲述了在64位版本的WindowsServer 2008服务器上安装及配置SQL Server 2008 R2的过程. 准备服务器 阿里云服务器配置 登录服务器 使用远程桌面登录Windows S ...
- 安装 SQL Server 2008 R2 的硬件和软件要求(转)
以下各部分列出了安装和运行 SQL Server 2008 R2 的最低硬件和软件要求.有关 SharePoint 集成模式下的 Analysis Services 的要求的详细信息,请参阅硬件和软件 ...
- 2008服务器怎么导入备份数据库文件,内江市审计局 *.dmp文件导入Sql Server 2008 R2的方法...
在2015年保障性住房跟踪审计中,从**局采集的业务数据为Oracle备份数据,备份文件的后缀名为.dmp.如何将*.dmp文件导入审计人员熟悉的Sql Server 2008 R2中呢?以下是现场审 ...
- 配置SQL Server 2008 镜像
配置SQL Server 2008 镜像 第一步检查基础环境 由于在非域环境内,所以需要做的检查相对来说多很多,下面按照演示环境,逐个测试下面的条件: Windows 账号. 网络是否能联通,并且端口 ...
- SQL Server 2008 R2的发布订阅配置实践
纸上得来终觉浅,绝知此事要躬行.搞技术尤其如此,看别人配置SQL SERVER的复制,发布-订阅.镜像.日志传送者方面的文章,感觉挺简单,好像轻轻松松的,但是当你自己去实践的时候,你会发现还真不是那么 ...
- SQL Server 2008 R2开启数据库的远程连接及客户端配置
SQL Server 2008 R2如何开启数据库的远程连接 SQL Server 2008默认是不允许远程连接的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,远程连接数 ...
- 配置sql server 2008镜像服务
两台服务器不在域中,也不想加域,所以采用使用证书方法,整个过程分以下几步: 一.创建证书 在服务器A上运行 use master; create master key encryption by ...
最新文章
- 学python用什么系统好-Python用什么系统环境好?老男孩Python
- linux中ls命令
- 利用小工具instsrv和srvany 创建windows服务
- Postman脚本发送请求pm.sendRequest
- 努比亚红魔3开启预约:鲁大师跑分破47万
- Unity3D之Material(材质、着色器、纹理)
- Linux 下配置 node + mongodb 环境
- thinkphp3.2 不同域名配置不同分组设置
- Win10家庭版禁用系统更新方法汇总及问题解决
- RayData学习总结
- Linux京东签到教程,京东POP店铺签到有礼操作指南
- 手机屏幕分辨率真的是越高越清晰吗?
- wincc逻辑运算符_wincc中表达式及公式
- 北京自由职业艺术人才首评职称 不看身份看业绩
- 学习————运算符!
- Java EE小知识
- 求平方根的牛顿迭代matlab程序,牛顿迭代法求平方根
- hive连续天数统计思路
- 防止电脑辐射的有效方法
- 魔兽会封python_Python爬取大量数据时,如何防止IP被封?