RHEL5.5下的Keepalived双机热备

Linux操作系统的Keepalived的双机热备不像基于共享存储的高可用集群(HA),它不需要用到共享存储,只是单纯基于TCP/IP协议的热备机制,其工作过程有些像VRRP,其实它的配置文件就很像VRRP的配置,作过路由器VRRP配置的同学应该很了解,呵呵。Keepalived通常和LVS一起使用,做负载均衡主机的热备和调度功能,我在这方案里只用到keepadlived这一个软件,不做负载均衡处理,只使用同一个虚拟IP的服务应用(两台服务器的提供的应用要一模一样)。

  呵呵,其实在做之前参考了很多人的配置方法,在做的过程中不断出现问题,毕竟是别人的文档~照着做都能有问题~现在我写下来的是RHEL5.5下的配置方法,keepalived版本为keepalived-1.2.1.tar(可以在官网下载到)。

  首先第一步肯定是装操作系统了~最好把软件定制那的开发工具和服务器都勾上,免得少软件,我的Centos5.4安装时候就少了很多东西,解决依赖性都弄了很久。通常这个keepalived要求有两个前置的软件,一个是gcc,一个是openssl-devel

  解压keepalived-1.2.1.tar/usr/local/src

打开控制台 cd /usr/local/src/keepalived-1.2.1

./configure --prefix=/usr/local/keepalive

make

make install

不出意外,安装过程就完毕了,接下来要手动复制一些东西

  可以看到/usr/local/keepalive下面有几个文件,我们需要复制一些文件到其他文件夹里面,下面为操作方法:

cp /usr/local/keepalive/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

 

cp /usr/local/keepalive/etc/sysconfig/keepalived /etc/sysconfig/

 

mkdir /etc/keepalived

 

cp /usr/local/keepalive/etc/keepalived/keepalived.conf /etc/keepalived/

 

cp /usr/local/keepalive/sbin/keepalived /usr/sbin/

 

  在系统—>管理—>服务器设置—>服务添加keepalived(对,输入名称),然后找到keepalived这个服务打上勾就能随机启动了。手动启动或停止服务是service keepalived start|stop|restart

  接下来是配置conf文件,只有配置/etc/keepalived/keepalived.conf

才生效。

  假设服务器A地址是172.31.0.1     服务器B地址是172.31.0.2,对外提

供服务的虚拟IP172.31.0.100

  服务器Amaster):我们只需配置下面几行

vrrp_instance VI_1 {

    state MASTER          #备机要改成BACKUP#

    interface eth0        

    virtual_router_id 51  #这里的ID,主备要一致,如果在一个广播域内有另外一组热备组,这里需要更改另外的ID,且同样主备要保持一致#

    priority 100            #备机要小于100#

    advert_int 1

    nopreempt               #默认是抢占模式,这里设置不抢占,初始配置文件没有这行#

    authentication {

        auth_typePASS

        auth_pass 1111

    }

    virtual_ipaddress {

        172.31.0.100       #要在这里设置的对外提供服务的虚拟IP#

       

    }

notify_master /root/master.sh    #这里是调用脚本,成为master时,调用的脚本

notify_backup /root/backup.sh   #这里是调用脚本,成为backup时,调用的脚本

}

服务器BBACKUP):

vrrp_instance VI_1 {

    state BACKUP          #备机要改成BACKUP#

    interface eth0        

    virtual_router_id 51  #这里的ID,主备要一致,如果在一个广播域内有另外一组热备组,这里需要更改另外的ID,且同样主备要保持一致#

    priority 90            #备机要小于100

    advert_int 1

    nopreempt               #默认是抢占模式,这里设置不抢占

    authentication {

        auth_typePASS

        auth_pass 1111

    }

    virtual_ipaddress {

        172.31.0.100       #要在这里设置对外提供服务的虚拟IP

       

    }

notify_master /root/master.sh    #这里是调用脚本,成为master时,调用的脚本

notify_backup /root/backup.sh   #这里是调用脚本,成为backup时,调用的脚本

}

验证:在一台PC ping 172.31.0.100看是否能ping通,再输入ip a这个命令,看eth0是不是有两个IP地址,Master会有172.31.0.100这个地址,BACKUP正常情况下只有一个网卡地址。关掉Master的网卡eth0,正常情况下ping会掉2个包后会重新连接上。这时在BACKUP输入ip a,看eth0是否有两个IP地址,有172.31.0.100表示已经变成MASTER。如果是默认的抢占模式,重新激活MASTEReth0后,正常情况下也会掉两个包,然后ping重新连上,这时MASTER重新抢占了MASTER角色。