LVS之DR模式原理与实践

LVS常用的工作模式有DR、TUN、NAT、FULLNAT,其中DR模式的转发性能最好,但组网要求最为苛刻。本文将试着分析LVS DR模式原理,举例实际配置方式。

LVS DR模式组网

DR模式的组网要求LVS和Real server在同一网段二层互通。因为LVS DR模式在负载均衡转发报文时,只修改目的mac为real server的mac,lvs要能将报文转发给real server,就必须满足LVS和real server是同网段二层互通。

两种LVS DR实际应用场景的组网原理图

  • 1、客户端和LVS、real server三者同网段
  • 2、客户端与LVS、real server不同网段、LVS和real server同网段

报文转发过程

1)client发送请求到vip,real-server配置限制对vip应答arp,而lvs会对vip响应arp,因此client将请求发到LVS。
2)LVS机器收到发往vip的报文后,根据目的IP和目的port匹配ipvs规则,将报文目的mac改为real server的mac,同时将源mac改为LVS的mac后,发送到real server。
3)real server收到之后,mac/IP都是本机的,就将报文交由系统处理。
4)回程报文因real server收到的报文源IP就是client IP,real server直接将请求回给client。如果client和real server是同一个网段,响应报文直接通过二层透传发送给client,报文目的mac即为client mac;如果client和real server不是同一个网段,响应报文先发送到gateway,再走三层转发返回client。

DR模式负载均衡配置

因为LVS和real server都配置了VIP,client或者网关设备都可能arp学到LVS和real server的mac,也就会发生IP冲突,且无法实现负载均衡功能。为了避免这种情况发生,可通过内核参数arp_ignore和arp_announce的配置,只允许LVS应答VIP的arp请求,抑制real server应答VIP的arp请求和发送免费arp。(抑制ARP还可使用arptables)

  • 实验规划:
    virtual server: 192.168.0.2
    real server1: 192.168.0.3
    real server2: 192.168.0.4
    vip: 192.168.0.101

Virtual Server配置

virtual server在网卡子接口上配置vip,配置dr转发的ipvs规则。提高配置效率,将这些操作定义为shell脚本如下

#!/bin/bash
vip=‘192.168.1.100‘
mask=‘255.255.255.255‘
port=‘80‘
iface=‘eth1:1‘
rs1=‘192.168.0.3‘
rs2=‘192.168.0.4‘

case $1 in
start)
    ifconfig $iface $vip netmask $mask broadcast $vip up
    iptables -F
    # 配置ipvs规则
    ipvsadm -A -t ${vip}:${port} -s wrr
    ipvsadm -a -t ${vip}:${port} -r ${rs1} -g -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} -g -w 1
    #realserver不配置端口,dr模式不支持端口映射
    ;;
stop)
    ipvsadm -C
    ifconfig $iface down
    ;;
*)
    echo "Usage $(basename $0) start|stop"
    exit 1
    ;;
esac

RealServer 配置脚本

Realserver的vip配置在lo口,与arp_ignore、arp_announce参数的修改相配套,抑制了RealServer不应答vip的arp请求,而接受lvs-dr转发过来的报文。提高配置效率,将这些操作定义为shell脚本如下

#!/bin/bash
vip=192.168.0.101
mask=255.255.255.255
case $1 in
start)
    echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
    echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig lo:0 $vip netmask $mask broadcast $vip up
    route add -host $vip dev lo:0
    ;;
stop)
    ifconfig lo:0 down
    echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
    echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac

Linux 内核参数arp_ignore和arp_announce作用说明

arp_ignore - INTEGER
0:默认值,表示可使用本地任意接口上配置的任意地址进行arp应答;
1:仅当请求的目标IP配置在本地主机接受到报文的接口上时,才给予响应;
2:仅当目的IP配置在收到报文的接口上,且arp请求的源IP和该接口同一网段,才响应arp请求;
3:如ARP请求的IP作用域是主机则不响应,如果作用域是全局或者链路则响应ARP
4-7:保留
8:不应答所有本地IP
arp_announce - INTEGER
0:默认值,允许使用本机上所有接口的IP作ARP通告。
1:尽量避免使用本地IP向非本网卡直接连接网络进行ARP通告。
2:必须避免使用本地IP向非本网卡直接连接网络进行ARP通告。

原文地址:http://blog.51cto.com/13599730/2312603

时间: 2024-11-05 22:36:51

LVS之DR模式原理与实践的相关文章

LVS的DR模式

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:DR模式(Direct Routing)部署实验

本文介绍怎样在kvm的虚拟环境下,部署实验LVS的DR模式.包含网络结构图,怎样配置.以及使用tcpdump分析ip包. 网络结构图 kvm节点(client) 192.168.7.2 (CIP) |           br_e网桥 /                     \ (VIP) eth7:192.168.7.33      eth14: 192.168.7.99       lvs虚拟主机                      server虚拟主机 (DIP)        

CentOS6.4 配置LVS(DR模式)

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.

lvs+keepalived(DR模式)

(一) 网络架构     D1: (LVS_MASTER)     eth1:192.168.1.111     D2:(LVS_BACKUP)     eth2: 192.168.1.113     R1: (web_server1)     eth1:192.168.1.214      R2: (web_server2)     eth1:192.168.1.215      VIP:192.168.1.200 (网站对外提供的虚拟ip地址,域名是解析到这个ip地址) (二) 安装keep

lvs中dr模式配置脚本

1 dr模式介绍 1.1 lvs的安装 安装详解:http://blog.csdn.net/CleverCode/article/details/50586957. 1.2 lvs模式 lvs有三种模式dr,nat,tun.这里先介绍dr模式. 1.3 dr特点 1)Load Balancer和所有的Real Server在同一个局域网段上. 2)Real Server将请求处理后,直接返回给用户,不需要在通过调度器返回. 1.4 处理过程 请求过程:客户 => vip => RealServ

搭建LVS(DR模式)+Keepalived高可用群集,可跟做!!!

Keepalived的设计目标就是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器.管理服务器池,而不仅仅用作双机热备.使用Keepalived构建LVS群集更加简便易用,主要优势体现在,对LVS负载调度器实现热备切换.提高可用性,对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入. 在基于LVS(DR模式)+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本次实验以DR模式的LVS群集为基础,增加一台负载

基于LVS的DR模式实现PHP应用

LVS-DR模式: 客户端请求服务器上的资源,就会发送请求报文,请求报文到达LVS调度器,调度器拆解报文首部,查看到请求的目标IP是自己,然后根据请求的目标端口并且根据调度算法随机挑选出一台Real Server服务器,这时在请求报文首部在次封装一层帧,即MAC地址,源MAC是自己,目标MAC是RS服务器.RS服务器接收到报文请求并处理请求,构建响应报文并发送给客户端,不经过调度器,所以避免了调度器过载导致并发出现瓶颈.因为RS是直接发送响应报文给客户端,所以需要RS服务器上需要配置调度器的公网

LVS之DR模式

DR(调度器将请求来的数据包的目标mac地址改为real server的mac地址,返回的时候也不经过调度器,直接返回给客户端) 每个real server 都要有公网ip 配置要求三台机器 每个网卡都要配置公网ip LVS/DR 配置 三台机器: director(eth0192.168.1.123, vip eth0:0: 192.168.1.128) real server1(eth0 rip: 192.1.122, vip lo:0: 192.168.1.128) real server

linux之LVS的DR模式搭建以及配置高可用管理LVS(heartbeat,keepalive)

LVS/DR Realserver: 172.25.44.6 172.25.44.7 Virtualserver: VR3:172.25.44.3 VR5:172.25.44.5 Vip:172.25.44.100 Lvs和realserver必须在同一网段 ######################## Virtualserver: ip addr add 172.25.44.100/24 dev eth0   ##添加vip ip addr show yum install ipvsadm