LVS+Keepalived 一例

 

一套内部Portal系统,原结构为:

该结构存在明显的单点故障,即:当HTTP Server宕机时,整个服务将会停止。

为了提高系统的可用性和可伸缩性,保证服务的持续稳定,将对该系统进行改进,改进后的结构为:

从结构图可看出,由于增加了LVS系统和keepalived提供HA功能,单点故障被消除。同时,原系统结构没有被改变,减少了LVS系统对原有系统的影响。该结构变化提升了系统的可用性。

具体安装与实施步骤如下:

1、操作系统选择

根据LVS官网介绍,RH AS5 内核(Linux内核版本2.6)中已包含LVS,并已安装了ipvsadm管理工具,因此,选择该版本操作系统即可直接使用LVS,避免编译内核等麻烦。当然,其他版本的Linux也同样支持LVS,需要到http://www.linuxvirtualserver.org/software/ipvs.html下载合适的ipvsadm并编译。

2、LVS部署

由于操作系统包含ipvsadm工具,因此,只需在两台LVS Server里下载并安装keepalived,并编译后,即可完成部署工作。关于keepalived的信息可在此处找到:http://www.keepalived.org/。从http://www.keepalived.org/download.html下载keepalived最新版本(本例中为keepalived-1.1.19),开始安装:

 

tar zxf keepalived-1.1.19.tar.gz

cd keepalived-1.1.19

mkdir /usr/local/keepalive

ln -s /usr/src/kernels/2.6.18-164.el5-x86_64 /usr/src/linux  (此步重要,不做此步编译时将会报错,具体路径请根据实际情况设置)

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

make

make install

 

如果没有报错,继续进行keepalived的配置工作。

 

3、LVS服务器的keepalived配置文件/usr/local/keepalive/etc/keepalived.conf

#以下为配置文件内容

#配置文件开始

vrrp_sync_group VG1 {  
    group {  
        VI_1  
    }  
}  
 
vrrp_instance VI_1 {  
    state MASTER          
   
       //热备机改为BACKUP
    interface eth0  
    virtual_router_id 51          //Master和Backup的Router ID必须一样
    priority 100                       //Master优先级要高于Backup
    advert_int 1 
    authentication {  
        auth_type PASS  
        auth_pass 1234 
    }  
    virtual_ipaddress {
   
        1.1.1.1                          //VIP地址   

    }  
}  
 
global_defs {  
  router_id LB  
}  
 
virtual_server 1.1.1.1 80 {   //虚拟服务器的IP和提供服务的端口
  delay_loop 10   
  lb_algo wlc                         //LVS算法
  lb_kind DR                          //LVS实现方式,本例中使用DR即直接路由方式
  persistence_timeout 2  
  protocol TCP
  
 
  real_server 1.1.1.2 80 {  
    weight 100
    TCP_CHECK {  
      connect_port 80 
      connect_timeout 3 
    }  
 
  }  
 
  real_server 1.1.1.3 80 {  
    weight 100 
    TCP_CHECK {  
      connect_port 80 
      connect_timeout 3
 
    }  
  }  
}

 

#第二组服务配置,同一配置文件,两组不同端口

 

virtual_server 1.1.1.1 7788 {   //虚拟服务器的IP和提供服务的端口,此处用了另一个TCP端口7788提供其他服务
  delay_loop 10
  lb_algo wlc
  lb_kind DR
  persistence_timeout 2
  protocol TCP

  real_server 1.1.1.2 7788 {
    weight 100
    TCP_CHECK {
      connect_port 7788
      connect_timeout 3
    }

  }

  real_server 1.1.1.3 7788 {
    weight 100
    TCP_CHECK {
      connect_port 7788
      connect_timeout 3

    }
  }
}

 

#配置文件结束

 

配置文件书写时应注意花括号的配对,避免出现错误。

 

4、LVS客户端脚本(摘自网络)

 

#!/bin/bash
#description : start realserver
VIP=1.1.1.1
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

 

5、LVS Server和Client启动和检查

启动LVS Server的负载均衡和LVS Client(RealServer)

 

LVS Server:

/usr/local/keepalive/sbin/keepalived -D -f /usr/local/keepalive/etc/keepalived.conf

 

LVS Client:

/usr/local/bin/lvs_real start

 

检查启动情况:

LVS Server启动情况检查:

ps aux 结果中有

root      3669  0.0  0.0  35812   636 ?        Ss   Apr26   0:00 /usr/local/keepalive/sbin/keepalived -D -f /usr/local/keepalive/etc
root      3670  0.0  0.0  39972  1612 ?        S    Apr26   0:00 /usr/local/keepalive/sbin/keepalived -D -f /usr/local/keepalive/etc
root      3671  0.0  0.0  39972  1104 ?        S    Apr26   0:00 /usr/local/keepalive/sbin/keepalived -D -f /usr/local/keepalive/etc

说明keepalived启动正常

 

 

LVS Server状态检查

ipvsadm返回信息:

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward   Weight     ActiveConn      InActConn
TCP  1.1.1.1:7788  wlc  persistent 2

    -> 1.1.1.2:7788                       Route       100                 0                       0

    -> 1.1.1.3:7788                       Route       100                 0                       0
TCP  1.1.1.1:http   wlc   persistent 2

    -> 1.1.1.2:http                        Route       100                 0                       0

    -> 1.1.1.3:http                        Route       100                 0                       0

说明转发已生效

 

 

LVS Client启动情况检查:

ifconfig 查看网络配置,结果中有

 

lo:0      Link encap:Local Loopback 
            inet addr:1.1.1.1  Mask:255.255.255.255
            UP LOOPBACK RUNNING  MTU:16436  Metric:1

 

说明客户端启动正常,VIP 1.1.1.1已正确配置到lo:0子接口。

 

6、测试HA

逐一关闭各客户端和服务器,检查负载均衡处理情况。具体情况参见http://blog.formyz.org/?p=46

 

相关文档:

更多信息请查看http://blog.formyz.org/?p=46

感谢田逸的blog,提供了大量信息。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值