Nginx负载均衡

2021/7/2 7:21:29

本文主要是介绍Nginx负载均衡,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Nginx不仅可作为一个Web服务器或反向代理服务器,还可以按照权重、轮询、ip_hash、URL hash等多种方式实现对后端服务器的负载均衡。

1、什么是负载均衡

负载均衡就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。

客户端向反向代理发送请求,接着反向代理根据某种负载机制转发请求至目标服务器(这些服务器都运行着相同的应用),并把获得的内容返回给客户端,期中,代理请求可能根据配置被发往不同的服务器。

2、负载均衡配置

通过Nginx中的upstream指令可以实现负载均衡,在该指令中能够配置负载均衡服务器组。目前负载均衡有4种典型的配置方式,分别为轮询方式、权重方式、ip_hash方法,以及利用第三方模块的方式。

配置方式说明
轮询方式负载均衡默认设置方式,每个请求按照时间顺序逐一分配到不同的后端服务器进行处理,如果有服务器宕机,会自动删除
权重方式利用weight指令轮询的权重比率,与访问率成正比,用于后端服务器性能不均的情况
ip_hash方式每个请求按访问IP的hash结果分配,这样可以使每个访客固定访问一个后端的服务器,可以解决session共享问题
第三方模块第三方模块采用fair时,按照每台服务器的响应时间来分配请求,响应时间短的优先分配;若第三方模块采用url_hash时,按照访问url的hash值来分配请求

在upstream指定的服务器组中,若每个服务器的权重都设置为1(默认值)时,表示当前的负载均衡是一般轮询方式。

另外,Nginx本身不包含第三方模块的实现方式,如fair或url_hash等,在使用时必须下载对应的upstream_fair模块或安装hash软件包,才可以实现第三方模块提供的负载均衡配置。

2.1 轮询配置

http {

    upstream myapp1 {

        server 192.168.1.103:8080;

        server 192.168.1.104:8080;

    }

    ……略

   server {

        listen 80;

        server_name  localhost;

 

        ……略

        location /webautotest/ {

            proxy_buffering off;

            proxy_pass http://myapp1;

        }

    }

}

 

2.2 ip_hash方式

ip-hash机制下,客户端ip地址被用作hash key来判断客户端请求应该发送到哪个服务器,这种方法保证了来自相同客户端的请求总是发送到相同服务器

upstream myapp1 {

    ip_hash;

    server srv1.example.com;

    server srv2.example.com;

    server srv3.example.com;

}

 

2.3 加权轮询负载均衡

 upstream myapp1 {

        server srv1.example.com weight=3;

        server srv2.example.com;

        server srv3.example.com;

    }



这篇关于Nginx负载均衡的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程