Linux下的高可用性方案研究_unix 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。(出处:赛迪网)

时间: 2024-10-19 12:24:47

Linux下的高可用性方案研究_unix linux的相关文章

VNC:Linux下的远程遥控专家_unix linux

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

Linux下的压缩文件剖析_unix linux

    对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rap.可是Linux就不同了,它有.gz..tar.gz.tgz.bz2..Z..tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip和.rar的人就太少了.本文就来对这些常见的压缩文件进行一番小结,希望你下次遇到这些文件时不至于被

轻松实现Linux下的互联网过滤功能_unix linux

目前,很多学校都建起了校园网并连接上互联网,但互联网上的不良信息非常多,如何进行网站过滤,防止不健康网站对学生的影响呢?以下本着零成本.高效益的原则,谈谈在免费的Linux下如何实现互联网的过滤功能. 设置代理服务器 校园网通过Linux上网,在网关上利用Squid架设代理服务器. 首先要安装好Linux,我用的是易装好用的RedHat Linux 7.2.在安装RedHat Linux 7.2时,Squid已同时安装好,我们只需简单的配置一下就能使用. RedHat Linux 7.2安装后默

linux下输入长文件名小技巧_unix linux

    这个小技巧其实是写给新手们的,老手们恐怕会嗤之以鼻,而且我还不能算什么老手,如此看来似乎确实有些不妥.但是又转念一想即使是新手也未必不能给新手介绍一些自己的经验.俗话说的好,愚者千虑必有一得,况且大侠们对一些小技巧早已喑熟,他们恐怕不屑写这等鸡毛蒜皮一般的小文章,可是我等广大之linux 爱好而又刚刚入门者掌握这个有用的小技巧又是十分必要,因为它们可以大大简化我们的工作量.但是这方面的小技巧又很少被人提及,至少我是费了不少气力才得到的.因为这个理由才使得我有动力来写本文. 如果你是一个没

独辟蹊径:实现Linux下的局域网远程接入_unix linux

本文介绍一种利用Linux服务器的两个串口构建拨号服务器的方法,远程用户可以通过拨号连接到局域网,方便地进行信息传递和资源共享. 笔者的配置环境是Red Hat 8.0 Linux操作系统,所需的硬件包括两个外置Modem(分别连接到COM1和COM2端口)和两条电话线.实现步骤如下: 1.初始化串口设备 在/etc/inittab文件中加入如下两行,用来初始化ttyS0和ttyS1两个串口设备: S0:345:respawn:/sbin/mgetty -D -X 3 ttyS0 S1:345:

Linux下即插即用设备的安装_unix linux

即插即用,在Linux底下?不好办,你还是换老的非即插即用设备吧.这是我初次接触Linux时,那些Linux高手们告诉我的.可是,我觉得总该有办法的.经过不懈的努力,我发现了两种方法.一是先从DOS启动,初始化设备后,再用loadlin加载到Linux中.但这不是我所梦寐以求的,因为每次需要大量时间来启动.我继续不停的寻找,终于有一天,我找到了我需要的东西,一个称为isapnptools的应用程序. 现在,大多数发行套件中都有isapnptools.如果你的套件中有,安装它即可.如果你的发行套件

linux下改变键盘映射解决方案_unix linux

linux xmodmap修改键盘映射Caps_Lock和Super_L互换 换awesome窗口管理器去了.由于ubuntu的unity还是不太稳定.偶尔卡住半天,受不了果断会曾经的awesome.话说用Win/Super的时候太多了.琢磨了半天还是不太习惯,想着还是把Caps lock和super给换一下. 用~$ xev |grep keycode 按要互换的两个键的到以下信息: 1 state 0×50, keycode 133 (keysym 0xffeb, Super_L), sam

Linux下中文字体的安装_unix linux

1.首先禁用xfs服务器. 运行Setup命令,在服务项中中止xfs随系统运行的特性.之所以禁用xfs服务器主要是因为xfs会自动更新字体目录下的fonts.dir文件,从而影响我们所做的修改. 2.将选中的字体拷贝到相关的目录. 一般选用simsun.ttf为基本的字体(据说该字体为最精美的中文字体).将这些字体拷贝到 /usr/share/fonts/default/TrueType下,生成fonts.dir 和 fonts.scale文件. 在所在的字体目录下运行:ttmkfdir > f

Linux下批量修改文件编码_unix linux

假设需要将所有ipaddr目录下的php文件,编码从gb2312转到utf8 cd ipaddr  find ./ -type f -name "*.php"|while read line;do  echo $line  iconv -f GB2312 -t UTF-8 $line > ${line}.utf8  mv $line ${line}.gb2312  mv ${line}.utf8 $line  done  上面脚本将当前ipaddr目录下的所有php文件,从gb2