nginx负载均衡详解

首先看下基本介绍,跨多个应用程序实例的负载均衡是一种常用的技术,优化资源利用率,最大化吞吐量,减少延迟,并确保容错配置。可以使用nginx作为非常有效的HTTP负载均衡器将流量分发给几个应用程序服务器和提高性能,nginx的web应用程序的可伸缩性和可靠性。

nginx支持的负载均衡的方法

1 循环  对应用服务器的请求以循环方式分布

2 最少连接数 下一个请求分配给服务器的活跃连接数最少的

3 ip哈希 哈希函数是用来确定哪些服务器应该被选中下一个请求(基于客户机的IP地址)。


最简单的负载均衡配置应该和下面这个类似

http {
    upstream myapp1 { #upstream 是上游服务器的意思,后面的这个myapp1 代表的是组名 可以自定义
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

基于最少连接数的负载均衡配置

 upstream myapp1 {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

基于ip哈希的负载均衡配置

upstream myapp1 {
    ip_hash;
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}

比重的负载平衡配置

  upstream myapp1 {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
    }

由于方法类似,今天就演示一下基于比重的负载均衡,(生产环境中可根据需要选择不同的负载均衡方式,如果涉及到session cookie之类的 推荐使用基于ip哈希的负载均衡配置)

首先在nginx配置文件里面 增加一个上游组 并且命名为kok,需要放在http里面,不需要放在server里面,我是放在 server的前面。

 upstream kok {
        server 192.168.8.189:80 weight=1;#此处ip或者是域名应该按需填写,比重按你的配置高低填写
        server 192.168.8.200:80 weight=1;#同上
    }

定义好一个上游组服务器以后我们可以在下面的代理模块里面填写上组名,^/images 代表你需要转发的东西 按需填写,这个是放在server里面的。

 location ~ ^/images{
                proxy_pass http://kok;
        }

保存退出,重启nginx。

访问网页,查看效果及nginx访问日志

NG.png

可以看到上图 右下角有个图片没有加载出来

QQ1616.png

可以看到在189服务器上 1.png是取到了,也就是左图

1717.png





打赏请扫码~