ARP地址解析:

报文从客户的短到达路由器之后,会加上源mac地址(从路由器哪个接口进入的就是哪个接口的mac地址),当到达本地网络之后,会在整个本地网络中做arp地址解析广播,把ip地址转换为mac地址进行通信。路由器进行报文的源mac和目标mac的封装,发送给交换机,交换机通过维护的mac地址表,进行报文的转发。

相关内容:

通过修改请求报文的目标mac地址实现请求报文的转发。

(1)保证前端路由器将目标ip为vip的报文请求发送给调度器(director);

解决方法:

静态绑定:就是在路由器上进行配置一个arp地址表,将来自的访问请求直接解析为mac地址,发送给调度器(director);

arptables:在两台RS上配置arptables规则,将收到vip的arp报文请求拒绝应答或者拒绝访问;

修改RS主机内核的参数(最好用的):arp_announce(是否接受别人的通告,并且进行记录,是否通告给别人),arp_ignore(是否响应别人的arp请求)

(2)RS的RIP可以使用私有地址,但也可以使用公网地址;

(3)RS和director必须在同一物理网络中;

(4)请求报文必须经过director,但响应报文一定不能经由director;

(5)不支持端口映射;

(6)RS支持大多数OS;

(7)RS的网关不能指向DIP;

当rip、vip和dip在同一网段的时候,rip指向的网关为dip的网关。当rip、vip和dip不在同一网段的时候,rip指向的网关为直接能跟客户端通讯的下一跳路由器的ip。通过修改请求报文的mac地址进行转发,在dr模型中,在调度器(director)上有两个ip地址,为VIP和DIP。同样的在RS上也有两个ip地址,为VIP和RIP。通常情况下,在RS上,VIP一般配置在本地回环接口的别名上。

    通常在director上,vip配置在网卡的别名上,dip就是网卡的ip地址。


调度详细过程:

第一步:客户端发起请求报文,报文的源IP地址为CIP,目标IP地址为VIP。在经过路由器的时候,通过对VIP的地址解析,封装为MAC帧数据, 其源MAC为(从路由器哪个接口进入的就是哪个接口的MAC的地址),进行ARP广播,只能找到VIP所在的调度器(director),同时进行对MAC帧数据进行解封。

第二步:调度器通过某种调度算法,找出一个RS,做ARP地址广播。之后,经过调度器调度之后,对请求报文进行封装包含源MAC地址(源MAC地址并不重要)、请求报文本身(包含源IP和目的IP)以及包含挑选出来的RS的MAC地址。调度器将这个封装报文发回给交换机,交换机通过本身的MAC地址表找到调用的RS,进行解封,发现目的IP地址即VIP在本机有,那么提供服务。
    第三步:应答报文通过交换机和路由器直接返回给客户端。应答报文在在rs内部,由于客户端请求的为vip,所以不能通过rip所在网卡直接响应,必须在rs内部添加一条路由,使得从lo接口哪个别名上进来的请求,还得经过lo接口上的哪个别名出去。前提:服务器RS的RIP必须可以通过路由器与客户端进行通信。

实现拓扑:

实现对http服务的调度。

配置过程:

(1)对调度器(director)进行配置,同时在director上安装ipvsadm软件包。

添加vip在director上。

[root@7-1 ~]# ifconfig eno16777736:0 172.16.125.100/32 broadcast 172.16.125.100 up

要求是对vip172.16.125.100的请求必须经过eno16777736:0该接口进行响应。

[root@7-1 ~]# route add -host 172.16.125.100 dev eno16777736:0

(2)后端RS的详细配置:

首先修改内核参数,保证前段路由器将目标地址为vip的报文发送给director。在后端RS上都要进行设置。

# 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

然后添加vip到lo接口的别名上,并且绑定通过lo接口别名进来的报文必须经过lo接口别名设备发送出去。后端RS上都要设置,同时在后端RS上开启httpd服务。

[root@7-2 ~]# ifconfig lo:0 172.16.125.100/32 broadcast 172.16.125.100 up
[root@7-2 ~]# route add -host 172.16.125.100 dev lo:0

(3)在调度器上进行ipvs规则的设置。

[root@7-1 ~]# ipvsadm -A -t 172.16.125.100:80 -s rr
[root@7-1 ~]# ipvsadm -a -t 172.16.125.100:80 -r 172.16.125.6 -g
[root@7-1 ~]# ipvsadm -a -t 172.16.125.100:80 -r 172.16.125.7 -g

测试,在实现的时候,采用的是rr(轮询)算法,在客户机上对vip进行访问。

转载于:https://blog.51cto.com/angrybird/1706587

LVS--DR模型介绍及实现相关推荐

  1. LVS DR模型详解

    DR模型的特点: 1.director必须与realserver位于同一个网络. 2.realserver可以使用公网ip地址,便于远程管理与配置. 3.director只负责处理入站请求.而响应报文 ...

  2. lvs dr 模型配置详解

    lvs dr 模型配置详解 [学习笔记] 前期准备: 两台服务器 note01(lvs服务器) note02(real sever) 1 首先在note01配置子网卡: ifconfig eth0:2 ...

  3. LVS DR模型及LVS持久连接

    LVS之DR模型以及持久连接 LVS的简单介绍 linux virtual server 简单来讲lvs是一段内核代码 类似于netfilter本身是一框架但不提供任何功能,但是在这框架上提供了能够根 ...

  4. LVS DR模型配置示例

    要让路由知道哪台主机是Director,进行选择: 1.VIP:MAC(Director VIP) -- MAC绑定,但未必可行,例如路由是运营商的. 2.arptables 3.kernel par ...

  5. LVS(14)——DR模型实践、交换机

    DR模型的配置见我的上一篇博客: 在lvs主机上操作ipvsadm: 在第四台和第五台主机上开启httpd服务 这里实现了DR模型,接下来测试 在客户端访问该vip: 访问成功 总结:DR模型里的真实 ...

  6. LVS(13)——DR模型准备工作及ip地址冲突问题

    之前,我们的模型都是-m,也就是NAT模型,但是我们如果不指定,默认模型是DR模型. 也就是route. DR模型也准备五台主机: (1)客户端主机 单网卡NAT 192.168.19.180 (2) ...

  7. 详解LVS配置DR模型

    详解LVS配置DR模型 准备: 三台服务器,一台LVS,两台RS 操作 LVS: 8是随便写的 新配置一个虚拟网卡,作为LVS的VIP,之后的访问就用这个"192.168.28.150&qu ...

  8. 负载均衡集群LVS模式之DR模型

    在NAT模型下,director的工作能力是很有限的,每个用户访问服务器时,都要先访问director,在一定的范围内director可以承受,但超出这个范围director就无能为力,在较大规模应用 ...

  9. lvs之 lvs原理架构介绍

    一. 概念 lvs的术语: Router:GWIP vs:virtual server,director rs:real server  CIP:client IP VIP:virtual serve ...

  10. LVS DR模式负载均衡

    高并发场景 LVS 安装及高可用实现 分类: 运维基本功,故障解决 转载自 惨绿少年   https://www.cnblogs.com/clsn/p/7920637.html 1.1 负载均衡介绍 ...

最新文章

  1. mysql ls命令,Linux 常用 ls命令详解
  2. Windows 7会成为Win XP第二的10大理由
  3. I2C 协议分析和学习
  4. require('module') 是什么?
  5. Dot Graphiz 操作说明
  6. react创建项目报错unexpected end of json while parsing near xxx
  7. matlab读取三级文件夹方式
  8. 毫秒和秒的换算工具_使用后戒不掉的文档搜索工具:Everything
  9. 新媒体素材采集工具,帮你采集新媒体素材,提高效率
  10. ectouch微信登录提示此次操作失败请返回重试原因
  11. C#--打包安装项目
  12. 安装vum、npm、cnpm、vue/cli
  13. 商鼎云|亚马逊云盘关停了?你需要了解分布式存储云盘
  14. c++国际象棋上的麦粒
  15. freeMarker导出word带图片
  16. Proteus8.9 VSM Studio SDCC编译器仿真STC15W4K32S4系列013_iic_03_AT24C08
  17. 《高质量C/C++编程指南》第1期
  18. python量化交易之 放量跌到底买入-涨1.1再卖
  19. star邀请码卡密获取以及使用方法
  20. 高新技术产业的股权设计原则

热门文章

  1. hdu 4283 You Are the One ( dp 2012 ACM/ICPC Asia Regional Tianjin Online )
  2. 在线ASCII流程图编辑器工具
  3. Java G1 GC 垃圾回收深入浅出
  4. innoDB索引使用和优化汇总
  5. 项目中js文件修改后浏览器不能及时更新的解决办法
  6. 【cocos2d-x从c++到js】10:JS与C++的交互2——JS与C++的“函数重载”问题
  7. openstack虚拟机迁移live-migration中libvirt配置
  8. arguments对象
  9. 2011 端午后,杭州支付宝
  10. 取得GridPanel选定行所有字段值