文档章节

关于LVS-DR模式的理解

ali安东尼
 ali安东尼
发布于 2017/06/13 15:48
字数 1133
阅读 5
收藏 0
点赞 0
评论 0

最近捣鼓LVS的时候,发现LVS的整个处理过程中,数据包的流向是非常有意思的。因此接着这个机会,和各位迷妹迷弟们分享关于LVS-DR模式的数据包流向,以及整体实现的关键点。话不多说,先放个大招压压惊。 输入图片说明

整个流向,大体是如下的,DR模式中,有2个关键点: 1. 客户端数据包到达路由器,发起对应VIP的ARP广播请求。此时由DIRECTOR回复对应IP的MAC地址,于是交换机便在本地mac地址表中,将director的mac地址绑定VIP,这样数据包才可以经由DIRECTOR流向后端的服务器,起到负载均衡的作用。 2. 由DIRECTOR指定后端的服务器,通过修改源mac地址和目标mac地址,从而可以将数据包转由后端的服务器,后端服务器直接以源IP地址为VIP响应客户端。 不过细心的读者,此时就会出现一个问题,客户端请求的是目标IP为VIP,而调度器和后端服务器,都配置有VIP,为什么交换机就可以直接将数据包发给调度器而不是后端服务器呢?所以在交换机二层的ARP广播方面,需要作出一定的策略,来限制ARP的响应。根据小普的理解,有以下的几点方法,可以任选其一: 1. 在交换机上绑定director的mac地址和vip(简单粗暴并且不可靠)。 2. 在upstream server上配置arptables,绑定相关的IP和MAC。(貌似需要考虑的问题较多) 3. linux内核中的法则:将vip地址配置在lo接口的边缘上,而不是物理网卡的边缘上。也可以在内核上配置一个法则,当收到vip的arp请求之后,后端的upstream server不响应,这个可以在内核参数上实现。(小普推荐的一种策略方法) 解决了这个ARP响应的问题之后,接下来的就简单啦!director此时需要将数据包转发给后端服务器,数据包的源和目标IP地址依旧没有改变,只不过目标mac地址改成了后端的mac地址,因此后端服务器就可以接收到此报文。 于是后端服务器收到一个目标mac地址和目标IP地址都是自己的数据包。 要实现以上的ARP限制回应的功能,就需要调整lvs-dr的2个arp响应的参数调整

  1. arp-announce:指的是自己对外部主动发起arp广播的策略,包括是否主动宣告等。0:表示通告自己全部的地址,1表示尽量避免通告非同一个网段的地址,2表示只通告最佳的本网段的地址,在lvs-dr中,我们选择arp-announce=2
  2. arp-ignore:指的是当别人对你发起arp请求的时候,你的响应的策略,这里我们就配置为,只响应那个物理网口的地址(即只响应自己的rip对应的mac请求的地址,不响应vip对应的mac请求的地址)

下面是小普举得一个简单的例子,关于lvs-dr的对应以上说明的一个具体实践的栗子。 l 前端调度服务器 lvs-director:eth0:192.168.2.138,对应mac地址:00-0c-29-9f-3c-90 vip-->eth0:0 192.168.2.136,对应mac地址:00-0c-29-9f-3c-90 l 后端服务器 Server1:eth0:192.168.2.139,对应mac地址:00-0c-29-9f-3b-91 vip-->eth0:0 192.168.2.136,对应mac地址:00-0c-29-9f-3b-91 l 在后端服务器上操作,先配置完内核参数,再配置IP地址,防止广播vip的mac地址 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce l 测试此时rs对vip的mac地址的请求,不会响应。收到的vip的mac,依旧是由前端调度服务器响应的mac地址。因此这里便实现了请求的数据包都必须经由调度器的功能。

输入图片说明

本期到这里的干货分享就结束啦,希望读者朋友们继续关注我们的微信公众号,我们的干货也会一直更新,谢谢大家。

由睿江云研发人员提供,更多精彩请留意www.eflycloud.com

© 著作权归作者所有

共有 人打赏支持
ali安东尼
粉丝 3
博文 192
码字总数 173101
作品 0
广州
lvs_dr 负载均衡模式分析

1.前言 上一篇文章《lvs_nat 负载均衡模式及抓包分析》,已经对开源负载均衡软件的 nat 模式进行了实验和 tcpdump 数据包分析。经过分析,我们知道 lvs 的 nat 负载均衡模式,它的性能瓶颈在...

hello_cjq ⋅ 03/28 ⋅ 0

lvs 负载均衡fullnat 模式clientip 怎样传递给 realserver

关于LVS和FULLNAT的介绍可以看一下 淘宝吴佳明(普空)的视频 http://blog.aliyun.com/1750 , FULLNAT模式很大简化了LVS的配置和部署,目前淘宝和百度基本上都在使用FULLNAT模式来作为接入侧的...

Tenderrain ⋅ 2017/11/16 ⋅ 0

【Diary Report 2018-1-4】关于FastDFS蛋疼的集群和负载均衡(十五)之lvs四层+Nginx七层负载均衡

diary_report.jpg Interesting things lvs+nginx的拓扑图 image.png 准备环境,基于上一篇【Diary Report 2018-1-3】关于FastDFS蛋疼的集群和负载均衡(十三)之LVS-DR环境安装继续配置。 vip:...

cmazxiaoma ⋅ 01/04 ⋅ 0

基于CentOS实现LVS的nat模式和DR模式

关于LVS的错误总结见以下: nat模式:http://amelie.blog.51cto.com/12850951/1979172 DR模式:http://amelie.blog.51cto.com/12850951/1979437 来自于某国内名企架构师的说法——LVS学好了,...

阿拉杜美美 ⋅ 2017/11/07 ⋅ 0

web及性能调优

nginx 的性能调优 1 修改CPU的核心数对应的Nginx work进程 这个一般是你CPU核心数的两倍,方正是倍数,具体要几倍可看具体硬件配置 2 修改文件描述符 65536 ulimit -n 永久生效可改/etc/sysc...

fangyiya ⋅ 2017/04/12 ⋅ 0

突破LVS瓶颈,LVS Cluster部署(OSPF + LVS)

前言 LVS大家应该很熟悉,这款优秀的开源软件基本成为了IP负载均衡的代言词。但在实际的生产环境中会发现,LVS调度在大压力下很容易就产生瓶颈,其中瓶颈包括ipvs内核模块的限制,CPU软中断,...

snakelxc ⋅ 2013/07/10 ⋅ 32

集群与分布式 如何理解(自己的理解)

集群 与 分布式 如何理解 一、 概念理解 集群的理解:就是一台计算机处理不了一件事情 ,需要大家组合在一起来完成一件事情。 分布式的理解:就是把一件事情分成好几个部分 ,每个人做其中的...

frogtwo ⋅ 2017/07/06 ⋅ 0

基于LVS的AAA负载均衡架构实践

一、背景 项目背景是某企业的AAA管理系统, AAA 即 Authentication(认证)、Authorization(授权)、Accounting(记账),是网络设备的一种集中化管理机制,可以在不同设备上为用户设置不同...

RiboseYim ⋅ 2016/09/02 ⋅ 6

这里有一份面经 ,请查收(4)

本文作者:伯乐在线 -朱小厮 。未经作者许可,禁止转载! 欢迎加入伯乐在线专栏作者。 这里我连续介绍三家公司的面试,一家是只有一面,还有两家是面完一面就没去了,没去主要是当时一周面了...

伯乐在线 ⋅ 2016/08/04 ⋅ 0

LVS的DR工作模式

LVS的DR模型 或许你可以先看看最下面的关于ipvsadm命令介绍 (0 。0)~ 关于LVS:LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。这就要说起一个技术大牛章文嵩博士了,章博士从9...

mlon ⋅ 2017/11/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

005. 深入JVM学习—Java堆内存参数调整

1. JVM整体内存调整图解(调优关键) 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张...

影狼 ⋅ 27分钟前 ⋅ 0

内存障碍: 软件黑客的硬件视图

此文为笔者近日有幸看到的一则关于计算机底层内存障碍的学术论文,并翻译(机译)而来[自认为翻译的还行],若读者想要英文原版的论文话,给我留言,我发给你。 内存障碍: 软件黑客的硬件视图...

Romane ⋅ 今天 ⋅ 0

SpringCloud 微服务 (七) 服务通信 Feign

壹 继续第(六)篇RestTemplate篇 做到现在,本机上已经有注册中心: eureka, 服务:client、order、product 继续在order中实现通信向product服务,使用Feign方式 下面记录学习和遇到的问题 贰 or...

___大侠 ⋅ 今天 ⋅ 0

gitee、github上issue标签方案

目录 [TOC] issue生命周期 st=>start: 开始e=>end: 结束op0=>operation: 新建issueop1=>operation: 评审issueop2=>operation: 任务负责人执行任务cond1=>condition: 是否通过?op3=>o......

lovewinner ⋅ 今天 ⋅ 0

浅谈mysql的索引设计原则以及常见索引的区别

索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索...

屌丝男神 ⋅ 今天 ⋅ 0

String,StringBuilder,StringBuffer三者的区别

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 首先说运行速度,或者说是, 1.执行速度 在这方面运行速度快慢为:StringBuilder(线程不安全,可变) > StringBuffer...

时刻在奔跑 ⋅ 今天 ⋅ 0

java以太坊开发 - web3j使用钱包进行转账

首先载入钱包,然后利用账户凭证操作受控交易Transfer进行转账: Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/Credentials credentials = Wallet......

以太坊教程 ⋅ 今天 ⋅ 0

Oracle全文检索配置与实践

Oracle全文检索配置与实践

微小宝 ⋅ 今天 ⋅ 0

mysql的分区和分表

1,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一...

梦梦阁 ⋅ 今天 ⋅ 0

exception.ZuulException: Forwarding error

错误日志 com.netflix.zuul.exception.ZuulException: Forwarding error Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: xxx timed-out and no fallback available. Ca......

jack_peng ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部