码迷,mamicode.com
首页 > 其他好文 > 详细

11.1 高可用性与网络负载均衡

时间:2015-05-01 01:57:59      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:高可用

11.1  高可用性与网络负载均衡


11.1.1 高可用性的概念

  高可用性(High-Availability)是一系列的技术总和,用来减少宕机时间和增加对业务数据的保护。

  在规划高可用性时需要综合考虑以下两个因素:

● RTO(Recovery Time Objective,即目标恢复时间)

  RTO 表示业务系统容忍多少宕机时间,通常用以下公式进行计算,值越大则表明系统宕机时间越少。例如,对于一个 24*365 运行的业务系统,99.999% 表示每年宕机时间不超过 5 分钟。

技术分享

  当然,正常预定的维护时间(即窗口)一般不计入宕机时间。例如,营业时间仅限于从上午7点到晚上10点(即7*15)的业务系统,在下班后进行停机维护的时间不算在宕机时间之内。


● RPO(Recovery Point Objective,即目标恢复点)

  RPO 表示容忍多少数据丢失。通常只要做好备份,就可以使数据不丢失。但当灾难发生时,从备份进行恢复的操作会导致数据库在现阶段不可用,如果恢复的时间特别长,造成的损失可能比丢失少量数据更严重。特别对于数据量非常大的数据库,更需要预先考虑到恢复时间和数据丢失之间的权重而制定充足的预案。


  通常 RTO 与 RPO 两者之间存在冲突,需要根据业务需求、投资规模等多方面因素来权衡,从而制订 SLA(Service Level Agreement,即服务水平协议)。



11.1.2  AlwaysOn 高可用性解决方案

  从 SQL Server 2008 开始,微软在“高可用”、“灾难恢复”技术中使用 AlwaysOn 一词。在 SQL Server 2012 中,微软明确地打出的 AlwaysOn 招牌。

  SQL Server AlwaysOn 即“全面的高可用性和灾难恢复解决方案”。使用 AlwaysOn,可以提高应用程序可用性,并且通过简化高可用性的部署和管理方面的工作,获得更好的硬件投资回报。

  SQL Server AlwaysOn 在以下2个级别提供了可用性。

● 数据库级可用性

  AlwaysOn 可用性组允许将一组数据库同步到最多4个只读副本,这是SQL Server 2012 引入的新特性。SQL Server 2014 将只读副本的数量提升到8个。

  AlwaysOn 可用性组是一种“热备份”技术。主服务器的数据被自动同步到其它副本,主数据库与辅助副本之间基本上可以保持实时同步。当系统监测到主服务器发生故障时,辅助副本可以立即成为新的主服务器。


● 实例级可用性

  AlwaysOn 故障转移群集实例可以在最多16个节点(企业版才支持16个节点,标准版只支持2个节点)间实现故障转移(Fail-over)。

  故障转移群集是一种“冷备份”技术。辅助节点并不从主节点同步数据,唯一的一份数据被保存在共享存储中。当主节点发生故障时,辅助节点提升为主节点并获取共享存储中的数据,然后才在这个新的主节点服务器中启动 SQL Server 服务。



11.1.3 其它高可用性解决方案

● 数据库镜像

  数据库镜像 是SQL Server 2005 SP1 正式引入的一项数据库级的高可用性技术。

  镜像是一种“暖备份”技术。主体服务器与镜像服务器同时运行着 SQL Server 服务,镜像服务器从主体服务器获得备份数据后立即进行还原,同时也会获得少量的元数据。当主体服务器发生故障时,镜像服务器可迅速加载所需的所有元数据,然后成为新的主体服务器。

  数据库镜像技术存在着许多不足,因此 SQL Server 2012的联机手册就已经申明将在未来的版本中取消镜像技术。


● 日志传送

  日志传送依赖于传统的 Windows 技术与 SQL Server 代理。

  主服务器定期产生一个备份文件,辅助服务器再定期通过访问 Windows 文件夹从而读取并复制这些备份文件然后定期恢复到本地的数据库。实际上,日志传送技术只是分别在主服务器和辅助服务器上实现了自动备份与自动还原而已。


● 其它辅助技术

  对数据库进行备份,当出现故障时,手动将数据还原到服务器,使得数据库重新联机,这也可以算作实现高可用性的一种技术手段。

  复制并不算是一个高可用性解决方案,只是它的功能可以实现高可用性。复制通过“发布-订阅”模式,由主服务器向辅助服务器发布数据,使这些服务器间实现可用性。



11.1.4  网络负载均衡

  数据库引擎是一个特殊的 Windows 服务。为了实现事务,来自客户端的访问请求通常是有关联的并且存在着先后顺序,这个服务会在自身保存一些数据状态,因此这种类型的服务被称为“有状态的服务”(Stateful Service)。

  对于只读数据库,来自客户端的访问请求不需要实现事务,每个访问请求不依赖于其它访问请求。每次请求所需的全部信息都包含在这个请求里面,只读数据库提供的服务不需要保存客户端请求的数据状态,因此这种类型的服务被称为“无状态的服务”(Stateless Service)。

  Windows 的其它一些服务,例如 IIS(Internet Information Service)也可以设计成无状态的服务。此时,尽管 IIS 服务不需要保存客户端请求的数据状态,但 IIS 服务可以从外部(例如,数据库)获取。

  通常,无状态的服务可以实现池化,即将多个同类型的服务创建为一个应用池(Application Pool),通过一些算法将客户端的请求均衡地分摊到多个服务。这种横向扩展的技术可以称为网络负载均衡(Network Load Balancing,简称 NLB)。

技术分享


  负载均衡给客户端的感觉就像高可用技术一样,保持了业务的连续性。例如,客户端连接到IIS池,池中的某台 IIS 服务器发生故障后,客户端的连接被重定向到池中的其它 IIS 服务器。

  高可用技术中兼具一部分的负载平衡功能。例如,AlwaysOn 可用性组的辅助副本可以提供只读访问,从而分摊一部分的只读访问请求给报表等应用程序。



本文出自 “SQLServer2014丛书” 博客,谢绝转载!

11.1 高可用性与网络负载均衡

标签:高可用

原文地址:http://mssqlmct.blog.51cto.com/9951484/1641028

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!