[150_分布式]分布式技术大盘点之——双机热备

本文提纲

  作为一名软件开发工程师,笔者一直很好奇当今互联网企业是如何应对高并发、高可用、大数据、弹性计算这些问题?虽然笔者没有任何需求。但怀着好奇,于是通过在网上看各种论文、PPT讲义、博客等等,窥见不少解决这些问题的方案与开源软件。作为对学习的总结,写在这里供各位博友当做茶余饭后的看资。笔者亲身实践的内容较少,大部分停留在理论研究层面。如有疏漏错误,还请博友不吝赐笔,共同进步。

 

第一章   关于垂直扩展和水平扩展

  对FaceBook来说,项目初期或许大学宿舍里一台普通的笔记本就能满足需求,但随着用户的增多,就不得不更换更好的机器,机器性能的提升就是垂直扩展。当单台机器无法满足我们的需求,比如成本太高,这时候,我们就有了横向扩展。当计算能力从垂直扩展过渡到横向扩展,涉及到的技术点呈指数级增加。下面就让我们一起看看当今互联网大企业遇到的问题。

 

第二章  双机热备

  2.1 双机热备

       双机热备是一个很老的概念,较为正式的说法是High Available(高可用),这种业务的需求在很久以前就出现了。而在开始阶段,经典的客户与服务器之间的关系如下图。

 

图2.1.1 单服务器拓扑

      这也是我们平时编写程序时使用的网络拓扑,把自己写的程序放到一台服务器上,让这台服务器为我们提供服务。但是生产环境和开发环境不一样,生产环境要求服务器能够7x24小时的不间断服务。这个时候我们很自然的想到下面这样的高可用拓扑布局,毕竟两台机器同时坏掉的概率要小很多。

[150_分布式]分布式技术大盘点之——双机热备_第1张图片 

图2.1.2 双服务器拓扑

     构建了图2.1.2的双服务器拓扑之后,我们需要解决三个问题。

  1. 对外IP唯一
  2. 数据不丢失
  3. 心跳侦测

     首先,对外IP唯一这一问题,可以通过“虚拟IP”这一技术解决,虚拟IP是一个对外的IP地址,在内部,它指向两台物理机器的实际IP地址,而解析过程由HA软件来解决。

     其次,对数据不丢失这一问题,有软件自身来解决,再厉害的HA软件也不可能知道你的应用数据,针对这个问题,我们既可以自己编写程序来解决,比如同步等。如果资金充裕,也可以搭建专用的具有备份功能的磁盘阵列RAID。

     最后,关于心跳侦测,这是为了使得备份机能够及时发现主机的工作情况。这用一个简单的Socket程序就可以搞定,也有用串口通信来解决的。不过,HA软件一般都为我们提供了这样的服务。

 

  2.2 双机热备的两种模式

     1.主机/备份机

     主机/备份机方式是传统的双机热备份解决方案,主机运行时,备机处于备用状态,当主机故障时,备机马上启动将服务接替。因备机平台没有其它的访问量,所以故障切换后用户访问速度不会有大的影响,此种容错方式主要适用于用户只有一种应用,主备机设备配置不太一样,并且用户访问量大的情况。

[150_分布式]分布式技术大盘点之——双机热备_第2张图片 

图2.2.1 主机/备份机模式

     2.主机/主机

     这种方式的主备机平时各自有一种应用运行,当系统中的任何一台主机出现故障,应用都会集中到一台服务器上运行,此时这台备用服务器不仅要承担以前的程序运行而且还要运行宕机服务器上的应用程序,所以此时备机的负担会加重。这种方式的故障切换往往会造成备机访问量增大,系统运行变慢。此方式主要适合用户有不只一种应用,用户主备机配置一样且数据访问量不大的情况。

[150_分布式]分布式技术大盘点之——双机热备_第3张图片 

图2.2.2 主机/主机模式

 

  2.3 双机热备常用商用软件

  • NEC Expresscluster
  • 微软MSCS
  • Symantec VCS
  • Legato
  • LifeKeeperEMC Autostart
  • 红帽RHCS
  • Rose HA 软件

 

 2.4 双机热备的一个开源Linux方案

     在开源的世界里,有一个方案被很多企业使用,那就是Heartbeat+DRBD。

     Heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。

     DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。其他所需的组件有集群成员服务,如TurboHA或心跳连接,以及一些能在块设备上运行的应用程序。

     简单的说,就是Heartbeat负责心跳检测,DRBD负责数据同步。这样一个组合可以很好的满足我们的高可用需求。

 

 2.5 小结

     本文介绍了双机热备的业务场景以及一些常用的HA软件,希望对博友有用处。

你可能感兴趣的:([150_分布式]分布式技术大盘点之——双机热备)