【Nginx】反向代理和负载均衡

 【为什么使用代理】

      代理处于客户端和服务端之间,是一个中介的位置。使用代理可以帮助我们提高访问速度,起到防火墙的作用,还可以通过代理服务器访问一些日常不能访问的目标站点,我们用到的翻墙软件就是利用了代理服务器。那么关于代理都有哪些事儿呢?nginx和代理又有什么关系呢?

【正向代理】代理的是客户端

      代理服务器一般指局域网内部的机器,通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。我们常说的代理就是指正向代理,客户端需要上网,通过代理就可以实现上网。客户端发出请求,被代理服务器接收,代理服务器去服务端找到后再返回给客户端。正向,代理的就是客户端,服务端不知道究竟是哪些客户端发出的请求。也就是客户端蒙了一层面纱,服务端不知道实际发起请求的客户端。

                             【Nginx】反向代理和负载均衡

【反向代理 & 负载均衡】

      反向代理服务器作用在服务器端,客户端连接服务器,实际上连接到的是反向代理服务器,但是客户端是不知情的,反向代理将请求分发给具体的服务器进行处理,然后再将服务器的相应结果反馈给客户端。也就是服务端蒙了一层面纱,客户端不知道实际提供服务的服务端。

            【Nginx】反向代理和负载均衡

      看到知乎上有一个很有意思的总结,叫做“反向代理基本上就是一个服务端的负载均衡器”。
      我们知道单个服务器处理客户端请求的能力是有限的,当请求蜂拥而至的时候,服务器就忙的不可开交了,那有没有什么办法能够解决大量并发访问服务的问题呢?
      有难同当之时,我们就可以使用多个服务器来共同分担用户请求,也就是负载均衡以达到一个稳定的状态,负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器的地位都是等价的,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求按照某种策略分配到服务器集合的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。但服务器蒙着面纱,所以这对用户来说感觉不到任何差别。         

      Nginx作为反向代理服务器,在网络七层的应用层进行请求转发,它起到请求转发的作用,它可以选择向哪台服务器请求服务,利用这一点可以实现负载均衡。但是请求都给了nginx它的使命也很艰巨,万一宕机怎么办?那么多服务器都在,nginx该如何选择呢?还有一些很聪明的办法。

【nginx高可用】

      为了达到nginx高可用的状态,万事都要以防万一,未雨绸缪,不然Nginx挂掉就坏了。为了防止宕机,我们就要做到备份,多备份几个备份机。那备份机什么时候知道自己要上场了呢?
    Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。它的心跳监测功能,会发出心跳包,从机问主机你还活着么?你还活着么?主机回答我还活着,从机就没有施展的机会。如果从机问,主机没信儿了,这时候就该备份的从机就上场了。
      但保不齐有时候keepalived也容易挂,而使用硬负载花费比较贵,那怎么再来一层性价比高的保险措施呢?那就是Lvs,  LVS是Linux Virtual Server的简写,就是Linux虚拟服务器,它可以实现硬负载的60%,lvs接收请求,把请求转发给Nginx,Nginx再把请求转发给应用服务器。
      具体高可用的实现还不是很了解,继续学习ing~~