Linux下的高可用性方案研究

保证持续稳定的系统运行时间变得越来越重要,而传统意义上的小型机系统让普通用户望而却步。用户需要的是更高的可用性以及更低的成本。高可用性(HA)技术能自动检测服务器节点和服务进程错误、失效,并且当发生这种情况时能够自动适当地重新配置系统,使得集群中的其他节点能够自动承担这些服务,以实现服务不中断。
Cluster应用可分为三方面:High-Availability(HA)(高可用性集群)、Load Balance(负载均衡集群)、Scientific(科学集群)。在集群的这三种基本类型之间,经常会发生混合与交杂。于是,可以发现高可用性集群也可以在其节点之间均衡用户负载,同时仍试图维持高可用性程度。同样,可以从要编入应用程序的集群中找到一个并行群集,它可以在节点之间执行负载均衡。而本文则侧重于介绍基于Linux的HA解决方案方面的问题。
基于LVS的HA方案 Linux要进入高端市场就必须在这方面有相应的措施,所以许多公司都在这方面加大了研究力度。现在,我们可以使用一些现存的软件去构筑具有高可用性的LVS系统。下面列出两种方案,以供参考。
[方案一]mon+heartbeat+ fake+coda
我们可以使用“mon”、“heart beat”、“fake”和“coda”四个软件来构筑具有高可用性的Virtual Server(虚拟服务器)。“mon”是一个大众化的资源管理系统,用来监控网络上的服务器节点和网络服务。“heartbeat”实现在两台计算机间通过在串行线上使用UDP协议传送“心跳信息”。“Fake”是一个使用ARP欺骗的方法来实现IP接管。
当服务器故障时,处理过程如下:“mon”进程运行在负载均衡器上,负责监测整个集群的服务器节点和服务进程。在配置文件“fping.monitor”中写入要检测服务器节点,然后“mon”进程将会隔t秒检查一下相应的服务器节点是否还活着。
另外相关的服务监视器也要做相应的配置,这样“mon”进程将每m秒检测一下所有节点的相应服务进程。例如:http.monitor:用于配置监控http服务;ftp.monitor:用于配置监控ftp服务;以此类推。当配置完成后,某个服务器节点失效或重新生效、服务进程失效或重新生效时都会发送一个通告信息,因此,负载均衡器能够知道服务器节点是否能接受服务。
现在,负载均衡器成为了整个系统的单点失效。为了防止这一现象,我们必须安装一个负载均衡器的备份服务器。“fake”软件实现当负载均衡器失效时,备份服务器自动接管IP地址,并继续服务。而“heartbeat”则随时根据负载均衡器的状态自动激活/关闭备份服务器上的“fake”进程。在负载均衡器和备份服务器上都运行着一个“heartbeat”进程,它们通过串行线周期性地发送“I'm alive ”消息。如果备份服务器在一个预定时间内接收不到来自负载均衡器的“I'm alive”信息时,将自动激活“fake”进程接管负载均衡器的IP地址,并开始提供负载均衡服务;而当再次收到来自负载均衡器的“I'm alive ”消息时,备份服务器将自动将“fake”进程关闭,释放出它接管的服务器,负载均衡器重新开始工作。
但是,如果负载均衡器在客户正在请求时失效,这时会引起客户请求失败,客户必须重新发出请求信息。
“coda”是一个容错的分布式文件系统,源于Andrew文件系统。服务器上的目录能够存储在“coda”上,所以文件能够实现高可用性,并且易于管理。
[方案二]ldirectord+heartbeat
“ldirectord”(Linux Director Daemon)是Jacob Rief编程实现的一个独立进程,以实现对服务和物理服务器的监测,广泛地用于http和https服务。
“ldirectord”安装简单,能很好地与“heartbeat”配合工作。“ldirectord”程序包含在“ipvs”包中的“contrib”目录中。
以下是“ldirectord”的一些优点:
“ldirectord”是专门撰写的LVS监测程序。
它从/etc/ha.d/xxx.cf文件中读取所有关于IPVS路由表的配置信息。当“ldirectord”运行起来后,IPVS路由表将会被适当地配置。
可以将Virtual service配置放在多个配置文件中,所以可以单独修改某一种服务的参数,而不影响其他的服务。“ldirectord”能被“heartbeat”轻松地管理----启动、关闭。
将“ldirectord”放到/etc/ha.d/resource.d/目录下,然后在/etc/ha.d/haresources中增加一行:
node1 IPaddr::10.0.0.3ldirectord::www ldirectord::mail
“ldirectord”能够手动开启、关闭。可以在无备份负载均衡器的LVS集群中使用它。
Xlinux的LATCH HA方案 正如前面所述,高可用性解决方案(HA)是极为重要的,许多厂商为此投入了大量的研究。其中,Xlinux发行版就提供LATCH HA解决方案。下面我们就一起看看LATCH HA方案。
LATCH HA解决方案的最典型的系统结构:两台主机A、B共享一个磁盘阵列,A为工作机,B为备份机。它们之间用一根心跳线来连接,这称为“心跳检测”,主要通过一条RS232检测链路来完成。LATCH HA也采用了用Ping来验证系统宕机的方法。安装在主机上的HA软件通过心跳线来实时监测对方的运行状态,一旦正在工作的主机A因为各种硬件故障导致系统发生故障,主机B立即投入工作。怎么样,与IBM的HACMP有点像吧!
LATCH HA实现了“高可靠性共享存储”架构。该架构由两个或三个冗余服务器、一个共享冗余磁盘阵列、一个可选DBMS及LATCH HA系统软件构成。在LATCH HA的保护下,企业的计算机系统能够提供不间断的信息服务,避免由于硬件故障或日常维护所带来的宕机,因而能够保障最佳的可靠性及最大程度地减少宕机时间。
方案应用
LATCH HA能够应用在各种集中式、客户机/服务器模式或OLTP系统中。同时其与市场上各种主流的数据库系统与OLTP软件(如:Oracle、SYBASE、Informix、Tuxedo)也都保持兼容。LATCH HA同时提供了各种应用程序接口。因此,客户能够在其私有软件中集成各种功能来保证系统的高可靠性。
LATCH HA /HS2000 在线待机模式
在这种模式下,一个服务器作为主服务器。正常情况下其承当所有的服务。另外一台服务器作为待机服务器(正常情况下除了监控主服务器的状态,不进行其他的操作)。一旦主服务器宕机,待机服务器就接手工作,成为新的主服务器。客户仍然可以拥有同样的服务器IP地址、NFS、数据、数据库及其他……这种应用模式近似于上面介绍的典型应用模式(两台服务器实际上是在完成同一个功能应用),安装在主机上的HA软件通过心跳线来实时监测对方的运行状态,一旦正在工作的主机A因为各种硬件故障,如电源失效、主要部件失效或者启动盘失效等导致系统发生故障,主机B立即投入工作。
LATCH HA /DA2000双机就绪模式
在这种模式下,两个主机都作为主服务器,共享自己的磁盘阵列,各自承当一部分服务。例如:服务器A在执行应用A, 服务器B在执行应用B, 两个主机在正常情况下各自独立运行自己的应用逻辑,两个主机同时又都作为对方的待机服务器,通过心跳线监控对方的状态。一旦某一服务器宕机,另一台服务器就承担所有的服务,为所有的客户服务。一旦服务器A发生故障,服务器B马上接管服务器A上原来的应用;或者服务器B发生故障,服务器A马上接管服务器B上原来的应用,这是一种互为冗余的模式。
很明显,一旦某一服务器宕机,另一台服务器的工作负担就比较重,于是就有了三主机模式。
LATCH HA /HC2000 三主机模式
这种应用模式是最高端的HA应用模式,它既保证了系统的设备冗余,避免系统宕机,而且又能保证在一旦宕机的情况下有足够的系统资源可供使用。
在这种模式中,待机服务器C同时监控主服务器A与B的状态。一旦服务器A或B宕机,服务器C将承担其服务,为客户服务。这种系统结构既保证了系统的安全运行,又保证了系统资源。
Linux HA的解决方案当然不限于上述两种,但其核心思想是一致的,即提供不间断的服务。近年来随着Linux操作系统不断走向成熟,功能不断增强,特别是其遵循GPL和标准化的PVM、MPI消息传递机制的特性和在普通PC机上越来越好的高性能网络的支持,所有这些为基于Linux的集群系统的发展提供了坚实的技术基础,在把技术转化为具体的应用过程中,高端的HA应用以其稳定可靠的性能和与Unix相比价格上的优势而脱颖而出。随着基于Intel平台的服务器业已成为关键性业务和应用的主流服务器,Linux HA集群技术的应用亦将日益广泛。

HA集群结构图
HA实际上是两台(或更多)计算机通过一定方式互相监听,实现热备份。当其中Primary server出现问题时,Standby server能够自动立即接替工作,使用户感觉不到停机。在Primary server恢复正常之后,Standby server又会把工作还给Primary server。(出处:赛迪网)

时间: 2006-10-23

linux下执行java程序的sh脚本分享

今天大概耗费了快一天的时间研究怎么用脚本执行java程序,终于实现了,分享一下 (1)在linux下写一个.sh文件 (2)文件内容如下: 复制代码 代码如下: #!/bin/sh         //bash文件头 APP_HOME=/home/blmcrm/crm/A      //要执行的java文件中bin文件的上一个目录,我的目录是/home/blmcrm/crm/A/bin/blm......(后面不写了),总之就是写bin目录前面的部分,因为jar包在bin目录里面,如果不在bin

Linux下CoreSeek及PHP扩展模块的安装

本人安装CoreSeek的系统为Centos6.0  CoreSeek版本: coreseek 3.2.14:点击下载   PHP:PECL/Sphinx扩展:sphinx-1.2.0.tgz  点击下载 .这些软件是都是源码包,我们是要通编译进行安装的. 前提条件是系统己安装完成apache mysql php的WEB服务.我是以yum来安装的.如果你没有安装过请按照下面给出的链接先完成基本的LAMP环境的安装. LAMP安装教程:http://www.jb51.net/article/313

详解linux下安装python3环境

1.linux下安装python3 a. 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件) yum groupinstall 'Development Tools' yum install zlib-devel bzip2-devel openssl-devel ncurses-devel 2 下载 Python3.5代码包 wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz

Windows和Linux下使用Python访问SqlServer的方法介绍

经常用Python写demo来验证方案的可行性,最近遇到了Python访问SqlServer的问题,这里总结下. 一.Windows下配置Python访问Sqlserver 环境:Windows 7 + Sqlserver 2008 1.下载并安装pyodbc 下载地址:http://code.google.com/p/pyodbc/downloads/list 2.访问SqlServer 复制代码 代码如下: >>> import pyodbc >>>cnxn = p

Linux下C开发环境的构成和安装

文/余海发 本文介绍了Linux的C开发环境的构成和安装,使读者对Linux的C开发环境能有初步的了解. 你了解Linux吗?相信现在越来越多的人会说"是"的.那么你了解到何种程度呢?不可否认,目前决大多数的Linux用户对Linux的了解还处于比较低级的层次,他们可能会几条命令.会配几种服务.会用rpm来安装软件.会操作KDE/Gnome界机等等,但是当他们遇到一些需要编译安装的软件时,面对一些简单的出错信息,他们就手足无措了.要想真正跨跃这些初级层次,你就不可能不去了解一些底层的东

VNC:Linux下的远程遥控专家

在微软Windows操作系统中的远程控制工具软件非常多,其中大家最熟悉的莫过于赛门铁克公司的PC ANYWHERE,还有CA ControlIT等等.这些远程控制工具软件都可以通过网络来控制特定的计算机,可以共享那台计算机的数据资料,操作该计算机上的外部设备. 既然在Windows下的远程控制软件如此出色,那么在Linux平台中是否有好用的一次控制工具软件呢?实际上,在Linux操作系统平台中也是存在几款功能强大的远程控制工具软件的,只是这些软件非常少,使用的用户也不是很多,所以一般的Linux

基于Linux下Nagios的安装与配置说明介绍[图]

一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知. Nagios原名为NetSaint,由Ethan Galstad开发并维护至今.NAGIOS是一个缩写形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻译为圣徒

linux下system函数的简单分析

简单分析了linux下system函数的相关内容,具体内容如下 int __libc_system (const char *line) { if (line == NULL) /* Check that we have a command processor available. It might not be available after a chroot(), for example. */ return do_system ("exit 0") == 0; return do

Linux下的网络监听技术之一

前言:在网络中,当信息进行传播的时候,可以利用工具,将网络接口设置在监听的模式,便可将网络中正在传播的信息截获或者捕获到,从而进行攻击.网络监听在网络中的任何一个位置模式下都可实施进行.而黑客一般都是利用网络监听来截取用户口令.比如当有人占领了一台主机之后,那么他要再想将战果扩大到这个主机所在的整个局域网话,监听往往是他们选择的捷径.很多时候我在各类安全论坛上看到一些初学的爱好者,在他们认为如果占领了某主机之后那么想进入 它的内部网应该是很简单的.其实非也,进入了某主机再想转入它的内部网络里的其