关于代理以及负载均衡

Posted 小明可乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于代理以及负载均衡相关的知识,希望对你有一定的参考价值。

    代理服务器(Proxy Server)是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用。代理服务器大多被用来连接INTERNET(国际互联网)和INTRANET(局域网)。


    说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;此时就涉及到两个角色,一个是被代理角色,一个是目标角色。我就分享下我自己的理解就是比如:一个菇凉喜欢你,但是碍着矜持害羞不想自己告诉你说喜欢,然后就是找了个你们共同相互认识的朋友,然后让这个朋友带话给你说,xxxx喜欢你,然后你收到这个朋友的话对你们这共同的朋友说,好了我知道了,然后你这朋友就回去传话给那个喜欢你的菇凉。


    在这个过程中,我们这样去理解,喜欢你的菇凉(代表用户User),你们共同的朋友(代表代理服务器Proxy Server),你(代表原始服务器Original server)。用户发送请求给代理服务器,代理服务器接收用户的请求,拿着你的请求信息在去请求你要访问的目的地服务器,原始服务器接收请求后,响应用户需要的数据。


代理的话分为“正向代理”和“反向代理”。

正向代理

正向代理也是大家最常接触到的代理模式,我们会从两个方面来说关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理。在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的。此时大家可能都会用一个操作 FQ 进行访问,FQ 的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们!

     上述这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址; 服务器只清楚请求来自 哪个代理服务器,而不清楚来自哪个具体的客户端; 正向代理模式屏蔽或者隐藏了真实客户端信息。

用户访问目标服务器时,如果通过代理访问,必须先知道代理服务器的IP还有它的端口。 我们现在简单的认识了 正向代理,现在我们来 认识下反向代理 ,目前我知道的 反向代理服务器 知道 nginx,具体Nginx能干啥,自己问度娘,我只知道它支持百w级级别的TCP链接、能够实现反向代理、比较稳定,并且是开源的而且还是跨平台的一个玩意。

反向代理
当应用数据访问量大的时候,一台服务器访问不过来,满足不了用户的需要,那么系统方就考虑怎么去给系统降低负荷,让用户能准确稳定的访问到自己想要的数据,比如像TB以及我们熟悉的12306,他们就通过大集群、分布式来部署自己的服务器,通过多台或者更的服务器来构建自己的服务器集群。他们大多数功能就通过Nginx反向代理来实现,通过封装Nginx和其他组件一起运用。

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率,"它代理的是服务端",主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。感觉理解起来是不是比较抽象,那就我说过简单点滴,在结合下面的图。比如:你朋友约你周末出去喝酒,然后你发现你没零花钱了,于是你就回家找你媳妇,跟你媳妇说,媳妇没零花钱了把点呗,你媳妇说好等等就转身去拿钱,但你媳妇拿钱,拿的不是她自己的钱,而是你平时藏的私房钱给你,你钱拿到手你并不知道这钱是她的还是你藏的私房钱还是你下个月的零花钱。

关于代理以及负载均衡
通过上面画的简单图解大家就可以看清楚了,多个客户端给服务器发送的请求,Nginx 服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理。
此时请求的来源也就是客户端,但是请求具体由哪台服务器处理的并不明确了,Nginx 扮演的就是一个反向代理角色。
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。

主要作用是:
保证内网的安全,通常将反向代理作为公网访问地址,Web 服务器是内网。
负载均衡,通过反向代理服务器来优化网站的负载。

负载均衡
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务
Nginx 扮演了反向代理服务器的角色,它是依据什么样的规则进行请求分发的呢?不用的项目应用场景,分发的规则是否可以控制呢?
客户端发送的Nginx 反向代理服务器接收到的请求数量,就是我们所说的 负载量。
请求数量按照一定的规则进行分发,到不同的服务器处理的规则,就是一种均衡规则。
为什么要负载均衡?
我们在日常生活中经常免不了要去一些比较拥挤的地方,比如地铁站、火车站、电影院、银行等。无论是买票,还是排队入场,这些场所一般都会设置多个服务点或者入口的。如果没有人引导的话,大多数情况下,最近的入口会挤满人。而哪些距离较远的服务点或者入口就宽松很多。

这种情况下,就会大大浪费资源,因为如果可以把这些排队的人很好的分散到各个入口的话会大大缩短排队时间。其实,网站的建设也是一样的。为了提升网站的服务能力,很多网站采用集群部署,就像话剧院有多个入口一样。这时候,就需要一个协调者,来均衡的分配这些用户的请求,可以让用户的可以均匀的分派到不同的服务器上。而“ 负载均衡”就充当这个角色,分配人到各个窗口缓解排队的拥挤。


以上是关于关于代理以及负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

关于开发中负载均衡(代理)的一些笔记

Nginx代理功能与负载均衡详解

Nginx 反向代理与负载均衡详解

Nginx 反向代理与负载均衡详解

Nginx反向代理以及负载均衡配置

Nginx反向代理以及负载均衡配置