视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
负载均衡--LVS+Keepalived
2025-09-29 17:07:01 责编:小OO
文档
利用LVS+Keepalived 实现高性能高可用负载均衡

作者:NetSeek            网站: http://www.linuxtone.org 

   背景:

        随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。

一.LVS+Keepalived 介绍

1.LVS

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);

八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。

2.Keepalvied

       Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现

二. 网站负载均衡拓朴图

.

   IP信息列表:

名称IP
 LVS-DR-Master61.1.122.6
 LVS-DR-BACKUP61.1.122.7
 LVS-DR-VIP61.1.122.8
 WEB1-Realserver61.1.122.9
 WEB2-Realserver61.1.122.10
 GateWay61.1.122.1
  

三. 安装LVS和Keepalvied软件包

   1. 下载相关软件包

     #mkdir /usr/local/src/lvs

     #cd /usr/local/src/lvs

     #wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

     #wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz

   2. 安装LVS和Keepalived

     #lsmod |grep ip_vs

#uname -r

2.6.18-53.el5PAE

#ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/  /usr/src/linux

#tar zxvf ipvsadm-1.24.tar.gz

#cd ipvsadm-1.24

#make && make install

#find / -name ipvsadm  # 查看ipvsadm的位置

#tar zxvf keepalived-1.1.15.tar.gz

#cd keepalived-1.1.15

#./configure  && make && make install

#find / -name keepalived  # 查看keepalived位置        

    

#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

#mkdir /etc/keepalived

#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

#cp /usr/local/sbin/keepalived /usr/sbin/

#service keepalived start|stop     #做成系统启动服务方便管理.

四. 配置LVS实现负载均衡

  1. LVS-DR,配置LVS脚本实现负载均衡

      #vi /usr/local/sbin/lvs-dr.sh

      #!/bin/bash

# description: start LVS of DirectorServer

#Written by :NetSeek http://www.linuxtone.org

GW=61.1.122.1

# website director vip.

SNS_VIP=61.1.122.8

SNS_RIP1=61.1.122.9

SNS_RIP2=61.1.122.10

 

     ./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

broadcast $SNS_VIP up

           /sbin/route add -host $SNS_VIP dev eth0:0

           /sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr -p 3

           /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 1

           /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 1

touch /var/lock/subsys/ipvsadm >/dev/null 2>&1

 

       ;;

stop)

           /sbin/ipvsadm -C

           /sbin/ipvsadm -Z

           ifconfig eth0:0 down

           ifconfig eth0:1 down

           route del $SNS_VIP

           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

      

  2. 配置Realserver脚本.

#vi /usr/local/sbin/realserver.sh

#!/bin/bash

# description: Config realserver lo and apply noarp 

#Written by :NetSeek http://www.linuxtone.org

SNS_VIP=61.1.122.8

 

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

 

case "$1" in

start)

       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

       /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

  或者采用secondary ip address方式配置

  # vi /etc/sysctl.conf

    net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

  #sysctl –p

  #ip addr add 61.1.122.8/32 dev lo

  #ip add list 查看是否绑定

  3. 启动lvs-dr脚本和realserver启本,在DR上可以查看LVS当前状态:

#watch ipvsadm –ln

五.利用Keepalvied实现负载均衡和和高可用性

  1.配置在主负载均衡服务器上配置keepalived.conf

  #vi /etc/keepalived/keepalived.conf

  ! Configuration File for keepalived

 

global_defs {

   notification_email {

      cnseek@gmail.com

  #   failover@firewall.loc

  #   sysadmin@firewall.loc

   }

   notification_email_from sns-lvs@gmail.com

   smtp_server 127.0.0.1

  # smtp_connect_timeout 30

   router_id LVS_DEVEL

}

 

# 20081013 written by :netseek

# VIP1

vrrp_instance VI_1 {

    state MASTER             #备份服务器上将MASTER改为BACKUP   

    interface eth0

    virtual_router_id 51

    priority 100    # 备份服务上将100改为99

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        61.1.122.8   

        #(如果有多个VIP,继续换行填写.)

    }

}

 

virtual_server 61.1.122.8 80 {

    delay_loop 6                  #(每隔10秒查询realserver状态)

    lb_algo wrr                  #(lvs 算法)

    lb_kind DR                  #(Direct Route)

    persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)

    protocol TCP                #(用TCP协议检查realserver状态)

 

    real_server 61.1.122.9 80 {

        weight 3               #(权重)

        TCP_CHECK {

        connect_timeout 10       #(10秒无响应超时)

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

    real_server 61.1.122.10 80 {

        weight 3

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

 

2. BACKUP服务器同上配置,先安装lvs再按装keepalived,仍后配置/etc/keepalived/keepalived.conf,只需将红色标示的部分改一下即可.

 

3. vi /etc/rc.local

   #/usr/local/sbin/lvs-dr.sh  将lvs-dr.sh这个脚本注释掉。步

   #/usr/local/sbin/lvs-dr.sh stop 停止lvs-dr脚本

   #/etc/init.d/keepalived start  启动keepalived 服务,keepalived就能利用keepalived.conf 配

   置文件,实现负载均衡和高可用.

4. 查看lvs服务是否正常

  #watch ipvsadm –ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP  61.1.122.8:80 wrr persistent 60

-> 61.1.122.10:80 Route 3 0 0

-> 61.1.122.9:80 Route 3 0 0

 #tail –f /var/log/message  监听日志,查看状态。

5.停Master服务器的keepalived服务,查看BAKCUP服务器是否能正常接管.

四.相关参考

  1.LVS 基础知识汇总

LVS的算法介绍               http://www.linuxtone.org/viewthread.php?tid=69

学习LVS的三种转发模式       http://www.linuxtone.org/viewthread.php?tid=77

LVS中的IP负载均衡技术       http://www.linuxtone.org/viewthread.php?tid=68

更多的请到http://www.linuxtone.org 负载均衡版查看

3.Keepalived 相关参考资料。

   http://www.keepalived.org/documentation.html下载本文

显示全文
专题