初步了解代理和负载均衡
目录
- 代理
- 正向代理
- 反向代理
- 负载均衡
- 负载均衡介绍
- 网络模型和负载均衡
- 负载均衡和反向代理
带着问题阅读
1、什么是代理,代理有什么好处
2、正向代理和负向代理有什么区别
3、反向代理和负载均衡有什么关系
4、四层负载均衡和七层有什么区别
代理 代理,通俗来说好比是中介的角色,比如在生活中我们处理法律问题、房产交易都会请专业人士代为处理。从网络角度讲,就是为事务参与双方提供连接通道的第三方网络服务器。
在网络场景中,根据被代理的角色和作用划分,代理可分为正向代理和反向代理。
正向代理
正向代理是指对客户端提供的代理服务,在客户端无法直接访问服务端的情况下,通过配置代理服务器的方式访问服务端。
在整个过程中,客户端请求首先发送到代理服务器,代理服务器再将请求发送到服务端后将结果返回给客户端。从服务端角度来看,认为代理服务器才客户端,因此正向代理即代理客户端与服务端进行交互。比如生活中我们通过代购去购买海外商品,代购就是我们的正向代理。
文章图片
正向代理通常有以下应用场景:
- 提供网络通道:解决客户端由于防火墙或网络限制无法访问服务端的问题,如访问google等国外网站。
- 隐藏客户端身份:服务端只感知代理服务器,无法获取真实客户端,如黑客控制肉鸡。
反向代理
反向代理是指对服务端提供的代理服务,通常出于安全考虑,真正的服务端只有内网网络,无法直接提供对外服务,为此需要设置反向代理服务器,由代理服务器接收外网请求,然后再转发到内部服务器。从客户端角度看,代理服务器是提供服务的服务端,因此反向代理即代理服务端与客户端交互。比如租房遇到的二房东,我们签合同也是与二房东签订,但实际提供住房的是房主。
文章图片
反向代理通常有以下应用:
- 提供对外服务:代理服务器暴露公网地址,接收请求并转发到内网服务器。
- 负载均衡:根据预设策略将请求分发到多台服务器。
- 提供安全保障:作为服务端防火墙,避免服务端遭受网络攻击。
- 提高访问速度:基于网络位置设置就近代理服务器,提高资源获取速度,如CDN服务器。
- 正向代理代理客户端,服务端认为请求来自代理服务器;反向代理代理服务端,客户端认为提供服务的是代理服务器。
- 正向代理通常由客户端架设,与客户端同处一个局域网;反向代理由服务端架设,与服务端同处一个局域网。
- 正向代理通常解决访问限制的问题,反向代理通常解决对外服务和负载均衡的问题。
负载均衡
负载均衡介绍
负载均衡是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。
文章图片
负载均衡既有基于软件的实现方案,也有基于硬件的实现方案。在软件方案中,又主要有:
- 基于DNS的负载均衡
- 反向代理负载均衡
- 基于NAT的负载均衡
网络模型和负载均衡
文章图片
参照OSI标准网络模型定义,负载均衡有二、三、四、七层四种负载均衡方式,对应到TCP网络模型中,即数据链路层负载均衡、网络层负载均衡、传输层负载均衡及应用层负载均衡,实际应用中通常采用四层负载均衡和七层负载均衡。
- 四层负载均衡(IP+端口)
文章图片
四层负载常用软件有:
LVS(常用,稳定性最好)
Nginx(需要额外编译stream模块)
HaProxy
- 七层负载均衡(应用层协议如HTTP)
文章图片
七层负载常用软件有:
- HaProxy
- Nginx
- Apache(较少使用)
负载均衡和反向代理
负载均衡与反向代理是两个概念,由于其网络架构形式类似(都用于接入服务端),带来一定程度的混淆。
负载均衡的核心目标在于如何将请求均衡的分发到多个服务端;反向代理的核心目标在于隐藏服务端内部地址并为服务端提供外部访问方式。出于高可靠机制的考虑,反向代理通常也会为同一服务注册多个后端地址,因此如Nginx同时提供了反向代理和负载均衡的能力,这也是造成概念混淆的原因。
通常来讲经过反向代理,真实服务端对客户端不可见,代理即客户端认为的服务端。相较负载均衡,七层负载的请求转发与反向代理机制类似,而四层负载的NAT形式,是将报文目的地址修改为真实服务后端地址,与反向代理有根本区别。
【初步了解代理和负载均衡】到此这篇关于初步了解代理和负载均衡的文章就介绍到这了,更多相关代理和负载均衡内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 我们重新了解付费。
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- 事件代理
- C语言中的时间函数clock()和time()你都了解吗
- 操作系统|[译]从内部了解现代浏览器(1)
- 生发知识,带你深入了解
- 了解自然大气粒子对气候的影响
- 设计模式-代理模式-Proxy
- java静态代理模式
- 带你了解类型系统以及flow和typescript的基本使用