• keeplived是专门针对LVS设计的一款辅助工具,主要功能是实现故障切换,类似HSRP热备份路由协议,HSRP是思科的私有协议,而VRRP是通用协议,都是为了实现故障切换,当一台路由器发生故障的时候,另一台马上接替工作,用户感觉不到服务器发生了问题,而且不会中断服务。
  • 双机热备是就是利用了VRRP虚拟路由冗余协议,和HRSP一样都拥有一个虚拟的ip地址对外提供服务,而不是真正的服务器ip地址,也拥有一台主服务器和多台备份服务器,优先级高的做主路由器,备份服务器处于冗余状态,当主服务器发生故障的时候,从服务器会变成主服务器,当主服务器修好之后,会重新成为主路由器。这里和HSRP不同的是,HSRP需要配置占先权,而这里不用配置,默认都有占先权。

.

  • keepalived的热备方式
    VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)
    一主 + 多备,共用同一个IP地址,但优先级不同
    .LVS+Keepalived高可用群集_第1张图片
  • 安装及服务控制
    先安装支持软件:
    kernel-devel、openssl-devel、popt-devel、ipvsadm
    再编译安装keepalived,需指定内核路径
    --prefix、--with-kernel-dir=
    使用Keepalived服务
    .
  • 配置文件keepalived.conf
    全局设置:global_defs { ... }
    热备设置:vrrp_instance 实例名称 { ... }
    样例文件位于:/etc/keepalived/samples/
    .

.

  • 主服务器配置
    state:设置本节点状态,MASTER、BACKUP
    priority:设置竞选优先级,数值越大优先级越高
    virtual_ipaddress { ... }:设置漂移IP地址
    ……
  • 备用服务器配置
    router_id设为自有名称
    state设为BACKUP
    priority值低于主服务器
    —— 其余所有配置均与主服务器相同
    .
  • 负载均衡+高可用群集
    针对LVS调度器实现双机热备
    能够管理服务器池,自动隔离失效节点
    .
    LVS与keepalived的结合
    .
  • 主、从调度器配置要点
    DR模式必须调整 /proc参数(方法同第5章)
    清除VIP地址、清除ipvsadm策略
    配置keepalived双机热备,并添加服务器池设置
  • Web节点注意事项
    DR模式必须调整/proc参数、添加VIP地址及路由
    —— 具体方法见第5章
    .
  • LVS+HA群集的测试
    访问 http://172.16.16.172/,正常显示Web页面
    主、从调度器其中一台失效,站点访问及负载仍然正常
    只要保持至少一个Web节点有效,整个站点依然可用

.
LVS+Keepalived高可用群集
LVS+Keepalived高可用群集_第2张图片
.
配置LVS+Keepalived高可用群集,LVS具体操作可看上篇文章,除了lvs的虚拟地址不需要配和nat不用做其他都相同,所以本篇LVS不在详解
.
配置主调度器
.
安装支持软件

 [root@centos1 /]# yum -y install kernel-devel openssl-devel popt-devel  
 [root@centos1 /]#  umount /dev/cdrom /media/
 [root@centos1 /]#  mount /dev/cdrom /media/
 [root@centos1 /]#  cd /media/
 [root@centos1 /]# ls
 [root@centos1 /]#  tar zxf keepalived-1.2.13.tar.gz -C /usr/src/

.
编译安装Keepalived

 [root@centos1 /]# cd /usr/src/keepalived-1.2.13/
 [root@centos1 /]#  ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ && make && make install

.

使用Keepalived服务

 [root@centos1 /]#  chkconfig --add keepalived
 [root@centos1 /]#  chkconfig leepalived on
 [root@centos1 /]#  chkconfig keepalived on

.
配置主调度器

 [root@centos1 /]#  vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   notification_email {     //接收邮件的地址,需要postfix,这里可不写
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1    //邮件服务器地址,这里填本机
   smtp_connect_timeout 30
   router_id R1         //主调度器名称,与从调度器名称不能相同
}

vrrp_instance VI_1 {
    state MASTER        //主服务器MASTER,从服务器填BACKUP
    interface eth0      //外网卡名称不一定是eth0
    virtual_router_id 1     //虚拟路由器ID主从要一致
    priority 100        //优先级100,主要比从大
    advert_int 1        //心跳频率1秒
    authentication {
        auth_type PASS
        auth_pass 1111      //主从密码要一致
    }
    virtual_ipaddress {
        172.16.16.172       //群及地址
    }
}

virtual_server 172.16.16.172 80 {   //虚拟服务器地址端口
    delay_loop 6        //健康检查时间6秒
    lb_algo rr          //轮训调度算法rr
    lb_kind DR          //路由模式DR
    persistence_timeout 50  //保持时间50秒
    protocol TCP        //协议tcp

    real_server 172.16.16.177 80 {  //web节点A的地址端口
    weight 1        //权重 1
    TCP_CHECK {
        connect_port 80
        connect_timeout 3   //连接超时3秒
        nb_get_retry 3      //重复3次
        delay_before_retry 3    //重复间隔3秒
    }
    }

    real_server 172.16.16.178 80 {
        weight 1
    TCP_CHECK {
        connect_port 80
        connect_timeout 3   
        nb_get_retry 3      
        delay_before_retry 3    
    }
    }
    }

.
重启keepalived服务

 [root@centos1 /]#  service keepalived start

 [root@centos1 /]#  ip addr show dev eth0\

2: eth0:  mtu 1500 qdisc pfifo_fast state UP
qlen 1000
    link/ether 00:0c:29:7d:92:43 brd ff:ff:ff:ff:ff:ff
    inet 172.16.16.173/16 brd 172.16.255.255 scope global eth0
    inet 172.16.16.172/32 scope global eth0 //虚拟地址
    inet6 fe80::20c:29ff:fe7d:9243/64 scope link 
       valid_lft forever preferred_lft forever

.
从调度服务器的配置
首先安装keepalived,和主服务器一样,在配置的时候主要有三个地方不一样:优先级99,调度器名称R2,热备状态为BACKUP
.
另一台lvs安装完可用[root@centos1 /]# scp root@(IP):/远程路径 /本地路径
.
在从调度器查看 [root@centos1 /]# ip addr show dev eth0
则不会出现虚拟地址

route_id R2
state BACKUP
priority 99
.
测试访在客户端访问
LVS+Keepalived高可用群集_第3张图片
.
断开一个lvs再次测试
.
LVS+Keepalived高可用群集_第4张图片