到AlwaysOn级别1的楼梯:什么是“SQL Server AlwaysOn”?
佩里·惠特尔,2016/02/24(首次出版:2014 /09/24)
该系列
这篇文章是楼梯系列的一部分:通往AlwaysOn的楼梯
AlwaysOn是一套复杂的技术,经常被误解。在这个阶梯中,您将了解AlwaysOn技术,它们如何适应高可用性堆栈,以及如何充分利用它们。
欢迎来到“SQL Server AlwaysOn”系列的第一个级别。在这一级别的文章中,我们将发现技术“AlwaysOn”、“故障转移集群实例”(FCI)和“Windows服务器故障转移集群”。我们将详细讨论每一个问题,并总结它们在高可用性堆栈中的位置。这将为我们提供一个坚实的基础,这对提升楼梯的水平是至关重要的。更高级别的stairways将研究所需的基础设施以及与AlwaysOn可用性组和FCIs使用的不同存储需求和选项。
在每一个楼梯的水平之后,你将进一步了解AlwaysOn的结构是如何构建的。尽管作为DBA,您可能不会与AlwaysOn和FCIs下的核心基础设施项目有任何直接的交互,但它有助于完全理解所有的技术是如何集成的。最后的楼梯将导致一个功能的AlwaysOn配置。
我们将首先看一些基础知识,其中包括已经提到的三种技术的简要描述。
在AlwaysOn描述中使用了许多首字母缩写和缩写词。我们已经在本文末尾包含了一个常用术语的术语表。
如果没有进一步的讨论,让我们深入研究一下每一项技术。
Windows服务器故障转移集群
Windows服务器故障转移群集(WSFC)是位于所有微软高可用性应用程序之下的核心高可用性(HA)产品。WSFC是Windows Server操作系统软件套件的一部分。在创建SQL Server的故障转移集群实例、AlwaysOn高可用性组、甚至Microsoft Exchange邮件服务器集群之前,您需要部署和配置WSFC。
Windows服务器故障转移集群提供了将多个计算机节点(物理和虚拟)组合到一起来为高可用性提供服务的能力。应用程序是服务器软件,如SQL server或Exchange,我们希望能够在任何节点上运行。通过向客户端提供虚拟访问点(包括唯一的IP地址和惟一的计算机名称或“虚拟网络名称”),应用程序可以获得高可用性。此地址和虚拟名称在应用程序组中成为资源,并在参与节点(如令牌)之间传递。活动计算机节点的关键硬件故障将导致在该节点上运行的组服务丢失。集群服务将根据故障类型(硬件或软件)自动尝试在当前节点或伙伴节点上重新启动组。
在高级别上,客户端访问点细节将随任何磁盘和服务资源转移到故障转移合作伙伴节点。集群实例的故障转移导致客户端连接断开;当服务在另一个节点上可用时,客户端可能会重新连接。常见故障通常是其中之一,但是应用程序的任何失败都可能导致服务转移到另一个节点:
公共NIC或网络故障
电源故障
主板故障
CPU失败
WSFCs,集群的应用程序安装到单独的组或“应用程序”,它包含一组资源,如磁盘服务IP地址,等。该集团及其资源是由单个节点在任何一个时间,和资源不可以从任何其他伙伴节点除非计划开关或一个节点发生故障转移。
Windows服务器故障转移集群的典型视图如下所示。集群节点都由网络连接,域控制器和DNS服务与WSFC一起工作,允许客户端连接到虚拟IP或虚拟网络名称,不管服务实际运行在哪个节点上。
为了部署FCI,计算机节点必须使用呈现给每个节点的共享存储,通常来自SAN。为了部署典型的AlwaysOn组,节点使用它们自己的本地存储,这与其他集群伙伴不共享。
尽管集群节点可能拥有完全不同的硬件,但通常最好保持跨节点的硬件一致性,以避免任何情况下,较弱的节点必须处理超出其能力的负载。但是,节点必须使用相同的OS补丁级别和网络配置;在部署Windows服务器故障转移集群之前,验证您的配置时,这将变得很清楚。在Windows Server版本(Windows 2003中8个节点,Windows 2008的16个节点和Windows 2012的64个节点)之间,最大的群集节点数是不同的。
部署健壮的Windows服务器故障转移集群需要仔细的设计、支持的硬件和Windows服务器操作系统的适当版本。地理上分散的集群(跨多个WANs的集群)进一步增加了设计和计划所需的数量,并显著增加了成本。
重要的是要知道WSFC只提供故障转移合作伙伴功能。应用程序不负载均衡或跨节点缩放。每个服务只在一个节点上运行。
通常,在大型多节点集群中,您在Windows服务器故障转移集群节点的一个子集上安装集群应用程序。错误地在所有节点上安装应用程序可能会导致一些不理想的failovers,我们稍后会看到,这也违反了AlwaysOn组限制策略,它确保了所有AlwaysOn实例都在集群中的单独节点上进行了homed。
WSFC需要某种形式的中介来控制集群资源的所有权。此中介以群集仲裁的形式提供。自Windows 2003 SP1以来,这个Quorum以节点投票系统的形式获得了维持Quorum所需的多数票。您还可以在磁盘的形式中使用附加的仲裁资源,用于本地化的集群或远程文件共享,用于多站点集群。从2012年的Windows Server开始,Quorums利用动态节点权重配置在计划停机期间动态平衡集群投票,以防止不必要的failovers。我们将在以后的水平上更详细地讨论Quorums。
故障转移集群实例
SQL Server的故障转移集群实例一直是SQL Server产品中流行的高可用性技术。为了减轻任何节点硬件故障和任何潜在的软件故障,集群中有一个高度可用的SQL服务器实例。这里唯一的薄弱环节是存储;存储子系统成为单点故障。
故障转移集群实例是SQL Server、default或named的一个实例,它已被安装到WSFC上,作为集群应用程序。集群应用程序通常有以下资源:
IP地址
网络名称
共享磁盘(年代)
SQL Server服务
SQL Server代理服务
一个独立的实例共享相同的基本需求,除了独立的实例之外,IP地址和Networkname来自计算机节点本身,而磁盘存储则由计算机的本地磁盘资源提供。
在上面的图中,我们看到一个典型的2节点集群视图,其中有一个FCI。SQL Server的集群实例将利用已呈现给WSFC节点的任何共享存储。通常这种存储方式是由SAN提供的lun的形式。一个SQL服务器的FCI部署在一个2步过程中,该过程将在稍后的楼梯中被覆盖。现在,这里是对部署SQL Server的故障转移集群实例的两个步骤过程的基本概述:
在第一个将参与FCI的计算机节点上启动“新的SQL Server故障转移群集安装”向导。一旦完成并成功完成,您就可以进入第二阶段了。
在您希望参与的新SQL Server FCI中,在WSFC中的任何计算机节点上启动“添加节点到SQL服务器故障转移群集”向导。
注意:尽管标准版将FCI限制为2个节点,但这并没有规定有多少个节点拥有Windows集群的成员(您可能拥有最多的操作系统最大值)。限制是在SQL Server安装程序级别执行的。
一个FCI有点像一个正在运行的轨迹接力队的交接过程;计算机节点拥有集群的SQL服务器应用程序和它的资源,然后提供对客户端到SQL Server服务的访问(持有接力棒)。当活动的计算机节点(接力棒掉落)失败后,伙伴节点就会介入并获取集群应用程序及其资源的所有权(接上接力棒)。
AlwaysOn可用性团体
多年来,故障转移集群一直是提供高可用性的SQL Server的主要方法。当一个节点失败时,另一个节点接管向客户端提供SQL Server服务。AlwaysOn集成了Windows服务器故障转移集群技术,以提供一个更有弹性的高可用性平台。
然而集群在实例级工作,AlwaysOn在数据库级别上配置。AlwaysOn Availability Groups是SQL Server 2012中引入的一种新技术,它将预先定义的数据库组复制到一组只读伙伴实例(或称为副本),因为它们在AlwaysOn中是已知的。多个节点每个宿主都是AlwaysOn数据库的同步副本,访问最好由侦听器的配置提供(稍后将对此进行详细介绍)。
AlwaysOn可用性组需要一个或多个辅助副本来托管高可用数据库的副本。这些辅助数据库可能是可读的或者不是可读的。它们也可以以异步或同步方式更新。异步复制只支持手动强制的failovers,而同步副本支持自动或手动的failovers。
次要的只读副本可能被配置为响应只读查询,您也可以针对次要服务器的备份\维护操作来减轻主数据库的压力。这种初级到二级关系也是可逆的,以确保真正的高可用性。任何只读合作伙伴在系统中出现故障时,适当配置的对象可能会承担主要角色。
AlwaysOn依赖于WSFC核心功能来实现AO提供的高可用性,但是不需要任何与FCI相关的共享资源。
共享磁盘
共享IP地址
共享的网络名称
共享的SQL Server和SQL Server代理资源
这个共享资源规则有一个例外。创建AlwaysOn group侦听器时,将创建一个IP地址和网络名称资源,由AO组副本共享。
正如我们已经发现的,故障转移集群实例链中的薄弱环节是共享存储。这里有很多实现冗余的方法,但通常都要付出很大的代价,而且通常很难设置和维护。当然,正如前面提到的,故障转移集群实例只会减轻服务器硬件。它不提供一个甚至多个辅助数据库。在SQL Server 2012之前,我们在SQL Server版本中有数据库镜像,但这些只是为单一的、不可读的辅助数据库提供了范围。
AlwaysOn仍然使用熟悉的SQL服务器端点进行实例通信。当使用可用组部署向导时,将自动配置端点。向导驱动的部署提供了最简单的部署路径,而手动部署则需要大量的手动交互。尽管如此,基本的AlwaysOn组配置仍然非常容易部署和配置,并且提供了以前无法使用的HA级别,而不必使用复杂的功能集成级别。
您还可以创建一个高可用的侦听器服务,您将使用它来接收到可用组的传入连接。侦听器由唯一的IP地址和唯一的虚拟网络名称组成。到目前为止,这是使组内数据库高度可用的最显著的变化之一。
在创建AlwaysOn可用性组时,在Windows服务器故障转移集群中创建集群角色,并包含一个资源。在AlwaysOn组故障转移期间,该资源在伙伴节点之间失败,并标识AlwaysOn组的主副本。
AlwaysOn侦听器
在配置时,侦听器将作为资源创建,并驻留在AlwaysOn可用性组的故障转移集群应用程序中。的资源是:
虚拟IP地址
虚拟网络的名字
侦听器使用TCP端口接受传入连接,默认情况下连接到主副本。当只读路由被配置时,与指定只读意图连接的侦听器的连接将被路由到次要合作伙伴而不是主副本。这是另一种方法,可以减轻主副本的负载。
在AlwaysOn组的故障转移过程中,集群应用程序及其资源在集群中的节点之间失败。集群应用程序的节点位置跟踪主副本及其底层节点,并根据需要在集群中移动。在主副本是SQL Server的集群实例的地方,侦听器为该FCI \副本的活动节点拥有。
结论
这是楼梯的第一级,它提供了3种核心技术的快速介绍,用于使我们的SQL Server实例及其对象具有高可用性。在我们的高可用性堆栈中,我们将WSFC作为基本级别,这是安装FCI或AlwaysOn可用性组的主要要求。接下来是FCI,它位于WSFC之上,并依赖于集群来服务和保护SQL Server实例。最后,我们有AlwaysOn group,它位于SQL Server和\或SQL Server的故障转移集群实例的独立实例之上。
在第2级,我们将查看可用的存储类型及其在SQL Server高可用性中的典型用法。这将帮助您了解本系列未来的楼梯水平。
术语表
AO
AlwaysOn可用性组
FCI
SQL Server的故障转移群集实例
TCPIP
传输控制协议/互联网协议。微软客户端网络使用的网络协议
OS /号
网络操作系统
WSFC
Windows服务器故障转移集群
局域网
局域网
湾
广域网
DNS
域名系统
DHCP
动态主机配置协议,自动分配IP地址到网络计算机
IP地址
一个32位(IPV4),唯一分配给计算机对象的地址
广告
活动目录,目录服务。Microsoft技术用于Windows域中的对象管理
博士
灾难恢复
防晒系数
单点故障
SCSI
小型计算机系统接口
iSCSI
Internet小型计算机系统接口
足球俱乐部
光纤通道
副本
SQL Server AlwaysOn可用性组中使用的术语用于引用一个特定AlwaysOn组的一部分的SQL Server实例
修改翻译结果
试试有道人工翻译?
精选同行业资深译员,专家审校润色,让你尊享快捷又准确的人工翻译!
立即体验