在CentOS中配置高可用性集群
环境:Vmware server 3.2 + CentOS 5 + heartbeat
一、 概述:
通过安装该Linux-HA软件,可以实现Linux双机系统的高可用性解决方案,实现双机系统的热备份,并能够做到双机之间的无缝切换,从而对外提供稳定可靠的服务,最终实现系统高性能RAS(reliability, availability, and serviceability)。
系统:Centos5.0
集群软件:Heartbeat
节点1IP(Master):10.10.10.100
节点2IP(Slave):10.10.10.101
Virtual IP:10.10.10.108
配置环境:
编辑:
# vi /etc/sysconfig/network ,两台主机分别为:
HOSTNAME=ha01 ; HOSTNAME=ha02
# vi /etc/hosts
10.10.10.100 ha01 ; 10.10.10.100 ha02
二、下载安装软件包和配置:
1、需要以下软件包:
heartbeat-2.1.3
heartbeat-pils-2.1.3
heartbeat-stonith-2.1.3
也可以使用yum -y install heartbeat来进行安装。
三、配置heartbeat
1、在每个节点上配置heartbeat,需要有以下三个文件:
authkeys、ha.cf、haresources,它们存在于/etc/ha.d/目录里。
2、创建以上提到的三个文件:
# cp /usr/share/doc/heartbeat-2.1.2/authkeys /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.2/ha.cf /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.2/haresources /etc/ha.d/
3、配置:
Heartbeat软件的安装目录为/etc/ha.d,其中的
README.config对配置文件进行了说明,共有三个主要的配置文件:ha.cf,haresources,authkeys。
下面依次对三个配置文件进行说明,此外用户还可以参考Linux-HA附带的安装文档以及配置文件自身的注释。
配置ha.cf文件
ha.cf是heartbeat的主要配置文件,可以对heartbeat的多数性能和状态进行配置。大部分选项的取值可以采用默认值,其中的主要选项及配置方法说明如下:
debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息
logfile /var/log/ha-log:heartbeat的日志文件
keepalive 2:心跳的时间间隔,默认时间单位为秒
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
initdead 120:在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。
baud 19200:设置串行通信的波特率。
serial /dev/ttyS0:选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网连接,则应该关闭该选项。
bcast eth0:设置广播通信所使用的网络接口卡。
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点并由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
ping ping-ha1 ping-ha2:指定ping ha,ping ha并不构成双机节点,它们仅仅用来测试网络连接。
respawn hacluster /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping ha来检测网络连接。
配置haresources文件
haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等。其配置语句格式如下:
ha-name network-config <resource-group>
其中ha-name指定双机系统的主节点,取值必须匹配ha.cf文件中ha选项设置的主机名中的一个,ha选项设置的另一个主机名成为从节点。
network-config用于网络设置,包括指定集群IP、子网掩码、广播地址等。resource-group用于设置heartbeat启动的服务,该服务最终由双机系统通过集群IP对外提供。
下面举例对配置方法进行说明:
# ha01 10.10.10.108 httpd tomcat
假设ha.cf文件中ha选项设置的两个主机名分别为ha01和ha02,则根据上述配置,双机系统的主节点为ha01,从节点为ha02。
heartbeat启动时获取集群IP(cluster IP)为10.10.10.108,该IP成为heartbeat对外提供服务的网络地址。此外heartbeat依次启动服务httpd和tomcat(从左向右的顺序)。heartbeat关闭时将依次关闭tomcat和httpd(从右向左的顺序),并释放cluster IP。
httpd和tomcat分别是apache和tomcat的启动脚本,heartbeat将从下面目录中寻找这些启动脚本:
/etc/ha.d/resource.d
/etc/rc.d/init.d
# ha01 10.10.10.108/8 httpd tomcat
指定cluster IP为10.10.10.108,并且指定子网掩码为255.255.224.0,每个网段内有213个可用IP,默认广播地址取该网段内的最大可用IP,取值为192.168.31.255。
此外,还可以向启动脚本传递argument,语法为:scriptname::argument
# ha01 10.10.10.108/8/eth0/10.10.10.255 httpd tomcat
指定cluster IP为10.10.10.108,子网掩码为255.255.224.0,使用的网络接口卡为eth0,并强制设定广播地址为10.10.10.255。
注意:两台主机的haresources文件设置必须完全一致。
配置authkeys文件
authkeys文件用于heartbeat的鉴权设置,共有三种可用的鉴权方式:crc、md5和sha1。三种方式安全性依次提高,但同时占用的系统资源也依次扩大。crc安全性最低,适用于物理上比较安全的网络,sha1提供最为有效的鉴权方式,占用的系统资源也最多。
IXDBA.NET技术社区
其配置语句格式如下:
auth <number>
<number> <authmethod> [<authkey>]
举例说明:
auth 1
1 sha1 key-for-sha1
其中键值key-for-sha1可以任意指定,number设置必须保证上下一致。
auth 2
2 crc
crc方式不需要指定键值。
最后,该authkeys文件的文件许可权应该设为600(即-rw-------),命令为:
# chmod 600 authkeys
注意:上述三个配置文件设置完毕后,应该复制到/etc/ha.d目录下。
首先编辑authkeys文件:
# vi /etc/ha.d/authkeys
添加以下行:在这里我们使用的是第二种认证方式(shal)
auth 2
2 sha1 test-ha
接着把文件的权限改为600:
# chmod 600 /etc/ha.d/authkeys
编辑/etc/ha.d/ha.cf文件:
# vi /etc/ha.d/ha.cf加入如下行:
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node ha01
node ha02
编辑/etc/ha.d/haresources文件:
这个文件中包含了使那个服务具有高可用性,在这里我们使用的是httpd;
# vi /etc/ha.d/haresources加入下行:
ha01 10.10.10.108 httpd
我们把ha01上的/etc/ha.d/目录复制到节点ha02上的/etc目录里。
# scp -r /etc/ha.d/ root@ha02:/etc/
在httpd.conf文件里我们添加如下行:
vi /etc/httpd/conf/httpd.conf
Listen 10.10.10.108:80
把节点ha01上的/etc/httpd/conf/httpd.conf文件复制到节点ha02相应的目录里:
scp /etc/httpd/conf/httpd.conf root@ha02:/etc/httpd/conf/
在两个节点上分别创建一个index文件来进行测试:
在ha01上:
# echo "hello,ha01 apache !" > /var/www/html/index.html
在ha02上:
# echo "hello,ha02 apache !" > /var/www/html/index.html
在两个节点上分别启动heartbeat:
# /etc/init.d/heartbeat start
四、验证:
1、ifconfig 在ha01上会看到eth0:0 的网络接口邦定ip:10.10.10.108,可以通过ping测试。
查看 httpd 进程,可以看到httpd 已启动;查看heartbeat 进程。
2、在client上,开启一个浏览器:输入http://10.10.10.108并回车,将会看到
“ hello,ha01 apache !”
3、停止ha01上的heartbeat进程,然后再浏览器里输入http://10.10.10.108并回车,将会看到”hello,ha02 apache ! "
4、ifconfig 在ha02上会看到eth0:0 的网络接口邦定ip:10.10.10.108,可以通过ping测试。
查看 httpd 进程,可以看到httpd 已启动;查看heartbeat 进程。
五、补充:
这里不需要创建一个虚拟网络接口和配置一个IP(10.10.10.108)给它,因为heartbeat会帮助我们来完成的,并启动httpd server。
------------- 本文参考ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/504/showart_1097442.html
联系客服