————基于heartbeat方式
实验环境为两台虚拟机作为HA主备节点,第三台虚拟机作为客户端。具体网络网卡参数配置见拓扑图。
一、搭建实验环境
1、设置主节点服务器主机名为:node1.example.com eth0网卡地址为:192.168.0.43 eth1网卡地址地址为:192.168.10.43
设置备用节点服务器主机名为:node2.example.com eth0网卡地址为:192.168.0.45 eth1网卡地址为:192.168.10.45
客户端IP地址为192.168.0.42
2、在主节点服务器上开启web服务,并验证web服务是否可以成功访问。
验证成功后,关闭web服务。为了试验的顺利进行,这里将web服务设置为开机不启动。
关闭httpd服务的目的是为了验证后面客户端访问服务器时,web服务的开启是受heartbeat控制的,而不是人为开启的web服务。
在双机HA功能下,主备节点要通过heartbeat信息来保持联系,为了实现主备节点的heartbeat功能,需要安装额外的软件包。但是Redhat默认并没有安装这些软件包,这就需要到对应官方网站上去下载对应的软件包。需要安装的软件包有六个,分别是:
libnet-1.1.4-3.el5.i386.rpm
perl-MailTools-1.77-1.el5.noarch.rpm
heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-stonith-2.1.4-10.el5.i386.rpm
heartbeat-gui-2.1.4-10.el5.i386.rpm
heartbeat-ldirectord-2.1.4-10.el5.i386.rpm
heartbeat-devel-2.1.4-10.el5.i386.rpm
heartbeat-2.1.4-10.el5.i386.rpm
安装上面六个软件包,会出现依赖关系,提示依赖下面的软件包(这些包在Redhat光盘文件中),因此为了方便安装这些软件包,建议建立本地yum库,如此以来就可以解决软件安装时出现的很多包依赖关系。
perl-Compress-Zlib
perl-HTML-Parser
perl-HTML-Tagset
perl-URI
perl-libwww-perl
perl-MailTools
perl-TimeDate
perl-String-CRC32
net-snmp-libs
把要安装的软件包复制到根目录下。然后通过本地yum库进行上述软件包的安装。由于上述软件包都是以.rpm结尾的,所以这里就使用*通配所有软件包。命令为:
yum –nongpgcheck localinstall *.rpm
安装完成后,再来确认一下安装了所有的软件包。
二、 软件的配置
Heartbeat软件的安装目录为/etc/ha.d,其中的README.config对配置文件进行了说明,共有三个主要的配置文件:ha.cf,haresources,authkeys。切换到/etc/ha.d目录下,却发现并没有这三个主要的配置文件。
那么这三个主要的配置文件在那里呢?可以切换到/usr/share/doc/heartbeat-2.1.4/目录下查看一下是否有这三个主要的配置文件。
将上述的三个主要的配置文件复制到/etc/ha.d/目录下。哈哈,三个主要配置的配置文件
出来了吧?
下面依次对三个配置文件进行说明,此外还可以参考Linux-HA附带的安装文档以及配置文件自身的注释。
2.1配置authkeys文件
authkeys文件用于heartbeat的鉴权设置,共有三种可用的鉴权方式:crc、md5和sha1。三种方式安全性依次提高,但同时占用的系统资源也依次扩大。crc安全性最低,适用于物理上比较安全的网络,sha1提供最为有效的鉴权方式,占用的系统资源也最多。
其配置语句格式如下:
auth <number>
<number> <authmethod> [<authkey>]
举例说明:
auth 1
1 sha1 key-for-sha1
其中键值key-for-sha1可以任意指定,number设置必须保证上下一致。
auth 2
2 crc
crc方式不需要指定键值。
还是先来看一下authkeys文件的内容吧?文件前面的内容可以直接忽略过去,需要修改的行数并不是很多。主要在最后面。可以看到这四行都默认被注释掉了。
修改的方法有很多的,最简单直接打开注释就行了,然后保存退出;也可以使用echo命令将要设定的值导入到该文件中;或者使用ssl加密并导入到该文件之中。
这里使用后两种来验证一下,打开文件,可以看到两种方式都将数据导入到文件中了。在试验过程中,为了节省时间,可以选用非加密传输方式。
为了文件的安全性,我们要设定该文件的权限为600,修改完成后,要记得查看是否修改成功。
2、2配置ha.cf文件
ha.cf是heartbeat的主要配置文件,可以对heartbeat的多数性能和状态进行配置。大部分选项的取值可以采用默认值,其中的主要选项及配置方法说明如下:
debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息
logfile /var/log/ha-log:heartbeat的日志文件
![clip_p_w_picpath025 Linux 系统下双机HA的实现_Linux_16](https://s2.51cto.com/attachment/201003/18/1239505_12688712428Xyu.jpg?x-oss-process=image/resize,m_fixed,w_1184)
keepalive 2:心跳的时间间隔,默认时间单位为秒
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
initdead 120:在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。
bcast eth1:设置广播通信所使用的网络接口卡。
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点并由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
node 定义集群主机的节点号名称
另外还有一些设置,由于对实验作用不是很大,这里就不进行配置了。
baud 19200:设置串行通信的波特率。
serial /dev/ttyS0:选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网连接,则应该关闭该选项。
ping ping-node1 ping-node2:指定ping node,ping node并不构成双机节点,它们仅仅用来测试网络连接。
respawn hacluster /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。
2、3 配置haresources文件
haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等。其配置语句格式如下:
node-name network-config <resource-group>
其中node-name指定双机系统的主节点,取值必须匹配ha.cf文件中node选项设置的主机名中的一个,node选项设置的另一个主机名成为从节点。
network-config用于网络设置,包括指定集群IP、子网掩码、广播地址等。resource-group用于设置heartbeat启动的服务,该服务最终由双机系统通过集群IP对外提供。
指定主节点服务器为node1.example.com 对外宣称的IP地址为192.168.0.140的服务器提供web服务。
最后,别忘记修改/etc/hosts文件,保证主备节点服务器之间知道对方的IP地址,保证彼此可以正常通信。
由于备用节点服务器的配置和主节点服务器的配置基本相同,只有主机名和IP地址不同,这里就省略配置备节点服务器的配置步骤了。
三、实验的验证
当主备节点都配置完成后,要启动主备节点的heartbeat服务,然后就可以到客户端来验证测试实验成功与否了。有点激动啊!呵呵^_^,如图所示,实验配置是成功的。
再来到主节点服务器上,查看一下主节点服务器IP地址的变化吧!可以发现,对外宣称的VIP地址绑定在了主节点服务器上的eth0网卡上。
此时,假设由于某些意外原因(手动停止主节点服务器的heartbeat服务),主节点服务器突然宕机了。再来刷新客户端的浏览器,会发现主页内容变成了备节点服务器(这里为了区分客户端访问的是不同的服务器,主备节点服务器的网页内容不同)。
切换来到备节点服务器上,查看一下备节点服务器IP地址的变化可以发现,对外宣称的VIP地址绑定在了备节点服务器上的eth0网卡上。
由此就可以说明双机系统可以实现无缝切换。
主节点再次启动heartbeat
在这种情况下,主节点将重新绑定VIP地址,备节点web释放该IP地址,并由主节点对外提供服务。在主节点启动heartbeat之后,集群IP地址的释放和绑定有一定的延迟。虽然有一定的延迟,但是集群IP地址的释放和绑定是同步进行的,使用ping命令可以发现集群IP地址一直处于可通状态,该过程并不影响双机系统的可用性。所以该过程仍然是一个无缝切换。
为了验证主备节点服务器之间的连通性,可以使用tcpump –i eth1 udp port 694