Nginx不仅可以作为一个web服务器或反向代理服务器,还可以按照权重、轮询、ip_hash、URL_hash等多种方式实现对后端服务器的负载均衡。
负载均衡的概念:
负载均衡就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和相应速度,带给用户更好的体验。
负载均衡服务器会根据具体的配置进行不同的分配。通过负载均衡,可以将一台服务器的工作扩展到多台服务器中执行,提高了整个网站的负载能力。
负载均衡的配置:
通过Nginx中的upstream指令可以实现负载均衡。在该指令中能够配置负载服务器组。
目前负载均衡有四种典型的配置方式:轮询方式、权重方式、ip_hash方式、以及利用第三方模块的方式。
配置方式 | 说明 |
轮询方式 | 每个请求按照时间顺序逐一分配到不同的后端服务器进行处理,如果有服务器宕机,会自动删除。 |
权重方式 | 利用weight指定轮询的权重比率,与访问率成正比,用于后端服务器性能不均的情况。 |
ip_hash方式 | 每个请求按访问IP的hash结果分配,这样可以使每个访客固定访问一个后端服务器,可以解决session共享的问题。 |
第三方模块 | 第三方模块如果采用fair时候,按照每台服务器的响应时间来分配请求,响应时间短的优先分配;如果第三方模块采用url_hash时,按照访问url的hash值来分配请求。 |
在upstream指定的服务器组中,若每个服务器的权重都设置为1,表示当前的负载均衡是一般的轮询方式。
Nginx本身不包含第三方模块的实现方式,如fair或者url_hash等,在使用的时候必须下载对应的upstream_fair模块或者安装hash软件包。才可以实现第三方模块提供的负载均衡。
1、一般轮询负载均衡: