LVS 之 DR model arp_announce arp_ignore转

DR模型之 可伸缩Cache服务

DR核心:响应过程不经过Director

DR模型 要点:

 A.以下3种办法 都能达到:   仅让Director 会响应  Router的 关于VIP 的动态ARP 广播请求,禁止RS上的VIP直接跟前端路由通信

1、修改路由,使用静态ARP;

2、在RS上使用arptables,禁止响应对VIP的ARP广播请求;

3、在RS上修改其内核参数,并向VIP配置在与RIP不同的接口的别名上;

       B. Diretor 转交报文 给 Real Server 时 ,必须 以VIP 为 目标 IP ,并且 Diretor 对报文的做如下动作:修改 报文的目标MAC 为 Real Server MAC,确保报文送到的是 Real Server

 

       C. 强行定义 路由规则,明确告诉linux: 只要访问目标为 VIP 那么响应的 源IP 就必须是VIP

 

   D. 响应报文从eth0出来后    交给的下一个 主机 ,那么 下个主机一定是 eth0(RIP)的网关。

 

 对调整的内核参数解释:

我们一般采用修改 kernel 参数,来屏蔽 Real Server 对VIP 的ARP响应与通告,对此过程做如下解释:

背景:

HOST上有多个网卡,却在不同一网段,例如 eth0:net0    eth1:net1    eth2:net2 ..... ,这时 如果 net0 网段的主机 发起ARP请求,那么HOST 会把 eth0,eth1,eth2... 这些在HOST的网卡设备的 IP 与MAC 都发给 net0 里的请求端,但是 请求端 拿到了3个 设备的IP与MAC (eth0:IP MAC , eth1:IP MAC  eth2 : IP MAC)  以为这3个 IP 都能通信,而实际上 ,只有net0 内的eth0 网卡给他的IP和MAC 才能通信 , 而 eth1,eth2 给的IP与MAC 对于 请求端来说 是没有意义的,

如何是 arp请求 能准确的 找到能通信的地址?

在 kernel 2.4.26  和2.6.4 之后,引入了2个网卡设备标识:arp_ignor/arp_announc ,用于实现 调整ARP协议栈 工作模式

arp_ignore      用于定义响应 限制级别

arp_announce 用于定义通告 限制级别

例如:

通告:当主机接入 net 3.0 时

之前内核:  通告  设备1.1 IP 和MAC  与  设备3.1 IP 与MAC

之后内核:告诉内核:arp_announce=2     则仅 通告 设备 3.1 IP 与MAC

仅宣告: 接入该网络的网卡的IP与MAC

APR忽略:当ARP广播 来自 net 3.0 时

之前内核: 响应 设备1.1 IP 和MAC  与 设备3.1 IP 与MAC

之后内核:告诉内核:arp_ignore=1        则仅  响应 设备3.1 IP 与MAC

对 进入该网卡 arp请求,仅回应 进入网卡的 IP与MAC

那个设备向内核 宣布 arp_announce=2 arp_ignore=1  这表示 那个设备 自己管理自己的设备,不用别的设备 帮我通告了,这样arp 广播 就能找到 用于 准确 通信的 地址了。

 

  


一个公网地址 的LVS DR 模型

缺点: 需要直接 做 路由,使请求到 达 互联网

公网地址的LVS DR 模型(VIP 与RIP 同网段)

当然 这个是 比较 常用的 ,省下路由费 ,也解决了路由引起的 负载瓶颈,当然公网IP 需要自己掏钱的

规划:(192.168.195.0 是我虚拟机 网关所在网段,能够自由上网,这里当公网IP用了)

Real Server 配置

解决arp问题

 

配置所以接口的

echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

特地配置lo (告诉kernel 我的设备 我自己管,其他人 就别插手了)

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

不是用来通信的,只是用在响应客户端的时候,把 VIP 作为源地址而已(屏蔽掉自己响应 VIP 请求)

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

定义 目标地址是  VIP 的报文   出去报文的 设备是lo:0

/sbin/route add -host $VIP dev lo:0

Real Server 1:

[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore [[email protected] ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [[email protected] ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce [[email protected] ~]# ifconfig lo:0 192.168.195.150 broadcast 192.168.195.171 netmask 255.255.255.255 up [[email protected] ~]# route add -host 192.168.195.150 dev lo:0 [[email protected] ~]# route -n Kernel IP routing table Destination     Gateway         Genmask       Flags Metric Ref    Use Iface 192.168.195.150 0.0.0.0         255.255.255.255 UH    0      0        0 lo 192.168.195.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0 169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0 0.0.0.0        192.168.195.2   0.0.0.0         UG    0      0        0 eth0 

[[email protected] ~]# ifconfig eth0      Link encap:Ethernet  HWaddr 00:0C:29:6F:42:49             inet addr:192.168.195.171  Bcast:192.168.195.255  Mask:255.255.255.0           inet6 addr: fe80::20c:29ff:fe6f:4249/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:746 errors:0 dropped:0 overruns:0 frame:0           TX packets:471 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000           RX bytes:68969 (67.3 KiB)  TX bytes:53295 (52.0 KiB) lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0           inet6 addr: ::1/128 Scope:Host           UP LOOPBACK RUNNING  MTU:16436  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b) lo:0      Link encap:Local Loopback            inet addr:192.168.195.150  Mask:255.255.255.255           UP LOOPBACK RUNNING  MTU:16436  Metric:1

 

Real Server 2

[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore[[email protected] ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce[[email protected] ~]# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore [[email protected] ~]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce [[email protected] ~]# ifconfig lo:0 192.168.195.150 broadcast 192.168.195.170 netmask 255.255.255.255 up [[email protected] ~]# route add -host 192.168.195.150 dev lo:0

Director 配置

 

ipvs报文需要 的出口 需要 打开ipforward

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

因为Director的VIP 是用来 提供服务的,必须配置 在出口网卡上,而且 Direcotor 有DIP 所以必须定义路由

/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/route add -host $VIP dev eth0:1

清空iptables 避免冲突,清空 ipvsadm ,重新设置 rules

[[email protected] ~]# iptables -F

[[email protected] ~]# iptables -Z

[[email protected] ~]# ipvsadm -Z

提供集群服务

/sbin/ipvsadm -A -t $VIP:80 -s wlc

提供Real  Server

/sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g -w $RSWEIGHT1

/sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g -w $RSWEIGHT2

Director 配置

[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/ip_forward [[email protected] ~]# ifconfig eth0:1 192.168.195.150 broadcast 192.168.195.150 netmask 255.255.255.255 up [[email protected] ~]# route add -host 192.168.195.150 dev eth0:1 [[email protected] ~]# iptables -F [[email protected] ~]# iptables -Z [[email protected] ~]# ipvsadm -Z [[email protected] ~]# ipvsadm -A -t 192.168.195.150:80 -s wlc[[email protected] ~]# ipvsadm -a -t 192.168.195.150:80 -r 192.168.195.170 -g -w 1[[email protected] ~]# ipvsadm -a -t 192.168.195.150:80 -r 192.168.195.171 -g -w 2

IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes   -> RemoteAddress:Port TCP  192.168.195.150:80               5091    25495        0  1824257        0   -> 192.168.195.170:80               1703     8534        0   612007        0   -> 192.168.195.171:80               3388    16961        0  1212250        0
时间: 2024-11-09 00:04:48

LVS 之 DR model arp_announce arp_ignore转的相关文章

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)        

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

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

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模式

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模式分析(二)

#vim /etc/init.d/lvsdrrip #!/bin/bash #DR server VIP=192.168.46.200 case "$1" in start) echo "start LVS of DR" /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add  -host  $VIP dev lo:0 echo "1"

LVS + keepalived(DR) 实战

一.LVS体系结构 使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层,用Load Balancer表示,中间的服务器群组层,用Server Array表示,最底端的数据共享存储层,用Shared Storage表示,在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务. LVS体系结构如图1所示: 二.LVS 3种负载均衡技术对比 负载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法.有基于客户端调度访问的方法.有基于应用层系统负载的调度方法,

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+Keepalived(DR/主备)+apache

负载均衡高可用之LVS+Keepalived(DR/主备)+apache 介绍: LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的.高可用的虚拟服务器.整个服务器集群的结构对客户