当前位置: 首页 > 编程日记 > 正文

四层和七层交换技术-loadbalance

1 四层交换技术简介
我们知道,二层交换机是根据第二层数据链路层的MAC地址和通过站表选择路由来完成端到端的数据交换的。三层交换机是直接根据第三层网络层IP地址来完成端到端的数据交换的。
四 层交换机不仅可以完成端到端交换,还能根据端口主机的应用特点,确定或限制它的交换流量。简单地说,四层交换机基于传输层数据包的交换过程,是一类基于 TCP/IP协议应用层的用户应用交换需求的新型局域网交换机。四层交换机支持TCP/UDP第四层以下的所有协议,可识别至少80字节的数据包包头长 度,可根据TCP/UDP端口号来区分数据包的应用类型,从而实现应用层的访问控制和服务质量的保证。所以,与其说四层交换机是硬件网络设备,还不如说它 是软件网络管理系统。也就是说,四层交换机是一类以软件技术为主、以硬件技术为辅的网络管理交换设备。


2 四层交换机工作原理
OSI 模型的第四层是传输层,负责端对端通信,即在网络源和目标系统之间协调通信。在IP协议栈中这是TCP和UDP所在的协议层。在第四层中,TCP和UDP 标题包含端口号,它们可惟一区分每个数据包包含哪些应用协议(例如HTTP、FTP等)。端点系统利用这种信息来区分包中的数据。
TCP/UDP 端口号提供的附加信息可以为网络交换机利用,这是四层交换的基础。具有第四层功能的交换机能够起到与服务器相连接的“虚拟IP(VIP)”前端的作用。每 台服务器和支持单一或通用应用的服务器组都配置一个VIP地址。这个VIP地址被发送出去,并在域名系统上注册。
在发出一个服务请求时,四层交换机通过判定TCP来识别一次会话的开始。然后利用复杂的算法来确定处理这个请求的最佳服务器。一旦做出决定,交换机就将会话与一个具体的IP地址联系在一起,并用该服务器的真正IP地址来代替服务器上的VIP地址。


3 四层交换机的主要技术
四层交换机的主要技术如下:
包 过滤/安全控制:在大多数路由器上,采用第四层信息定义过滤规则已经成为默认标准,所以有许多路由器被用做包过滤防火墙,在这种防火墙上不仅能够配置允许 或禁止IP子网间的连接,还可以控制指定TCP/UDP端口的通信。和传统的基于软件的路由器不一样,四层交换区别于三层交换的主要不同之处,就在于这种 过滤能力是在ASIC专用高速芯片中实现的,从而使这种安全过滤控制机制可以全线速进行,极大提高了包过滤速率。
服务质量:在网络系统的层次结构中,TCP/UDP第四层信息往往用于建立应用级通信优先权限。如果没有四层交换概念,服务质量/服务级别就必然受制于第二层和第三层提供的信息,如MAC地址、交换端口、IP子网或VLAN等。
服务器负载均衡:四层交换机所支持的服务器负载均衡方
式 是将附加有负载均衡服务的IP地址,通过不同的物理服务器组成一个集,共同提供相同的服务,并将其定义为一个单独的虚拟服务器。这个虚拟服务器是一个有单 独IP地址的逻辑服务器,用户数据流只需指向虚拟服务器的IP地址,而不直接和物理服务器的真实IP地址进行通信。只有通过交换机执行的网络地址转换 (NAT)后,未被注册IP地址的服务器才能获得被访问的能力。
主机备用连接:主机备用连接为端口设备提供了冗余连接,从而在交换机发生故障时能 有效保护系统。这种服务允许定义主备交换机,同虚拟服务器定义一样,它们有相同的配置参数。由于四层交换机共享相同的MAC地址,备份交换机接收和主交换 机全部一样的数据。这使得备份交换机能够监视主交换机服务的通信内容。
统计:通过查询第四层数据包,四层交换机能够提供更详细的统计记录。因为管 理员可以收集到更详细的哪一个IP地址在进行通信的信息,甚至可根据通信中涉及到哪一个应用层服务来收集通信信息。当服务器支持多个服务时,这些统计对于 考查服务器上每个应用的负载尤其有效。增加的统计服务对于使用交换机的服务器负载平衡服务连接同样十分有用。


4 七层交换技术简介
七 层交换机的智能性能够对所有传输流和内容的控制。由于可以自由地完全打开传输流的应用层和表示层,仔细分析其中的内容,因此可根据应用的类型而非仅仅根据 IP和端口号做出更智能的负载均衡决定。这就可以不仅仅基于URL做出全面的负载均衡决策,而且还能根据实际的应用类型做出决策。这将使用户可以识别视频 会议流,并根据这一信息做出相应的负载均衡决策。
这类具有第七层认知交换机的部分功能保证不同类型的传输流可以被赋予不同的优先级。具有第七层认知的设备不依赖路由设备或应用来识别差别服务(Diff-Serv)、通用开放策略服务或其他服务质量协议的传输流。这就使用户不必依赖应用或网络设备来达到这些目的。
在Internet网、Intranet网和Extranet网,七层交换机都大有施展抱负的用武之地。比如企业到消费者的电子商务、联机客户支持,人事规划与建设、市场销售自动化,客户服务,防火墙负载均衡,内容过滤和带宽管理等。

=============================
代理模式和透明模式的比较
在内容网络中,负载均衡器或XML交换机根据从应用层获取的各类详尽信息在Web服务器间智能地分配流量。第7层负 载均衡器与老式的第4层负载均衡器最本质的区别在于,直接利用HTTP头信息、SSL SESSION ID、cookie以及URI这些第7层(应用层)数据。尽管第4层负载均衡器也能像第7层负载均衡器一样在多个Web服务器间分配内容,但它基于端口的 流量分配方式使服务器群中的每个Web服务器都必须再生全部网页内容,显得很不经济。
两种工作模式
第7层负载均衡器有2种配置模 式:代理模式(Proxy)和透明模式(transparent)。代理模式是指负载均衡器作为两个或多个Web服务器间的服务中介,所有发向网站的服务 请求首先来到负载均衡器,由负载均衡器决定如何分配这些请求。在透明模式下,负载均衡器不断侦听网络,只对事先指定的某些特定服务的请求做出处理。
单路并联和双路并联拓扑结构
在代理模式下,负载均衡器是Web服务器群的唯一入口,集中进行安全管理、统一处理登录请求。负载均衡器能够始终对多个服务器开放多个TCP会话,这样,负载均衡器在与每个服务器第二次交换TCP握手信号时就不再有延迟,所以,代理模式比透明模式在性能上要略胜一筹。
大多数的负载均衡器和XML交换机都支持代理模式。Netscaler公司的Request Switch 9000系列交换机在代理模式下工作时,既能进行HTTP识别,又能进行TCP会话,因此,能够利用既有的TCP连接处理HTTP1.1类型的服务请求。
如果要处理运行在Web上的SSL加解密会话,负载均衡器一般来说必须工作在代理模式下。负载均衡器能够自行对数据解密,也可以使用第三方的相关产品, 解密后负载均衡器对流量进行检测,并做出路由选择,最后,用SSL把自己对客户端的响应进行加密。有些负载均衡器也可在透明方式下进行上述工作,但那样会 产生更多的延迟。
串联式拓扑结构
代理模式和透明模式的最显著区别是:在代理模式下,由负载均衡器结束会话,而在透明模式下,则由Web服务器结束会话。无论是哪种模式,都由负载均衡器决定由哪一台服务器处理客户端的请求。
三种布局方式
负载均衡器在网络中有三种布局方式,即:串联式(INLINE)、单路并联式(ONE-ARM)和双路并联式(SIDE-ARM)。
串联式:负载均衡器位于路由器和交换机之间,路由器和交换机分别与服务器群相连。这种拓扑结构的缺点显而易见:不管负载均衡器是否需要对某些流量进行检测,所有流量都要流经负载均衡器。如果该负载均衡器吞吐量较低,整个网络的性能就会变差。
在代理模式下,将负载均衡器进行串联配置是非常简单的,但在流量较大的网络中,这种配置需要另加一台负载均衡器作为备份,以防单点故障的发生。
单路并联和双路并联结构:负载均衡器配置在交换机的旁边,而不是夹在它们中间。单路并联和双路并联的区别在于负载均衡器和交换机的接口数不同。单路并联 只有一个接口,双路并联则有两个。至于究竟采用单路并联还是双路并联,应该事先对通过交换机的流量进行评估。流量大,双路并联是最佳选择;流量小,单路并 联也就够了。
负载均衡的备份问题
由于负载均衡器通常是Web服务器群的唯一入口,因此,部署负载均衡器之前,必须首先考虑好负载 均衡器的备份问题。当主负载均衡器出现故障时,备份负载均衡器能立即接管工作。备份负载均衡器的配置方式有活动式(active-active)和旁路式 (active-standby)两种。在活动式配置下,两台负载均衡器同时处理来自同一IP地址的服务请求,因此,除了在出现故障时响应延迟极短外,在 平时,Web服务器还能够同时处理更多的客户请求。在旁路式配置下,主负载均衡器工作,备份负载均衡器仅在主负载均衡器出现故障时启动,启动时占用主负载 均衡器的IP地址和MAC地址。备份负载均衡器从故障发生开始到接管服务一般要有几秒钟的延迟,在这期间,客户的服务请求就会遭到拒绝。

===================================================
七层设备除了F5还有很多,在七层上做负载均衡的软件业很多,比如大名鼎鼎的HaProxy,比如配上第三方工具的LVS,甚至因为负载均衡的重要 性,很多具有前瞻性的Web服务器开始提供这样的功能,比如nginx,比如light httpd,nginx的七层负载均衡实际上还是很不完善的,当后端代理一台机器死掉后,nginx还会发送请求给这个机器,这个机器不处理,那么 nginx就会一直等待超时,在超时后再将请求分配给其他的机器,在流量大时会很影响性能,造成一定程度的连接堆积甚至堵塞,nginx的负载均衡算法也 相对少很多,没有haproxy和LVS多,当然后者是专业负载均衡软件。

静态文件缓存也有很多,比如不朽的squid,比如最近两年很火的varnish,甚至号称比squid更快速更精准的nginx的模块 ncache,varnish使用的Visual Page Cache技术能够显著降低内存和磁盘的交换次数,使系统利用率更高,我没有在百万级以上环境检测过varnish,很多人说varnish不是足够的稳 定,我测试的时候没有发生什么问题。

静态文件缓存一般都不止一台,我一直推崇使用七层负载均衡来设计静态缓存架构,因为可以降低重复率,降低重复率自然是提高利用率。URL HASH能够很好的解决缓存浪费的情况,比如用户头像放在一台机器上,模板中的小文件放在另外一台机器上,利用七层负载均衡就很容易让头像的请求命中头像 服务器,模板请求命中模板缓存服务器,避免了三层或者四层负载均衡重复缓存导致的硬件利用率低下问题。而且服务单一,新切换的缓存机器,很容易重新缓存 满。

七层负载均衡和四层负载均衡相比,最大的缺点就是没有四层的负载能力高,Haproxy据说能跑到40万并发,LVS有几百万,这些都是理论上的数据,真的跑到40万的时候,服务器网卡早就挂了。


相关文章:

sql server mvp 發糞塗牆

http://blog.csdn.net/dba_huangzj/article/details/38295753

几行代码完成动态图表绘制 | Python实战

作者 | 小F来源 | 法纳斯特头图 | CSDN下载自视觉中国关于动态条形图,小F以前推荐过「Bar Chart Race」这个库。三行代码就能实现动态条形图的绘制。有些同学在使用的时候,会出现一些错误。一个是加载文件报错,另一个是生成GIF的时候报错。这…

inline-block元素4px空白间隙的解决办法

为什么80%的码农都做不了架构师?>>> http://www.hujuntao.com/archives/inline-block-elements-the-4px-blank-gap-solution.html 转载于:https://my.oschina.net/i33/blog/124448

Ubuntn删除软件

删除dpkg -r 软件清除dpkg -P 软件也可以用sudo apt-get remove 软件 这种方式移除这种方式install的

对象Equals相等性比较的通用实现

对象Equals相等性比较的通用实现 最近编码的过程中&#xff0c;使用了对象本地内存缓存&#xff0c;缓存用了Dictionary<string,object>, ConcurrentDictionary<string,oject>,还可以是MemoryCache(底层基于Hashtable)。使用缓存&#xff0c;肯定要处理数据变化缓存…

Android:ViewPager为页卡内视图组件添加事件

在数据适配器PagerAdapter的初始化方法中添加按钮事件&#xff0c;这里是关键&#xff0c;首先判断当前的页卡编号。必须使用当前的view来获取按钮。 Overridepublic Object instantiateItem(View arg0, int arg1) {if (arg1 < 3) {((ViewPager) arg0).addView(mListViews.g…

解析C语言中的sizeof

一、sizeof的概念 sizeof是C语言的一种单目操作符&#xff0c;如C语言的其他操作符、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于…

开源大咖齐聚2020启智开发者大会,共探深度学习技术未来趋势

​2020年12月2日&#xff0c;“OpenI/O 2020启智开发者大会”在北京国家会议中心召开。大会以“启智筑梦 开源先行”为主题&#xff0c;立足于国际国内开源大环境和发展趋势。开源领域顶尖专家学者和企业领军人物共聚一堂&#xff0c;探讨开源开放呈现出的新形势、新格局、新机…

linux中编译C语言程序

1.首先安装gcc编辑器 yum install gcc* -y 2.编写C语言程序 [roottest ~]# vim aa.c #include<stdio.h> int main( ) {int a;printf("请输入一个三位数的整数:");scanf("%d",&a);if(a>100&&a<1000)printf("百位是&#xff1a…

typedef的四个用途和两大陷阱

typedef的四个用途和两个陷阱 &#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;…

升级版APDrawing,人脸照秒变线条肖像画,细节呈现惊人

作者 | 高卫华出品 | AI科技大本营随着深度学习的发展&#xff0c;GAN模型在图像风格转换的应用越来越多&#xff0c;其中不少都实现了很好的效果。此前&#xff0c;reddit上的一个技术博主AtreveteTeTe基于GAN模型混合将普通的人像照片卡通化&#xff0c;并通过First Order Mo…

error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

1 这个error是什么原因造成的 cmake默认选择的是x86&#xff0c;即32位的生成子。 2 怎么解决这个error 在cmake ..的时候&#xff0c;在后面加上“-G "Visual Studio 12 2013 Win64"”选项即可。 3 怎么在CMakeLists.txt中进行相应的设置来解决这个问题 这个还未知。…

Linux的epoll

在linux的网络编程中&#xff0c;很长的时间都在使用select来做事件触发。在linux新的内核中&#xff0c;有了一种替换它的机制&#xff0c;就是epoll。 相比于select&#xff0c;epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中&#x…

[QA]Python字节码优化问题

这篇文章来自在Segmentfault 上面我提出的一个问题 问题背景&#xff1a; Python在执行的时候会加载每一个模块的PyCodeObject,其中这个对象就包含有opcode,也就是这个模块所有的指令集合&#xff0c;具体定义在源码目录的 /include/opcode.h 中定义了所有的指令集合&#xff0…

【滴滴专场】深度学习模型优化技术揭秘

滴滴拥有海量数据以及 AI 推理需求&#xff0c;GPU 在人脸识别、自动驾驶、地图导航等场景大量使用&#xff0c;滴滴云IFX团队针对斯坦福 DAWNBench 榜单的 ImageNet 模型也进行了深入优化&#xff0c;在 NVIDIA T4 上达到了 0.382 ms 的 Inference Latency 性能&#xff0c;打…

11.python并发入门(part9 多进程模块multiprocessing基本用法)

一、回顾多继承的概念。由于GIL&#xff08;全局解释器锁&#xff09;的存在&#xff0c;在python中无法实现真正的多线程&#xff08;一个进程里的多个线程无法在cpu上并行执行&#xff09;&#xff0c;如果想充分的利用cpu的资源&#xff0c;在python中需要使用进程。二、mul…

将不确定变为确定~Flag特性的枚举是否可以得到Description信息

回到目录 之前我写过对于普通枚举类型对象&#xff0c;输出Description特性信息的方法&#xff0c;今天主要来说一下&#xff0c;如何实现位域Flags枚举元素的Description信息的方法。 对于一个普通枚举对象&#xff0c;它输出描述信息是这样的 public enum Status{[Descriptio…

中科大“九章”历史性突破,但实现真正的量子霸权还有多远?

作者 | 马超 出品 | AI科技大本营 头图 | CSDN下载自视觉中国 10月中旬&#xff0c;政府高层强调要充分认识推动量子科技发展的重要性和紧迫性&#xff0c;加强量子科技发展战略谋划和系统布局&#xff0c;把握大趋势&#xff0c;下好先手棋。 今天&#xff0c;我国的量子科技领…

php析构函数的用法

简单的说,析构函数是用来在对象关闭时完成的特殊工作,比如我写的上例,在实例化同时打开某文件,但是它什么时候关闭呢,用完就关闭呗,所以析构函数直接关闭它, 又或者在析构时,我们将处理好的某些数据一并写进数据库,这时可以考虑使用析构函数内完成,在析构完成前,这些对象属性仍…

泛型中? super T和? extends T的区别

经常发现有List<? super T>、Set<? extends T>的声明&#xff0c;是什么意思呢&#xff1f;<? super T>表示包括T在内的任何T的父类&#xff0c;<? extends T>表示包括T在内的任何T的子类&#xff0c;下面我们详细分析一下两种通配符具体的区别。 …

两大AI技术集于一身,有道词典笔3从0到1的飞跃

作者 | Just 出品 | AI科技大本意&#xff08;ID:rgznai100&#xff09; “双十一”结束的钟点刚刚敲响&#xff0c;拥有电子消费品的企业便很快对外界秀了一把今年的销售战绩&#xff0c;网易有道也不例外。在电子词典单品品类榜单上&#xff0c;有道词典笔稳稳拿下天猫和京东…

VIM进阶功能

2019独角兽企业重金招聘Python工程师标准>>> http://www.cnblogs.com/gunl/archive/2011/08/15/2139588.html 该网页上介绍了以下内容&#xff1a; 查找快速移动光标复制、删除、粘贴数字命令组合快速输入字符替换多文件编辑宏替换TABautocmd常用脚本常用配置另一篇…

最简便的清空memcache的方法

如果要清空memcache的items&#xff0c;常用的办法是什么&#xff1f;杀掉重启&#xff1f;如果有n台memcache需要重启怎么办&#xff1f;挨个做一遍&#xff1f; 很简单&#xff0c;假设memcached运行在本地的11211端口&#xff0c;那么跑一下命令行&#xff1a; $ echo ”f…

mongodb启动

将mongodb安装为Windows服务&#xff0c;让该服务随Windows启动而启动&#xff1a; 开启服务&#xff1a; 转载于:https://www.cnblogs.com/dabinglian/p/6861413.html

赠书 | AI 还原宋代皇帝,原来这么帅?!

整理 | 王晓曼来源 | 程序人生 &#xff08;ID&#xff1a;coder _life&#xff09;封图 | 大谷视频《人工智能还原的宋代皇帝&#xff0c;原来这么帅&#xff1f;&#xff01;》*文末有赠书福利昨日&#xff0c;一条“人工智能还原的宋代皇帝”喜提热搜&#xff0c;博主大谷借…

Deep learning:三十六(关于构建深度卷积SAE网络的一点困惑)

前言&#xff1a; 最近一直在思考&#xff0c;如果我使用SCSAE&#xff08;即stacked convolution sparse autoendoer&#xff09;算法来训练一个的deep model的话&#xff0c;其网络的第二层开始后续所有网络层的训练数据从哪里来呢&#xff1f;其实如果在这个问题中&#xff…

用memcache.php监测memcache的状况

最新的memcache pecl中&#xff0c;新增了一个memcache.php&#xff0c;这个php文件可以用来方便的查看memcache的状况&#xff0c;界面上与apc自带的apc.php风格一致。 如图: 应该算是最方便的监测memcache的办法了。 memcache.php源文件下载 是一个PHP源文件&#xff0c;…

想知道垃圾回收暂停的过程中发生了什么吗?查查垃圾回收日志就知道了!

\关键点\垃圾回收日志中包括着一些关键性能指标&#xff1b; \要做一次正确的垃圾回收分析需要收集许多数据&#xff0c;所以好的工具是非常必要的&#xff1b; \除了垃圾回收之外还有很多事件都可能会让应用程序暂停&#xff1b; \让你的应用程序暂停的事件也会让垃圾回收器暂…

Linux必学的网络操作命令

因为Linux系统是在Internet上起源和发展的&#xff0c;它与生俱来拥有强大的网络功能和丰富的网络应用软件&#xff0c;尤其是TCP/IP网络协议的实现尤为成熟。Linux的网络命令比较多&#xff0c;其中一些命令像ping、ftp、telnet、route、netstat等在其它操作系统上也能看到&am…

丢弃Transformer,FCN也可以实现E2E检测

作者 | 王剑锋来源 | 知乎CVer计算机视觉专栏我们基于FCOS&#xff0c;首次在dense prediction上利用全卷积结构做到E2E&#xff0c;即无NMS后处理。我们首先分析了常见的dense prediction方法&#xff08;如RetinaNet、FCOS、ATSS等&#xff09;&#xff0c;并且认为one-to-ma…