LVS+Keepalived实验笔记

34 篇文章 0 订阅
31 篇文章 3 订阅

lvs+keeplive安装配置文档。

1、LVS概念介绍。

 lvs目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR)。

(1)Virtual Server via Network Address Translation(VS/NAT)
通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

(2)Virtual Server via IP Tunneling(VS/TUN)
采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。

(3)Virtual Server via Direct Routing(VS/DR)
VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。

二、安装规划:

 

Director Server master真实IP 10.7.35.33

Director Server backup真实IP10.7.11.227

Director Server VIP 10.7.35.33

Real Server1 IP 10.7.11.144

Real Server2 IP 10.7.11.121


 

三.安装过程:

1.从官方网站下载ipvsadm、keepalive:

下载地址:http://www.linuxvirtualserver.org/software/kernel-2.6/

下载ipvsadm-1.24.tar.gz,因为最新版ipvsadm-1.25这个版本只支持2.6.28以上的内核,RHEL 5.4内核版本达不到要求,所以选择安装前一个版本。

下载地址:http://www.keepalived.org/download.html

下载keepalived-1.1.20.tar.gz

2、安装ipvsadm

(1)创建一个连接文件,其命令为:

ln  -s /usr/src/kernels/2.6.18-92.el5-i686/usr/src/linux

注意一定要与当前的运行的内核相一致,因为/usr/src/kernels目录下可能有多个目录。如果不创建这个连接文件,在编译时会出错,从而不能继续进行安装。

#tar zxvf  ipvsadm-1.24

#cd  ipvsadm-1.24

#make

#make install


(2)检验ipvsadm是否被正确安装

(1)执行ipvsadm,看是否有如下输出。

IP Virtual Server version 1.2.1 (size=4096)

Port LocalAddress:Port Scheduler Flags      ->RomoteAddress:Port  

Forward Weight ActiveConn InActConn


(2)检查当前加载的内核模块,看是否存在ip_vs模块。

[root@hd-4 ipvsadm-1.24]# lsmod | grep ip_vs

ip_vs 77569 0

注1:只有执行ipvsadm以后,才会在内核加载ip_vs模块。

注2:不能以查进程的方式判断ipvs是否运行。

注3:如果下载最新的ipvsadm-1.25.tar.gz这个版本,在创建连接文件/usr/src/linux后,执行编译时,可能需要修改/boot/grub/grub.conf启动内核名称。一旦当前运行内核与连接文件所代表的内核名不一致时,将出现找不到*.h这样的错误,从而导致安装不能正常进行。

 

3、安装keepalived.

在负载均衡服务器上执行master和backup
1、解压

#tar -zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure --prefix=/usr/local/keepalived
#make;make install
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived //etc/init.d/
chmod +x /etc/init.d/keepalived

#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#service keepalived start|stop 

4、开启负载服务器路由机制master和backup

#echo "1" >/proc/sys/net/ipv4/ip_forward

# sysctl -p 使配置生效、

 (DR 模式 此步骤貌似可以不用)

5、DR模式下 建立负载服务器启动脚本//master和backup

vi /sbin/lvs.sh


 

#!/bin/bash
# description: start LVS of DirectorServer


# website director vip.
SNS_VIP=10.7.35.33
SNS_RIP1=10.7.11.144
SNS_RIP2=10.7.11.121
. /etc/rc.d/init.d/functions

logger $0 called with $1

case "$1" in

start)
           # set squid vip
           #/sbin/ipvsadm --set 30 5 60
           /sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up
           /sbin/route add -host $SNS_VIP dev eth0:0
           /sbin/ipvsadm -C
           
           /sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr 
           /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 3
           /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 2


           /sbin/ipvsadm
           touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
           ;;
stop)
           /sbin/ipvsadm -C
           /sbin/ipvsadm -Z
           route del  $SNS_VIP dev eth0
           ifconfig eth0:0 down


           #route del $SS_VIP
           rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
           echo "ipvsadm stoped"
           ;;

status)

           if [ ! -e /var/lock/subsys/ipvsadm ];then
                echo "ipvsadm stoped"
                exit 1
           else
                echo "ipvsadm OK"
           fi
           ;;

*)
          echo "Usage: $0 {start|stop|status}"
           exit 1
esac

exit 0



 


  
  
#chmod 757 lvs.sh
执行测试
# lvsdr.sh start

6、配置后端WEB服务器
在10.7.11.144和10.7.11.121上分别建立如下脚本。
# vi rs.sh

#!/bin/bash
# description: Config realserver lo and apply noarp

SNS_VIP=10.7.35.33

. /etc/rc.d/init.d/functions

case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up
       /sbin/route add -host $SNS_VIP dev lo:0
       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
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"

       ;;
stop)
       ifconfig lo:0 down
       route del $SNS_VIP >/dev/null 2>&1
       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 "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac

exit 0

运行ifconfig 查看结果

配置权限
# chmod 757 rs.sh

在两台web服务器上分别执行其指命。
./rs.sh start

7.配置keepalived.conf配置文件 //master和backup
#vi /etc/keepalived/keepalived.conf

master脚本:

! Configuration File for keepalived
global_defs {
  notification_email {
    liang123an@qq.com
  }
  notification_email_from xwluan@tsong.cn
  smtp_server  127.0.0.1 
  smtp_connect_timeout 30
  router_id LVS_DEVEL
}
vrrp_instance VI_1 {
   state MASTER  //备份服务器设置为backup
   interface eth0
   virtual_router_id 51
   priority 100  备份服务器设置小于100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       10.7.35.33
   }
}
virtual_server 10.7.35.33 80 {
   delay_loop 6  //隔6秒查询
   lb_algo wrr   //lvs算法
   lb_kind DR    //(Direct Route)
   persistence_timeout 60  //同一IP的连接60秒内被分配到同一台realserver
   inhibit_on_failure  //当web挂掉的时候,前面请求的用户,可以继续打开网页,但是后面的请求不会调度到挂掉的web上面。
   protocol TCP   //用TCP协议检查realserver状态
   real_server 10.7.11.144 80 {
       weight 3   //权重
       TCP_CHECK {
           connect_timeout 10   //10秒无响应超时
           nb_get_retry 3
           delay_before_retry 3
       }
   }
   real_server 10.7.11.121 80 {
       weight 2
       TCP_CHECK {
           connect_timeout 10
           nb_get_retry 3
           delay_before_retry 3
       }
   }
   
}



 


backup上2处不同:

    1.priority 设置为小于100 我设置了99 。

     2.state 备份服务器设置为BACKUP。

8.启动keepalived 测试

运行命令:

      service keepalived start

 

权重问题:当lvs配置文件lvs.sh改变权重以及keepalived配置文件keepalived.conf修改权重后,哪个文件重新启动,哪个文件的权重生效。同时权重在master和backup上面可以设置不同。
当算法是rr的时候,权重没有作用,但是当算法是wlc和wrr的时候,必须设置权重,可以根据服务器的性能和配置,来确定权重的大小,当权重大的时候,lvs调度的服务也就多,同时权重高的服务器先收到链接。当小的时候,lvs调度的比较少。当权重为0的时候,表示服务器不可用,
测试lvs
1 当我把master的lvs服务关掉的时候,会将用户请求自动切换到backup上面进行工作。
2 当我把web服务关掉的时候,lvs上面会显示web消失,当启用后,web会自动显示
web关闭后:
watch -n 1 'ipvsadm -ln'

    
web启用后:
watch -n 1 'ipvsadm -ln'
   
3 当master服务器down的时候,backup自动会接替服务,当master起来的时候,backup会自动断掉。

4.压力测试

./ab -c 100 -n 10000 http://10.7.35.33/index.html

在主备机上查看:watch -n 1 'ipvsadm -Ln'

结果说明:由于配置文件中设置:persistence_timeout 60 //同一IP的连接60秒内被分配到同一台realserver

测试下发现其实主备机上的脚本可以不运行,直接修改一个keepalived.conf即可,不知道这种说法对不对。

参考:http://hi.baidu.com/rhce2010/item/b6dc4f7bbf294737714423dc

http://5iwww.blog.51cto.com/856039/267278等文档

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值