云服务器

Nginx负载均衡与反向代理

2017-12-27 15:19:26 0

一、什么是负载均衡与反向代理 随着网站的访问量的快速增长,单台服务器已经没法承担大量用户的并发访问,必须采用多台服务器协同工作,以提高计算机系统的处理能力和计算强度,满足当前的业务量的需求。而如何在完成同样功能的多个网络设备之间实现合理的业务量分配使之不会出现一台设备过忙,而其他设备却没有充分使用的情况。可以使用负载均衡。

  1. 负载均衡服务

负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无需其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器,而接收到请求的服务器独立地回应客户的请求。均衡负载能够平均分配客户请求到服务器阵列,来快速获取重要数据,解决大量并发访问服务问题。这种群集技术可以用最少的投资获得接近于大型主机的性能。

  1. 反向代理

反向代理是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须制定代理服务器,并将本来要直接发送到WEB服务器上的http请求发送到代理服务器中。由于外部网络上的主句并不会配置并使用这个代理服务器,普通代理服务器也被设计为Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的WEB代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主句访问内部网络时买这种代理服务的方式成为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当做一个标准的Web服务器而不需要特定的配置。不用之处在于,这个服务器没有保存任何网页的真实数据,所有静态网页或CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使网页信息遭到破坏,这样增强了Web服务器的安全性。

反向代理方式和包过滤方式或普通代理方式并无冲突,因此可以再防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供最佳的安全访问方式。

二、常见的WEB负载均衡方法

  1. 用户手动选择方式

这是比较古老的方式,常见于下载网站,通过提供不同的线路,服务器连接的选择来实行负载均衡。

  1. DNS轮询方式

大多数的域名注册商都支持同一主机添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就完成了简单的负载均衡。DSN轮询的成本非常低,在一些不重要的服务上,经常被使用。

但是DNS轮询有两个明显的缺点:

一、可靠性低

假设一个域名DNS轮询多台服务器,如果其中一台服务器发生故障,那么所有访问该服务器的请求都不会有所响应。即使DNS中去掉了该服务器,但是在接入商的DNS缓存里面还是会存在的,DNS的更新生效需要几个小时,甚至更久。因此DNS轮询的可靠性不高。

二、负载分配不均衡

DNS的负载均衡采用简单的负载算法,不能区分服务器的差异,不能反映服务器的当前运行状态,不能做到为性能好的服务器分配更多的请求,甚至有可能出现所有请求集中在某一台服务器上的情况。

  1. 四/七层负载均衡设备

现代负载均衡技术通常操作于OSI网络模型的第四层或第七层。第四层负载均衡将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址,对每次TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的。在第四层交换机中,这种均衡技术得到广泛的应用。一个目标地址是服务器群VIP(虚拟IP)连接请求的数据包流经交换机,交换机根据源端和目的IP地址,TCP或UDP端口号和一定的负载均衡策略,在服务器IP和VIP讲进行映射,选取服务器群中最好的服务器来处理连接请求。

常见的四/七层负载均衡设备:

一、硬件负载均衡交换机

代表:F5 BIG-IP、Cisco CSS、Foundry等产品,这些产品价格不菲,高达几十万人民币。

二、软件四层负载

软件四层负载的代表LVS(linux virtual Server),LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。LVS集群采用IP负载均衡技术和基于内容请求分布技术。调度器具有很好的吞吐率,将请求均衡地转移到不用的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能,高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端与服务器端的程序。为此,在设计师要考虑系统的透明性,可伸缩性,高可用性,易用管理性。

三、软件七层负载

软件的七层负载均衡大多基于HTTP反向代理方式,代表产品有Nginx,L7SW,HAProxy等。Nginx的反向代理负载均衡能够很好地支持虚拟主机,可配置性很强,可以按轮询、IP哈希、URL哈希、权重等多重方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。

  1. 多线多地区智能DNS解析与混合负载均衡方式

以新浪首页为例,负载均衡同时用到了“多线多地区只能DNS解析、DNS轮询、四/七层负载均衡交换机”等技术。智能DNS解析能够根据用户本地设置的DNS服务器线路和地区,将对同一域名请求解析到不同的IP上。

例如:当背景电信用户访问新浪时,会被新浪的DNS服务器解析到北京电信机房的IP上;当北京网通用户访问时,会被解析到北京网通机房的IP上。当广东电信用户访问时,会被解析到广东电信机房的IP上。等等。

三、负载均衡与方向代理的配置 完整的Nginx反向代理实例

  1. http {

  2. upstream cluster {

  3. server srv1;

  4. server srv2;

  5. server srv3;

  6. }

7.

  1. server {

  2. listen 80;

10.

  1. location / {

  2. proxy_pass http://cluster;

  3. }

  4. }

  5. }

上一篇: 无

微信关注

获取更多技术咨询