(转)利用VMware实验基于heartbeat的Debian Linux高可用性集群服务

1083阅读 0评论2012-11-30 古丁高手
分类:

1、 什么是集群?    
简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资
源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从来不会意
识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且
集群系统的管理员可以随意增加和删改  集群系统的节点。   
集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群
系统的研究和开发。由于主要用于科学工程计算,所以这些系统并不为大家所熟知。直到
Linux 集群的出现,集群的概念才得以广为传播。集群系统主要分为高可用(High Availability)
集群,简称  HA  集群,负载均衡群集(Load  Balance  Cluster)和高性能计算(High  Perfermance
Computing)集群,简称  HPC  集群。
1.1 高可用性群集(High Availability Cluster)
高可用性群集的出现是为了使群集的整体服务尽可能可用,以便考虑计算硬件和软件的
易错性。如果高可用性群集中的主节点发生了故障,那么这段时间内将由次节点代替它。次
节点通常是主节点的镜像,所以当它代替主节点时,它可以完全接管其身份,并且因此使系
统环境对于用户是一致的。
常见的就是 2 个节点做成的 HA 集群,有很多通俗的不科学的名称,比如"双机热备", "
双机互备", "双机"。
1.2 负载均衡群集
负载均衡群集使负载可以在计算机群集中尽可能平均地分摊处理。这种负载可以一个程
序、一项服务,一个设备,也可以是网络流量负载。这样的系统非常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以
实现平衡。对于网络流量也是如此。通常,网络服务器应用程序接受了太多入网流量,以致
无法迅速处理,这就需要将流量发送给在其它节点上运行的网络服务器应用。还可以根据每
个节点上不同的可用资源或网络的特殊环境来进行优化。
1.3 科学群集
这种群集用来解决复杂的科学问题。这是并行计算的基础,尽管它不使用专门的由十至
上万个独立处理器组成的并行超级计算机,但它却使用商业系统,如通过高速连接来链接的
一组单处理器或双处理器  PC,并且在公共消息传递层上进行通信以运行并行应用程序。因
此,您会常常听说又有一种便宜的  Linux  超级计算机问世了。但它实际是一个计算机群集,
其处理能力与真的超级计算机相等,通常一套象样的群集配置开销要超过  $100,000。这对
一般人来说似乎是太贵了,但与价值上百万美元的专用超级计算机相比还算是便宜的。
2、 Linux-HA  项目(The High Availability Linux Project)
高可用性  Linux  项目,根据其目标声明,旨在为  Linux  提供高可用性解决方案,现在,
SUSE Linux, Mandriva Linux, Debian GNU/Linux, Ubuntu Linux, Red Flag Linux, and Gentoo
Linux.都带有 Heartbeat 软件,一些嵌入式的系统也使用了 Heartbeat。同时 Heartbeat 也可以
用在 FreeBSD 和 Solaris,甚至是 MacOS/X and OpenBSD 上。
Heartbeat 可以和 DRBD 实时磁盘复制软件,LVS(Linux Virtual Server)项目很好的集成,
工作在一起。Heartbeat 正在引领着 OCF(Open Cluster Framework)标准的实现。
项目中有可以维护节点间心跳并接管失败节点的  IP  地址的软件。如果一个节点失败,
它使用“伪造冗余  IP”软件包将失败节点的地址添加到工作节点以承担它的职责。于是,
可以在几毫秒时间内自动替换失败的节点。实际使用中,心跳通常在几秒范围内,除非在节
点之间有专用网络链接。因此,失败系统中的用户应用程序仍需要在新的节点上重新启动。
3、 我的实验环境:
一台接入 LAN 的 PC,CPU:P4  3.0,  内存:512MB,一块普通以太网卡。主操作系
统: winxp professional
VMware  WorkStation,在 VMware  WorkStation 上安装两个虚拟主机(也可安装并配置
好一台后用 VMÆClone 功能复制一台出来,这样更快捷,clone 后的主机要注意网卡 mac
问题,不行的话就删掉网卡,重新添加),操作系统为 Debian linux 4.0,主机硬件配置如图:
 
其它硬件如软驱,声卡可删去不要。装好 Linux 操作系统后,光驱也可删去。其中 Ethernet为“桥接”模式,Ethernet2为自定义模式,接在 VMNET2 上。
 
其中,VMware,Debian 的安装设置本文不涉及,本文重点介绍的是 hearbeat 的配置。
下图是本次实验的逻辑拓朴图:其中集群 IP 不能和 LAN(包括本机)的 IP 冲突,并
且不能在除/etc/ha.d/haresources 文件以外的任何地方配置。
LAN IP
Eth0的IP:
202.115.138.60
Eth0的IP:
202.115.138.66
Eth1的IP:
10.0.11.1
Eth1的IP:
10.0.11.2
Debian
Debian2
VMNET2
IP: 202.115.138.65
 
#说明:在 VMware 上的 Guest OS(debian)虚拟了2块网卡,一块和 Host OS(winxp)在同一交
换机,用于对外提供高可用性服务,另一块用于和其它节点发送心跳信息(通告彼此的运行
信息),连接在 VMware 的虚拟交换机 VMNET2 上,此交换机可以认为是独立的。
4、 HeartBeat 的配置
安装 heartbeat 除必要的编译器之外,需要其它一些软件的开发包支持:如 e2fsprogs 和libnet。所以手动通过源码安装有些不方便,本实验采取通过 Debian 下 apt-get 方式安装,可
以自动解决包依赖关系。
本实验环境下安装命令为
# apt-get install heartbeat
安装后要配置三个文件(如没有可手动建立):ha.cf、haresources、authkeys。这三个配
置文件需要在/etc/ha.d 目录下面,但是默认是没有这三个文件的,可以到官网上下这三个文
件,也可以在源码包里找这三个文件,在源码目录下的 DOC 子目录里。
4.1 Authkeys 文件的配置
配置文件的值如下:
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!          ##其中 Hello!为密钥
这个配置文件非常简单,就是在 auth 选择一个值。每个值对应一种算法,这个算法是在主
节点和从节点间数据校验用的。这个配置文件权限必须是 0600。
root@debian:/# chmod 0600 authkeys
对安全性高的,可以用命令自动生成随机密钥
root@debian:/# dd if=/dev/urandom count=4 2>/dev/null | openssl dgst -sha1
结果如下:
f9c85a048681dcbf47457065bbff62e32cec186d
4.2 haresources 文件的配置
此文件用于配置集群的 IP 和使用集群的服务。有以下几种配置方式
#配置方式一    ----------------------------------------------------------
#debian 202.115.138.65  
#把此地址用于集群,只要 HA 服务启动则此 IP 就将被自动配置到主节点上。
#配置方式二    -------------------------------------------------------
debian 202.115.138.65 apache
#让 apache 服务和此集群地址绑定,如 apache 或 HA 服务没有启动,刚此 IP 也不启用。
#配置方式三  ---------------------------------------------------------
just.linux-ha.org 135.9.216.110 135.9.215.111 135.9.216.112 httpd
#把 httpd 服务和这三个集群地址绑定
#-------------------------------------------------------------------
还有一种共享文件系统集群的配置方法见参考文献[5]。  
此配置文件中只要配置了上面的任意一种方式即可工作,本实验中采取配置方式二,即把
apache 服务集群。配置文件中其它选项不配也可工作。
4.3 ha.cf 文件的配置
auto_failback off #说明:主节点重启成功后,资源是自动拿回到主节点还是等到副节点 down 调后拿回资源
node debian
node bebian2
#说明:节点名称,与 uname  –n 保持一致。是否主节点与此位置的先后顺序无关。而是在
haresources 里指定。
#bcast eth0
#说明:采用 eth0 的 udp 广播用来发送心跳信息,建议在副节点不只一台时使用
ucast eth0 172.30.31.68
#说明:采用网卡 eth0 的 udp 单播来通知心跳,ip 应为对方 IP(未验证)
#mcast eth0 225.0.0.1 694 1 0
#说明:采用 udp 多播播来通知心跳,建议在副节点不只一台时使用
#注:广播,单播,多播,以上三种任选其一即可。
 
heartbeat 的三个配置文件中还有一些其它可配置项,但是比较关键的,比较容易弄错的就是
上面提到的这几项,有了上面这几项,可保证在 heartbeat 1.2 系列的版本上正常运行。如果
想要自己弄懂所有配置选项,那么自己参考:
中的文档,特别是《Getting Started with Linux-HA(heartbeat)》文档,不熟悉的情况下看官方
参考文档永远是个明智的选择。
5、 实验结果测试
在Host  OS  winxp上通过浏览器,访问Cluster  IP:,服务正常。同时在
主节点OS上,查看
# ifconfig -a | less
可发现 Cluster IP 被HA自动配置到了 eth0:0 上。
此时,关掉HA服务,或者关掉主节点,立即访问Cluster IP:,发现服
务中断,过大约30秒(时间可在/etc/ha.d/ha.cf )中配置,再次访问Cluster  IP :
,发现服务又正常了。而此时在备用节点2上,
# ifconfig -a | less
可发现 Cluster IP 被HA自动配置到了节点2的 eth0:0 上。
通过查看节点2上的日志,日志里记录了 heartbeat  接受到的心跳信息,还有依据信息采取
的措施。
# vim /var/log/syslog
摘录关键的几条日志如下:
z    11438 Jul 30 18:36:31 debian2 heartbeat[2002]: WARN: node debian: is dead
z    11451 Jul 30 18:36:32 debian2 heartbeat: info: /sbin/ifconfig eth3:0 202.115.138.65 netmask
255.255.255.0^Ibroadcast 202.115.138.255
z    11453  Jul  30  18:36:32  debian2  heartbeat:  /usr/lib/heartbeat/send_arp  -i  1010  -r  5  -p
/var/lib/heartbeat/rsctmp/send_arp/send_arp-202.115.138.65     eth3     202.115.138.65     auto
202.115.138.65 ffffffffffff
z    11455 Jul 30 18:36:32 debian2 heartbeat: info: Running /etc/init.d/apache    start
可看到,节点2发现节点1异常,然后自动将集群 IP 配置给自己,并向全网发送 arp 广播,
通知集群 IP 与本机 Mac 的对应起来,最后启动 apache 服务。 6、 结论
通过自己实验,发现 heartbeat 集群存在一些不完善的地方,比如:
1、 主节点1apache 服务异常,OS 正常时,节点2并不能自动替换节点1工作,即使不在
cluster ip  上绑定 apache 服务也不行。
#配置方式一    -------------------------------------------------------
debian 202.115.138.65  
#把此地址用于集群,只要 HA 服务启动则此 IP 就将被自动配置到主节点上。
2、 如果选用配置方式二时
#配置方式二    -------------------------------------------------------
debian 202.115.138.65 apache
#让 apache 服务和此集群地址绑定,如 apache 或 HA 服务没有启动,刚此 IP 也不启用。
一定要保证 IP 后面的服务名在以下 2 个目录有,而且可用。如果没有同名,那整个集群将
不能正常工作,culster ip 将不被配置到任何一个节点上。
以下摘录 heartbeat 官方对此的说明:
linuxha1.linux-ha.org 192.168.85.3 httpd smb      # haresources 配置文件
#Note:  httpd  and  smb  are  the  name  of  startup  scripts  for  Apache  and  Samba,  respectively.
#Heartbeat will look for startup scripts of the same name in the following paths:
#/etc/ha.d/resource.d  
#/etc/init.d
在除了观察到的这2种情况以外,hearbeat 都能正常工作,当然这是实验环境中得出的结论,
在商业环境中的大规模应用据向经验人土打听说会有更多问题。 
上一篇:ORACLE知名站点
下一篇:win7 安装oracle 11g R2 !