码迷,mamicode.com
首页 > 其他好文 > 详细

LVS之三:DR模型(通过脚本实现)

时间:2015-05-04 10:17:48      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:客户端   接口   模型   通告   

技术分享

1.当客户端访问集群中的服务(例如web),源IP(定义为A)和目标IP(定义为B)如上图所示,发送数据报文到调度器上

<1>客户端发送报文必须到调度器上,不能到Rearserver上,不然无法实现调度

实现原理:虽然RS上的lo口也配置VIP,但是却无法相应,通过如下配置在RS上实现

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

arp_ignore(接受到arp请求时的响应级别,默认0)

1) 0:只要本地配置有相应的地址,给予响应

2) 1:仅在请求的目标地址配置请求到达的接口上的时候,才给于响应

arp_announce(将自己地址向外通告时的通告级别,默认0)

1) 0:将本地任何接口上的任何地址向外通告

2) 1:试图仅向目标网络通告语气网络匹配的地址

3) 2:仅向与本地接口上地址匹配的网络进行通告

2.调度器收到报文后查询ipvsadm规则,符合集群服务后发送报文到RS上,源目IP地址不变,是通过修改MAC地址发送到RS上的,

<1>调度器规则

ipvsadm -A -t 192.168.11.100:80 -s wrr

ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.12 -g -w 2

ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.13 -g -w 4

3.RS收到报文后,发现目标IP为自己的VIP(lo:0上配置,不对外响应,只做回报的源IP),用自己的VIP作为源地址发送报文

<1>如何实现发送报文时,源IP为自己的lo:0上的VIP,默认linux报文从哪个接口出源IP为那个接口

实现原理:ifconfig lo:1 192.168.11.100 netmask 255.255.255.255 up  (配置RS的VIP,不对外响应)

  route add -h 192.168.11.100 dev lo:0   (增加路由,报文目标IP为192.168.11.100的接口为lo:0,

这样回报也是通过lo:0回报,确保报文源IP为VIP)

<2>确保调度器上的发包正确,增加如下配置

 ifconfig eth:0 192.168.11.100 netmask 255.255.255.255 up  (添加VIP地址)

 route add -h 192.168.11.100 dev eth:0 

4.客户端收到后源IP为VIP,目的IP为客户端的IP,

报文的封装为:RS通过自己的lo:0回应报文,源IP则为VIP,目标IP则为客户端IP


本文出自 “anka” 博客,请务必保留此出处http://anka0501.blog.51cto.com/10129669/1641509

LVS之三:DR模型(通过脚本实现)

标签:客户端   接口   模型   通告   

原文地址:http://anka0501.blog.51cto.com/10129669/1641509

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!