Keepalived 是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能。在非LVS集群环境中使用时,keepalived也可以作为热备软件使用。keepalived

采用vrrp热备份协议,以软件的方式实现linux服务器的多机热备功能。热备组内的每一台服务器都有可能成为都有可能成为主服务器,虚拟ip地址(vip)可以在热备组内的路由器之间进行转移,所以称之位漂移IP地址。

一、keepalived安装

1、安装支持软件

在编译安装之前,必须安装内核开发包,以及支持库

yum -y install popt-devel kernel-devel openssl-devel

2、编译安装Keepalived

tar zxf keepalived-1.2.2.tar.gz

cd zxf keepalived-1.2.2

./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-220.el6.i686/

make && make install

chkconfig --add keepalived

chkconfig keepalived on//会自动开户2345的级别


二、使用keepalived实现双机热备

基于vrrp 协议的热备方案,keepalived可以用做服务器的故障倒换,每个热备组可以有多台服务器,故障切换主要是针对虚拟ip地址的漂移来实现,可以使用于各种应用服务器。

Keepalived 双机热备_linux

                  Keepalived双机热备示意图


主、从服务器都需要安装keepalived,具体步骤参考第一节。可以在keepalived官网下载 http//www.keepalived.org



1、主服务器的配置

Keepalived服务的配置目录位于/etc/keepalived,其中keepalived.conf 是主配置文件

vi /etc/keepalived/keepalived.conf


! Configuration File for keepalived


global_defs {

 notification_email {

    root@localhost.localdomain//主调度器的名称

  }

  notification_email_from benet root@localhost.localdomain

  smtp_server 127.0.0.1

  smtp_connect_timeout 30

  router_id LVS_01

}


vrrp_instance VI_1 {

   state MASTER//主调度器的热备状态

   interface eth0

   virtual_router_id 10//编号主与从的两边要一样的

   priority 100//主调度器的优先级

   advert_int 1

   authentication {//主、从热备认证信息

       auth_type PASS

       auth_pass abc123

   }

   virtual_ipaddress {//指定群集VIP地址(虚拟服务器地址),可以指定多个的

       192.168.0.30    

}

}


virtual_server 192.168.0.30 80 {//虚拟服务器地址(VIP)、端口

    delay_loop 6//健康检查的间隔时间(秒)

    lb_algo rr//轮询(rr)调度算法

    lb_kind DR//直接路由(DR)群集工作模式

    persistence_timeout 60//连接保持时间(秒),若注释掉加个"!"

    protocol TCP//应用服务采用的是TCP协议


   real_server 192.168.0.10 80 { //第一个web节点的地址、端口

       weight 1//节点的权重

       TCP_CHECK {//健康检查方式

    connect_port 80//检查的目标端口

            connect_timeout 3//连接去超时(秒)

            nb_get_retry 3//重试次数

            delay_before_retry 3//重试间隔(秒)

   }

}

   real_server 192.168.0.20 80 { //第二个web节点的地址、端口

       weight 1

       TCP_CHECK {

    connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

    }

 }

}



确认上述配置无误,然后启动keepalived服务,实际状态为MASTER的主服务器将为eth0接口自动添加VIP地址,通过 ip addr show dev eth0 命令查看

service keepalived start


2、备用服务器的配置

  vi /etc/keepalived/keepalived.conf


! Configuration File for keepalived


global_defs {

 notification_email {

    root@localhost.localdomain//从调度器的名称

  }

  notification_email_from benet root@localhost.localdomain

  smtp_server 127.0.0.1

  smtp_connect_timeout 30

  router_id LVS_01

}


vrrp_instance VI_1 {

   state SLAVE//从调度器的热备状态

   interface eth0

   virtual_router_id 10//编号主与从的两边要一样的

   priority 95//从调度器的优先级

   advert_int 1

   authentication {//主、从热备认证信息

       auth_type PASS

       auth_pass abc123

   }

   virtual_ipaddress {//指定群集VIP地址(虚拟服务器地址),可以指定多个的

       192.168.0.30

   }

}


virtual_server 192.168.0.30 80 {//虚拟服务器地址(VIP)、端口

    delay_loop 6//健康检查的间隔时间(秒)

    lb_algo rr//轮询(rr)调度算法

    lb_kind DR//直接路由(DR)群集工作模式

    persistence_timeout 60//连接保持时间(秒),若注释掉加个"!"

    protocol TCP//应用服务采用的是TCP协议


   real_server 192.168.0.10 80 { //第一个web节点的地址、端口

       weight 1//节点的权重

       TCP_CHECK {//健康检查方式

    connect_port 80//检查的目标端口

            connect_timeout 3//连接去超时(秒)

            nb_get_retry 3//重试次数

            delay_before_retry 3//重试间隔(秒)

   }

}

   real_server 192.168.0.20 80 { //第二个web节点的地址、端口

       weight 1

       TCP_CHECK {

    connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

    }

 }

}


确认上述配置无误,同样启动keepalived服务,此时主服务器仍然在线,漂移地址由主服务器控制,其他服务器为备用状态,因此备用服务器将不会为eth0接口添加虚拟ip地址

service keepalived start

ip addr show dev eth0


3、双机热备倒换测试

  Keepalived的日子消息保存在/var/log/messages 文件中,在主从测试倒换时,可以跟踪此文件来观察热备状态的变坏。

   less /var/log/messages