DR模式:

请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。

DR模式下需要LVS和绑定同一个VIP(RS通过将VIP绑定在loopback实现)。

一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变,LVS只是做了一下移花接木。

RS收到LVS转发来的包,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。

而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。

DR模式是性能最好的一种模式。

 
 
1. ARP广播会产生的问题
 
当客户端发起访问VIP 对应的域名的请求时,根据网络通信原理会产生ARP 广播,因为负载均衡器和真实的服务器在同一网络并且VIP设置在集群中的每个节点上,此时集群内的真实服务器会尝试回答来自客户端计算机的查找VIP的ARP广播,这就会产生问题,大家都说我是"VIP"。
 
2. 为了达到负载均衡的目的,必须想法办让真实服务器忽略来自客户端计算机的ARP广播请求
 
虚拟ip地址的广播地址是它本身,子网掩码是255.255.255.255。 为什么要这样呢?因为有若干机器要使用同一个ip地址,
用本身做广播地址和把子网掩码设成4个255就不会造成ip地址冲突了,否则lvs将不能正常转发访问请求。
方法一:在真实服务器上设置lo 忽略ARP 广播
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 
 
 如果VIP 是设置在真实服务器的非lo接口,那么做如下设置
net.ipv4.conf.ethN.arp_ignore = 1 
net.ipv4.conf.ethN.arp_announce = 2 (N 为网卡接口)
net.ipv4.conf.all.arp_ignore = 1 
net.ipv4.conf.all.arp_announce = 2 
 
方法二: 隐藏真实服务器上VIP 的网络接口
 
#to activate the hidden feature 
 echo 1 > /proc/sys/net/ipv4/conf/all/hidden
#to make lo:0 not arp, put lo here 
 echo 1 > /proc/sys/net/ipv4/conf/<interface_name>/hidden
 
3、session
客户端与服务端的通信,一次请求可能包含多个TCP包,LVS必须保证同一连接的TCP包,必须被转发到同一台RS,否则就乱套了。为了确保这一点,LVS内部维护着一个Session的Hash表,通过客户端的某些信息可以找到应该转发到哪一台RS上。
 
 
参考资料:http://www.cnblogs.com/likehua/archive/2014/06/19/3796849.html
--------------------------------------------------------------------------------
实例列举:

DR模式中LVS主机与实际服务器都有一块网卡连在同一物理网段上。

IP分配

VIP:10.10.3.170

RIP1:10.10.3.140

RIP2:10.10.3.141

1、安装所需的依赖包

yum install -y wget make kernel-devel gcc gcc-c++ libnl* libpopt* popt-static

2、创建一个软链接,防止后面编译安装ipvsadm时找不到系统内核

ln -s /usr/src/kernels/2.6.32-358.18.1.el6.x86_64/ /usr/src/linux

3、下载安装ipvsadm

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar zxvf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
make && make install

4、编写并运行脚本(LVS服务器的脚本)

vi lvs.sh
#!/bin/bash

VIP=10.10.3.170
RIP1=10.10.3.140
RIP2=10.10.3.141 /etc/rc.d/init.d/functions logger $0 called with $1
case "$1" in start)
echo " start LVS of DirectorServer"
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
echo "1" >/proc/sys/net/ipv4/ip_forward #Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g #Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
*) echo "Usage: $0 {start|stop}"
exit 1
esac

注:/sbin/ipvsadm -A -t $VIP:80 -s rr (rr代表轮询,还有分配方式)

/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g (-g代表DR模式,还有其他模式)

5、给脚本加权限,并执行

chmod +x lvs.sh
chmod 755 /etc/rc.d/init.d/functions
./lvs.sh start

6、配置后端的WEB服务器脚本

vi realserver.sh
#!/bin/bash
# 2013-09-07 by kgdxpr
VIP=10.10.3.170
/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
#受限广播,它不被路由发送,但会被送到相同物理网络段上的所有主机IP地址的网络字段和主机字全为1就是地址255.255.255.255
/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
sysctl -p >/dev/null 2>&1
;;
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

7、给脚本加权限,并执行

chmod +x realserver.sh chmod 755 /etc/rc.d/init.d/functions
./realserver.sh start

--------------------------------------------------------------------------
Realserver VIP自动设置脚本:

#vim /etc/init.d/vipd

#!/bin/bash
# Script to start LVS DR virtual server.
# description: LVS DR virtual server
# chkconfig:
. /etc/rc.d/init.d/functions
VIP1=10.1.1.18
VIP2=10.1.1.19
host=`/bin/hostname`
case "$1" in
start)
# Start LVS-DR virtual server on this machine.
/sbin/ifconfig lo down
/sbin/ifconfig lo up
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo: $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
/sbin/ifconfig lo: $VIP2 broadcast $VIP2 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev lo:
/sbin/route add -host $VIP2 dev lo:
;;
stop)
# Stop LVS-DR virtual server loopback device(s).
/sbin/ifconfig lo: down
/sbin/ifconfig lo: down
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
;;
status)
# Status of LVS-DR virtual server.
islothere1=`/sbin/ifconfig lo: | grep $VIP1`
islothere2=`/sbin/ifconfig lo: | grep $VIP2`
isrothere1=`netstat -rn | grep "lo" | grep $VIP1`
isrothere2=`netstat -rn | grep "lo" | grep $VIP2`
if [ ! "$islothere1" -o ! "$isrothere1" ];then
echo "LVS-DR virtual server 10.1.1.18 Stopped."
else
echo "LVS-DR virtual server 10.1.1.18 Running."
fi
if [ ! "$islothere2" -o ! "$isrothere2" ];then
echo "LVS-DR virtual server 10.1.1.19 Stopped."
else
echo "LVS-DR virtual server 10.1.1.19 Running."
fi
;;
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit
;;
esac #chkconfig --add vipd

LVS的DR模式的更多相关文章

  1. LVS:DR模式(Direct Routing)部署实验

    本文介绍怎样在kvm的虚拟环境下,部署实验LVS的DR模式.包含网络结构图,怎样配置.以及使用tcpdump分析ip包. 网络结构图                               kvm ...

  2. LVS的DR模式负载均衡

    参考项目:http://www.cnblogs.com/along21/p/7833261.html#auto_id_3 LVS的DR模式实现负载均衡 1.环境 lvs-server :192.168 ...

  3. Lvs Keepalive DR模式高可用配置

    Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...

  4. lvs中dr模式配置脚本

    1 dr模式介绍 1.1 lvs的安装 安装具体解释:http://blog.csdn.net/CleverCode/article/details/50586957. 1.2 lvs模式 lvs有三 ...

  5. lvs部署-DR模式

    DR模式 角色 IP地址 备注 LVS负载均衡器 192.168.119.132 VIP:192.168.119.150    ipvsadm http_Real server 192.168.119 ...

  6. CentOS6.4 配置LVS(DR模式)

    DR模式中LVS主机与实际服务器都有一块网卡连在同一物理网段上. IP分配 VIP:10.10.3.170 RIP1:10.10.3.140 RIP2:10.10.3.141 1.安装所需的依赖包 y ...

  7. LVS的DR模式测试案例<仅个人记录>

    初始概念 大家都知道LVS,是章文嵩博士创建的,所以首先推一下主站吧!http://zh.linuxvirtualserver.org/ LVS集群分为三层结构: 负载调度器(load balance ...

  8. LVS+keepalived DR模式配置高可用负载均衡集群

    实验环境 LVS-Master 10.0.100.201 VIP:10.0.100.203 LVS-Slave       10.0.100.204 WEB1-Tomcat 10.0.2.29 gat ...

  9. lvs 中DR模式负载均衡及keepalived

    lvs DR配置 LVS负载均衡:三种负载均衡模式:DR,TUN(ip隧道),NAT,这里我们介绍DR模式 server1: 首先,配置server机yum源 方便后期实验流畅vim /etc/yum ...

随机推荐

  1. 【转】每天一个linux命令(35):ln 命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一 ...

  2. Web自动化测试框架Watir(基于Ruby) - 第2章 使用Watir写自动化测试脚本

    一.先来看一个小DEMO 通过上一篇博文<Web自动化测试框架Watir(基于Ruby) - 第1章 Windows下安装与部署>的介绍,我们已经有了完整Watir运行环境,现在我们可以来 ...

  3. webstorm打开后无法显示文件夹目录

    最近接触webstorm,上午研究怎么删除项目,不小心把项目在目录中删除了,然后重新创建时,无法显示了. 状况类似这样的 百度上搜了一些没搜到,关键字是“webstorm 项目 目录 无法显示文件夹” ...

  4. android 自定义radiogroup的两种方式

    这里先备注下 listview+radiobutton实现  浅显易懂 http://www.haolizi.net/example/view_3312.html 在radiogoup原生态源码的基础 ...

  5. Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析

    转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...

  6. BASIC-21_蓝桥杯_Sine之舞

    思路: 先根据例子找出规律,列出递归要打印的数据; 示例代码: #include <stdio.h> int n = 0; void dg(int x){ int i = 0; if (x ...

  7. 【Spring学习笔记-MVC-15】Spring MVC之异常处理

    作者:ssslinppp       1. 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理 ...

  8. csrf xss sql注入

    1.输入框 sql注入 测试直接在输入框输入1' ,看sql会不会拼接出错 xss攻击 csrf攻击 测试直接在输入框输入 <script>alert(123)</script> ...

  9. Amazon behavior question

    Amazon onsite behavior question[一亩三分地论坛面经版] - Powered by Discuz! http://www.1point3acres.com/bbs/thr ...

  10. eclipse在线安装jd反编译插件

    eclipse在线安装jd反编译插件地址 http://jd.benow.ca/jd-eclipse/update