Linux下高可用集群方案很多,本文介绍的是性价比比较高的一种: 使用Heartbeat 2.0配置Linux高可用性集群。
一、 准备工作
你首先需要两台电脑,这两台电脑并不需要有相同的硬件(或者内存大小等),但如果相同的话,当某个部件出现故障时会容易处理得多。接下来您需要决定如何部署。你的集群是通过Heartbeat 软件产生在两台电脑之间心跳信号来建立的。为了传输心跳信号,需要在节点之间存在一条或多条介质通路(串口线通过modem电线,以太网通过交叉线,等等)。现在可以开始配置硬件了。既然想要获得高可用性(HA),那么您很可能希望避免单点失效。在本例中,可能是您的null modem线/串口,或者网卡(NIC)/ 交叉线。因此便需要决定是否希望为每个节点添加第二条串口null modem连线或者第二条NIC/交叉线连接。我使用一个串口和一块额外的网卡来作为heartbeat的通路,这是因为我只有一条null modem线和一块多余的网卡,并且认为有两种介质类型传输heartbeat信号比较好。硬件配置完成之后,便需要安装操作系统以及配置网络(我在本文中使用的是RedHat)。假设您有两块网卡,那么有一块应该配置用于常规网络用途,另一块作为集群节点之间的专用网络连接(通过交叉线)。例如,假设集群节点有如表-1下的IP地址:
表-1
群集节点的IP地址
主服务器mxl.com |
192.168.0.10 |
心跳IP地址 |
10.1.1.2 |
备份服务器bakup.mxl.com |
192.168.0.5 |
心跳IP地址 |
10.1.1.3 |
检查配置是否正确
使用用netstat -nr 和ping 命令
简单网络拓朴图
安装软件包
heartbeat-2.1.3-3.el5.centos.i386.rpm perl-Digest-SHA1-2.11-1.2.1.i386.rpm
heartbeat-devel-2.1.3-3.el5.centos.i386.rpm perl-IO-Socket-SSL-1.01-1.fc6.noarch.rpm
heartbeat-gui-2.1.3-3.el5.centos.i386.rpm perl-LDAP-0.33-3.fc6.noarch.rpm
heartbeat-ldirectord-2.1.3-3.el5.centos.i386.rpm perl-Mail-POP3Client-2.17-1.el5.centos.noarch.rpm
heartbeat-pils-2.1.3-3.el5.centos.i386.rpm perl-MailTools-1.77-1.el5.centos.noarch.rpm
heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm perl-Net-IMAP-Simple-1.17-1.el5.centos.noarch.rpm
libnet-1.1.2.1-2.rf.i386.rpm perl-Net-IMAP-Simple-SSL-1.3-1.el5.centos.noarch.rpm
perl-Authen-Radius-0.13-1.el5.centos.noarch.rpm perl-Net-SSLeay-1.30-4.fc6.i386.rpm
perl-Convert-ASN1-0.20-1.1.noarch.rpm perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm
perl-Digest-HMAC-1.01-15.noarch.rpm
perl-5.8.8-10.el5_0.2.i386.rpm
或使用源码进行安装,
下面以源码安装进行配置
[root@mxl] tar -zxvf libnet.tar.gz
cd libnet
./configure
Make
Make install
[root@mxl]tar -zxvf heartbeat-2.1.3.tar.gz
./ConfigureMe configure --enable-mgmt --with-ccmuser-name=hacluster
Make
Make install
#--enable-mgmt 表示支持图形管理工具
配置HA需要三个文件:ha.cf haresources authkeys
默认/etc/ha.d 下没有这三个文件,我们需要找到这三个文件然后,拷贝到其目录下
[root@mxl heartbeat-2.1.3]# pwd
/usr/share/doc/heartbeat-2.1.3
[root@mxl heartbeat-2.1.3]# ls
apphbd.cf faqntips.html haresources Requirements.html
authkeys faqntips.txt hb_report.html Requirements.txt
AUTHORS GettingStarted.html hb_report.txt rsync.html
ChangeLog GettingStarted.txt heartbeat_api.html rsync.txt
COPYING ha.cf heartbeat_api.txt startstop
COPYING.LGPL HardwareGuide.html logd.cf
DirectoryMap.txt HardwareGuide.txt README
[root@mxl heartbeat-2.1.3]# cp ha.cf authkeys haresources /etc/ha.d
以上的工作完成之后我们就需要对文件进行配置以实现双机的效果
- 配置hearbeat主文件ha.cf
#logfile /var/log/ha-log 日志存放位置
#keepalive 2 指明心跳时间为秒
#deadtime 30 指定在30秒内没有心跳信号,会立即切换服务
#warntime 10 指明心跳延迟时间为10秒
#initdead 120 在某些配置下,重启后网络需要一些时间才能正常工作。这个单独的”deadtime”选项可以处理这种情况。它的取值至少应该为通常deadtime的两倍
#udpport 694
使用端口694进行bcast和ucast通信。这是默认的,并且在IANA官方注册的端口号。
#baud 19200
波特率,串口通信的速度。
#bcast eth1 # Linux 表示在eth1接口上使用广播heartbeat(将eth1替换为eth0,eth2,或者您使用的任何接口)。
#auto_failback on 该选项是必须配置的。对于那些熟悉Tru64 Unix的人来说,heartbeat的工作方式类似于“favored member“模式。在failover之前,haresources文件中列出的主节点掌握所有的资源,之后从节点接管这些资源。当auto_failback设置为on时,一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为off,主节点便不能重新获得资源。该选项与废弃的nice_failback选项类似。如果要从一个nice_failback设置为off的集群升级到这个或更新的版本,需要特别注意一些事项以防止flash cut。
#node ken3 该选项是必须配置的。集群中机器的主机名,与“uname –n”的输出相同。
#node kathy
#ping 10.10.10.254
Ping 192.168.0.1
ping 可以使用 ipfail插件的用途是检测网络故障
a.选择好的候选ping节点
这步很重要。你的选择越好,则得到的HA集群便越强壮。选择固定的交换机路由器等是一个好主意。不要选择HA集群中的任一个成员,也不要选择其他人的工作站。选择能反映您HA节点的连接状况的ping节点也很重要。如果您要监视两个接口的连接情况,明智的做法是为每个接口选择一个只对该接口可用的ping节点。
b.设置auto_failback为on或者off
只有当Heartbeat被配置为非legacy时ipfail才会起作用。在ha.cf文件中,如下将auto_failback设置为on或者off:
auto_failback on
或者
auto_failback off
c.配置ha.cf使之启动ipfail。
向ha.cf中增加如下一行(假设您在编译时的PREFIX为/usr):
respawn hacluster /usr/lib/heartbeat/ipfail
d.向ha.cf中加入ping节点:
ping pnode1 pnode2 pnodeN
将pnode1,pnode2,…pnodeN等替换为您ping节点的IP地址。
确保向集群中各个成员的ha.cf中加入以上相同的配置指令。
e. 修改Heartbeat配置文件
如果修改了配置文件etc/ha.d/ authkeys或者 /etc/ha.d/ha.cf后要使用下面的命令重新加载服务。
#/etc/init.d/heartbeat reload
或者
#service heartbeat reload
#respawn userid /path/name/to/run
#respawn hacluster /usr/lib/heartbeat/ipfail
该选项是可选配置的:列出将要执行和监控的命令。例如:要执行ccm守护进程,则要添加如下的内容:
respawn hacluster /usr/lib/heartbeat/ccm
使得Heartbeat以userid(在本例中为hacluster)的身份来执行该进程并监视该进程的执行情况,如果其死亡便重启之。
对于ipfail,则应该是:respawn hacluster /usr/lib/heartbeat/ipfail
注意:如果结束进程的退出代码为100,则不会重启该进程。
- 配置[root@mxl ha.d]# vi authkeys 文件
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!
需要配置的第三个文件authkeys决定了您的认证密钥。共有三种认证方式:crc,md5,和sha1。您可能会问:“我应该用哪个方法呢?”简而言之:如果您的Heartbeat运行于安全网络之上,如本例中的交叉线,可以使用crc,从资源的角度来看,这是代价最低的方法。如果网络并不安全,但您也希望降低CPU使用,则使用md5。最后,如果您想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。
文件格式如下:
auth <number>
<number> <authmethod> [<authkey>]
因此,对于sha1,示例的/etc/ha.d/authkeys可能是
auth 1
1 sha1 key-for-sha1-any-text-you-want
1 md5 key-for-sha1-any-text-you-want
对于md5,只要将上面内容中的sha1换成md5就可以了。 对于crc,可作如下配置:
auth 2
2 crc
不论您在关键字auth后面指定的是什么索引值,在后面必须要作为键值再次出现。如果您指定“auth 4”,则在后面一定要有一行的内容为
配置完成后文件的权限设置(600)
[root@mxl ha.d]# chmod 600 authkeys
- 配置[root@mxl ha.d]# vi haresources 文件
#node-name resource1 resource2 ... resourceN
node mxl.com
#just.linux-ha.org 135.9.216.110 135.9.215.111 135.9.216.112 httpd
mxl.com 10.1.1.1 10.1.1.2 httpd smb
重启服务
把配置好的文件拷贝到其它的节点上即可
本文出自 “点滴记录-系统运维-孟星伦” 博客,请务必保留此出处http://haoyou168.blog.51cto.com/284295/386467