概述

  Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。
Keepalived的官方网站位于http://www.keepalived.org/
Keepalived的热备方式
  Keepalived采用VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通过共用的虚拟ip地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived时,漂移地址的实现不需要手动建立虚接口配置文件(如eth0:0)而是由Keepalived根据配置文件自动管理。

(一主多从之间的优先级不能相同,否则会产生''脑裂"或"裂脑")

Keepalived的安装与服务控制

1.安装支持软件

在编译安装Keepallved之前,必须先安装内核开发包kernel-devel,以及openss1一devel、popt-devel等支持库。除此之外,在LVS群集环境中应用时,也需要用到rpvsadm管理工具。

[root@Keepalived ~]# yum -y install kernel-devel openssl-devel popt-devel
[root@Keepalived ~]# yum -y install ipvsadm

2.编译安装keepalived

[root@Keepalived ~]# tar zxvf keepalived-1.2.13.tar.gz -C /usr/src/
[root@Keepalived ~]# cd /usr/src/keepalived-1.2.13/
[root@Keepalived keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/
[root@Keepalived keepalived-1.2.13]# make 
[root@Keepalived keepalived-1.2.13]# make install

只有使用LVS时才需要参数 --with-kernel-dir

3.使用Keepalived服务

[root@Keepalived ~]# ls -1 /etc/init.d/keepalived
-rwxr-xr-x 1 root root 1288 11月 8 16:23  /etc/init.d/keepalived
[root@Keepalived ~]# chkconfig --add keepalived
[root@Keepalived ~]# chkconfig keepalived on

配置文件:

  Keepalived服务的配置目录位于/etc/Keepalived/。其中Keepalived.conf是主配置文件;另外包括一个子目录samples/,提供了许多配置样例参考。在Keepalived的配置文件中,使用“global_defs {...}"区段指定全局参数,使用“vrrp_instance 实例名称 {...}"区段指定VRRR热备参数,注释文字以“!”符号开头。
  在同一个Keepalived热备组内,所有服务器的Keepalived配置文件基本相同,包括路由器名称,虚拟路由器的ID号,认证信息,漂移地址,心跳频率等。不同之处主要在于路由器名称热备状态,优先级。

  • 路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称;
  • 热备状态(state):至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为备用服务器;
  • 优先级(priority):数值越大则取得VIP控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺VIP控制权时发生冲突;
!全局配置
global_defs {
    router_id LVS_HA_R1    //主调度器的名称
}
!虚拟实例配置
vrrp_instance VI_1 {
    state MASTER           //主调度器的热备状态(MASTER/BACKUP)
    interface eth0       //承载VIP地址的物理接口
    virtual_router_id 51   //虚拟路由器的ID号,每个热备组保持一致
    priority 100           //主调度器的优先级
    advert_int 1       //通告间隔秒数(心跳频率)
    authentication {       //主、从热备认证信息(每个热备组保持一致)
        auth_type PASS       //认证类型
        auth_pass 1111       //密码子串
    }
    virtual_ipaddress {
        172.16.1.130       //指定集群VIP地址,可以有多个
    }
}

!Web服务器池配置
virtual_server 172.16.1.130 80 {               //虚拟服务器地址(VIP)、端口
    delay_loop 15                              //健康检查时间的间隔(秒)
    lb_algo rr                                 //调度算法(轮询(rr))
    lb_kind DR                                 //群集工作模式,(DR/NAT)
    persistence 60                             //连接保持时间(秒
    protocol TCP                               //应用服务采用的是TCP协议
    real_server 172.16.1.131 80 {              //第一个Web节点的地址、端口
        weight 1                               //节点权重
        TCP_CHECK {                            //健康检查方式
                connect_port  80               //检查的目标端口
                connect_timeout  3             //连接超时(秒)
                nb_get_retry  3                //重试次数
                delay_before_retry  4          //重试间隔(秒)
            }
    }
    real_server 172.16.1.132 80 {              //第二个Web节点的地址、端口
        ......//省略部分信息
    }
     real_server 172.16.1.133 80 {             //第三个Web节点的地址、端口
        ......//省略部分信息
    }
     real_server 172.16.1.134 80 {             //第四个Web节点的地址、端口
        ......//省略部分信息
    }
}
keepalived.conf

相关文章: