Nginx反向代理与负载均衡

今天在极客学院看了一部视频教程,主题是Nginx反向代理与负载均衡,看过之后连忙记录下来。

先理一下知识要点吧:

  1. 什么是反向代理与负载均衡
  2. Nginx负载均衡的实现
  3. HTTP Upstream模块
  4. 其他负载均衡的方法

什么是反向代理与负载均衡

什么是反向代理

我们有时候,用自己的计算机A想访问国外的某个网站B,但是访问不了,此时,有一台中间服务器C可以访问国外的网站B,那么,我们可以用自己的电脑访问服务器C,通过C来访问B这个网站。那么这个时候,服务器C称为代理服务器,这种访问方式叫做正向代理。正向代理有一个特点,就是我们明确知道要访问哪个网站。再如,当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群的服务器的时候无法访问,且此时第三方服务器能访问集群,这个时候,我们通过第三方服务器访问服务器集群的内容,但是此时我们并不知道是哪一台服务器提供的内容,此时的代理方式称为反向代理

1
小结:
正向代理--A不能直接访问C,B可以直接访问C,然后A通过B作为代理服务器访问C就叫做正向代理。
反向代理--A不能直接访问服务器集群中的数据,B可以访问,此时通过B作为代理服务器去访问急群众的数据,但是A并不知道B会将集群中的哪台服务器中的内容给A,此时的代理方式就叫反向代理。

什么是负载均衡

当一台服务器的单位时间内的访问量越大的时候,服务器的压力会越大。当一台服务器压力大得超过自身的承受能力的时候,服务器会崩溃。为了避免服务器崩溃,让用户有更好地体验,我们通常通过负载均衡的方式来分担服务器的压力。那么什么是负载均衡呢?是这样,我们可以建立很多很多个服务器,这些服务器组成一个服务器集群,然后,当用户访问我们网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该选择的服务器。这样,用户的每次访问,都会保证服务器集群中的每个服务器的压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

1
负载均衡--通过许多服务器建立一个服务器集群,然后当用户访问网站的时候,先访问一个中间服务器,再让这台中间服务器选择集群中一个压力较小的服务器,将用户的访问引入到被选择的服务器。这样每次用户访问都会保证服务器集群中的每个服务器的压力趋于平衡,分档了服务器压力,可以避免服务器崩溃的情况。

Nginx负载均衡的实现

Nginx是一款可以通过反向代理实现负载均衡的服务器,使用Nginx服务实现负载均衡的时候,用户的访问首先会访问到Nginx服务器,然后Nginx服务器再从服务器集群表中选择压力较小的服务器,然后将该访问请求引向该服务器。若服务器集群中的某个服务器崩溃,那么从待选服务器列表中将该服务器删除,也就是说一个服务器假如崩溃了,那么Nginx就肯定不会将访问请求引入该服务器了。

HTTP Upstream模块

什么是HTTP Upstream模块

Upstream模块是Nginx服务器的一个重要模块。Upstream模块通过在客户端ip之间进行轮询实现后端的负载均衡。常用的指令有ip_hash指令、server指令和upstream指令等。

ip_hash指令

在负载均衡系统中,假如用户在某台服务器上登录,那么如果该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的一个服务器,那么此时如果将已经登录服务器A的用户再定位到其他服务器,显然不妥。故而,我们可以采用ip_hash指令解决这个问题,如果客户端请求已经访问了服务器A并登录,那么第二次请求的时候,会将该请求通过哈希算法自动定位到该后端服务器中。

1
ip_hash指令--如果客户端请求已经访问了服务器A并登陆,那么第二次请求时,会将该请求通过哈希算法自动定位到之前访问过的服务器中。

server指令

server指令主要用于指定服务器的名称和参数,比如可以通过weight参数来设置服务器的权重,weight值越大,权重越高,轮询中被选择到的概率就大。

upstream指令及相关变量

upstream指令主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询。

其他负载均衡的方法

其他负载均衡实现的常用方式

负载均衡的实现方法除了可以使用Nginx服务器实现外,还可以通过很多种方法来实现。负载均衡的核心就是建立一个服务器集群,然后用户首先访问到第三方代理服务器,然后由代理服务器选择一个集群中的服务器,然后将请求引入选定的服务器。那么代理服务器可以使用多种方式来充当,故而实现负载均衡的方式也是多种。总的来说,负载均衡实现的方式分为软件实现和硬件实现两种,如果中间的代理机构是硬件,那么就是通过硬件设备来实现负载均衡的方式,如果中间的代理机构为软件,就是软件实现负载均衡的方式。而其中,软件又可以是服务器软件、系统软件以及应用软件等充当。

负载均衡实现方式小结

下面简单总结一下负载均衡不同实现方式的优缺点:假如使用硬件的方式实现负载均衡,那么中间的转发机构就是硬件,这个时候运行的效率非常高,但是对应的成本也非常高。如果我们采用软件的方式来实现负载均衡,那么中间的转发机构就是软件,这个时候,运行效率不如硬件,但是成本相对来说低得多。而使用Nginx服务器实现负载均衡,那么就是通过软件的方式来实现负载均衡,并且Nginx本身支持高并发等。故而使用Nginx服务器实现负载均衡,能大大节约企业的成本,并且由于Nginx是服务器软件,其执行效率也是非常高。

上面就是所有内容,感觉还是很受益匪浅的。

参考:极客学院Nginx反向代理与负载均衡教程

微信