天天看点

linux高可用集群heartbeat实现http的高可用

    linux高可用集群的种类很多,比如常见的heartbeat,corosync,rhcs,keepalived,这些集群软件的出现为我们的业务生产环境提供了高可用的保证,本文将简单介绍一下用heartbeat的v2版本来处理一个简单的http高可用集群的搭建。

    在实现http高可用集群之前,首先至少需要2台主机,并且需要做3点基本的准备工作:

    1.设置节点名称,并且集群中的所有节点都能通过节点名称去解析集群中的所有主机。为了集群服务的高可用性,这里选择使用/etc/hosts,而且要保证uname -n的值必须和hostname中的值一致。

    2.使用ssh让双机互信。

    3.时间同步。

    在安装heartbeat软件之前,首先把上面的基本工作完成。这里采用2台主机(192.168.1.201,192.168.1.202)来做我们的高可用集群服务。

    1.首先登陆192.168.1.201修改hostname=test1.qiguo.com,在/etc/sysconfig/network中修改HOSTNAME=test1.qiguo.com保证服务器下次启动的时候主机名不变。在/etc/hosts中添加192.168.1.201 test1.qiguo.com test1; 192.168.1.20 test2.qiguo.com test2两行,再在192.168.1.202的这台主机上执行同样的操作。  

    2.在192.168.1.201中执行ssh-keygen -t rsa,然后使用ssh-copy-id -i root@test2实现ssh互信。这个步骤在两个机器上都要执行。

    3.在2台服务器上使用时间同步命令ntpdate 133.100.11.8(可用的ntp服务器ip地址)

    上面三步完成以后,就可以开始安装heartbeat了。可以去epel下载heartbeat的安装包,默认需要下heartbeat-2.1.4-11.el5.i386,heartbeat-gui-2.1.4-11.el5.i386,heartbeat-pils-2.1.4-11.el5.i386,heartbeat-stonith-2.1.4-11.el5.i386 这4个软件包。但是这4个软件包依赖于其它两个软件包perl-MailTools-1.77-1.el5.noarch,libnet-1.1.6-7.el5.i386,所以首先得把这2个软件包给装出来。使用rpm

-ivh perl-MailTools-1.77-1.el5.noarch的时候会报依赖关系的错误,所以用yum --nogpgcheck localinstall perl-MailTools-1.77-1.el5.noarch来安装。然后用同样的方式来一起安装剩余的几个包。注意:这些软件要在2个服务器上都要安装

    安装完成heartbeat中,heartbeat默认的配置文件在/etc/ha.d中。ha.d中的rc.d都是资源管理相关的脚本,而resource.d中都是资源代理脚本,服务脚本在/etc/ha.d/heartbeat中。默认装起后的heartbeat没有配置文件,不过可以从/usr/share/doc/heartbeat-2.1.4/中把ha.cf,authkeys和haresources三个文件放在/etc/ha.d中。这3个配置文件的作用是:

    authkeys:密钥文件,这个文件的权限必须为600,否则不能启动heartbeat服务

    ha.cf:heartbeat服务自身的配置文件

    haresources:资源代理配置文件

    下面只需要对这3个文件做下配置就可以实现我们的http高可用集群了。先来看authkeys文件:

    #auth 1   提供密钥的认证方式

    #1 crc   循环冗余校验码认证

    #2 sha1 HI!   sha1算法认证

    #3 md5 Hello!   md5认证

    这里最好采用sha或者md5认证,crc的性能偏低。如果使用md5认证的配置文件如下: 

    auth 1 # 1代码使用下面以1开头的行来作为密钥认证的条件    

    1 md5 9adc3f50d9bb9e9c795fce0a839aa766

    生成md5的方式只需要在shell命令行中,输入echo "qiguo" | md5sum即可

    第二个配置文件ha.cf里面的内容很多,简单介绍如下:

    第三个配置文件haresources文件是集群资源配置文件。上面提供了很多的配置样例,拿其中一个的样例配置文件来说明: #node1  10.0.0.170 Filesystem::/dev/sda1::/data1::ext2

    node1就是主节点的名称,10.0.0.170就是vip,Filesystem是资源代理(资源代理可以从/etc/ha.d/resource.d和/etc/init.d/从查找,"::"代表该资源代理的参数)。这里我们做http高可用,所以配置如下:

    test1.qiguo.com IPaddr::192.168.1.210/24/eth0 httpd即可

    上述三个配置文件成功后,就把他们复制到192.168.1.202这个主机上。复制完成以后,分别在两台主机上装上httpd服务。装上的httpd服务一定不能让他们开机自动启动。如果全部配置成功以后,可以关闭httpd服务开始启动heartbeat服务了。

   观察日志,可以发现高可用的http集群已经启动起来了。现在人为的在test1这台机子上执行shutdown -h now后观察日志的变化。(也可以使用heartbeat自带的hb_standby脚本来切换,默认在/usr/lib/heartbeat目录下)   

   打开备服务器上的日志,注意观察,在备服务器上,已经将资源全部拿了过去,现在继续访问192.168.1.210可以看到显示的就是test2这台主机上的内容,当test1从新上线以后,由于我们上面设置了auto_failback的值为on,所以会再次把资源拿回来,这里就不再放日志文件了。到这里一个简单的高可用httpd服务就已经建立起来了。 

   由于很多情况下httpd高可用服务还会用到共享文件的服务,所以有时候需要共享文件系统。只需要在haresources中多定义一个文件系统的资源。

test1.qiguo.com IPaddr::192.168.1.210/24/eth0 Filesystem::192.168.1.230:/html::/var/www/html::nfs httpd。这里采用nfs文件系统来挂载。

继续阅读