LVS搭建负载均衡(二)DR模型

应用场景:LVS配置负载均衡方式之一:dr

测试环境

      

      

配置步骤

  1. 在主机lvs上安装ipvsadm

    ~]# yum install ipvsadm -y

    ~]# ipvsadm    //启动;该命令由ipvsadm软件生成

    ~]# lsmod |grep ip_vs  //查看有无输出,若有,代表成功

     

  2. 新建配置脚本

    ~]# vim lvs-dr.sh

#!/bin/bash
VIP=138.138.82.222
RIP1=138.138.82.12
RIP2=138.138.82.13
/etc/rc.d/init.d/functions
case "$1" in
start)
           echo "start LVS of DirectorServer DR" 
           /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.0 up
           /sbin/route add -host $VIP dev eth0:0
           #echo "1" >/proc/sys/net/ipv4/ip_forward      ##说明:dr模式不必开启ip转发
           /sbin/ipvsadm -C                    ##可先清空一下
           /sbin/ipvsadm -A -t $VIP:80 -s rr          ##这里测试的rr:轮询算法
           /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
           /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
           /sbin/ipvsadm
       ;;
stop)
           echo "stop LVS of DirectorServer DR" 
           #echo "0" >/proc/sys/net/ipv4/ip_forward    ##说明:同上
           /sbin/ipvsadm -C
           /sbin/ifconfig eth0:0 down
           ;;
*)
          echo "Usage: $0 {start|stop}" 
          exit 1
esac
exit 0

  保存,退出;

  3. 运行脚本

    ~]# sh lvs-dr.sh start    //启动,出现如下显示代表正常

     

   4. 配置后端的web服务器(两台Nginx,搭建略)

    在web端的操作总结起来两点:

    绑定VIP至lo接口

    抑制RS(Real Server,此处值得两台Nginx)的arp帧

#!/bin/bash 
VIP=138.138.82.222
/etc/rc.d/init.d/functions
case "$1" in
start)
           echo "start LVS of RealServer DR" 
           /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
           /sbin/route add -host $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
       ;;
stop)
           /sbin/ifconfig lo:0 down
           echo "close LVS of RealServer DR" 
           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
exit 0

  保存,退出;

  在Nginx-a和Nginx-b上依次执行该脚本,可以查看下接口:

  ~]# ifconfig  或者  ~]# ip a

   

  5测试

    经测试,在lvs该主机上直接curl是不能获取页面的,这里在另外一台机器上执行以下测试命令:

    ~]# while true; do curl 138.138.82.222; sleep 1; done

     

结束.

原文地址:https://www.cnblogs.com/ding2016/p/7220457.html