宝塔Nginx负载均衡

2020-09-29 18:05:37 257

最近几年建站面板里宝塔面板属于顶尖了,可以一键配置很多中间件,其中就包括nginx。

这次我们就尝试用宝塔安装nginx来做个简单的负载均衡。

 

1.准备

两台以上服务器,我这里准备了四台

宝塔面板安装nginx1.16

 

2.Nginx负载均衡的集中方式介绍

2.1 轮询

轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10001服务和10002服务。

upstream  lunxun {

       server    10.10.0.3;

       server    10.10.0.4;

       server    10.10.0.5;

      }

 

2.2 权重

指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10002服务的访问比率会是10001服务的二倍。

upstream  quanzhong {

       server    10.10.0.3 weight=1;

       server    10.10.0.4 weight=2;

       server    10.10.0.5 weight=3;

      }

 

2.3 iphash

每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。

upstream  iphash {

      ip_hash;

       server    10.10.0.3 weight=1;

       server    10.10.0.4 weight=2;

       server    10.10.0.5 weight=3;

      }

 

2.4 最少连接

将请求分配到连接数最少的服务上。

upstream  least_conn {

      least_conn;

       server    10.10.0.3 weight=1;

       server    10.10.0.4 weight=2;

       server    10.10.0.5 weight=3;

      }

 

2.5 fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream  fair {

       server    10.10.0.3 weight=1;

       server    10.10.0.4 weight=2;

       server    10.10.0.5 weight=3;

       fair;

      }

 

 

3.Nginx配置

3.1 nginx配置文件修改

以轮训为例,如下是nginx.conf完整代码。

把upstream写在http节点下

user  www www;

worker_processes auto;

error_log  /www/wwwlogs/nginx_error.log  crit;

pid        /www/server/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

 

events

    {

        use epoll;

        worker_connections 51200;

        multi_accept on;

    }

 

http

    {

    upstream  lunxun {

       server    10.10.0.3;

       server    10.10.0.4;

       server    10.10.0.5;

      }

    

    upstream  quanzhong {

       server    10.10.0.3 weight=1;

       server    10.10.0.4 weight=2;

       server    10.10.0.5 weight=3;

      }

    

    upstream  iphash {

      ip_hash;

       server    10.10.0.3 weight=1;

       server    10.10.0.4 weight=2;

       server    10.10.0.5 weight=3;

      }

    upstream  least_conn {

      least_conn;

       server    10.10.0.3 weight=1;

       server    10.10.0.4 weight=2;

       server    10.10.0.5 weight=3;

      }

      

#fair需要ngnix安装upstr_fair      

#    upstream  fair {

#       server    10.10.0.3 weight=1;

#       server    10.10.0.4 weight=2;

#       server    10.10.0.5 weight=3;

#       fair;

#      }

        include       mime.types;

#include luawaf.conf;

      

include proxy.conf;

 

        default_type  application/octet-stream;

 

        server_names_hash_bucket_size 512;

        client_header_buffer_size 32k;

        large_client_header_buffers 4 32k;

        client_max_body_size 50m;

 

        sendfile   on;

        tcp_nopush on;

 

        keepalive_timeout 60;

 

        tcp_nodelay on;

 

        fastcgi_connect_timeout 300;

        fastcgi_send_timeout 300;

        fastcgi_read_timeout 300;

        fastcgi_buffer_size 64k;

        fastcgi_buffers 4 64k;

        fastcgi_busy_buffers_size 128k;

        fastcgi_temp_file_write_size 256k;

fastcgi_intercept_errors on;

 

        gzip on;

        gzip_min_length  1k;

        gzip_buffers     4 16k;

        gzip_http_version 1.1;

        gzip_comp_level 2;

        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;

        gzip_vary on;

        gzip_proxied   expired no-cache no-store private auth;

        gzip_disable   "MSIE [1-6]\.";

 

        limit_conn_zone $binary_remote_addr zone=perip:10m;

limit_conn_zone $server_name zone=perserver:10m;

 

        server_tokens off;

        access_log off;

 

server

    {

        listen 888;

        server_name phpmyadmin;

        index index.html index.htm index.php;

        root  /www/server/phpmyadmin;

 

        #error_page   404   /404.html;

        include enable-php.conf;

 

 

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

        {

            expires      30d;

        }

 

        location ~ .*\.(js|css)?$

        {

            expires      12h;

        }

 

        location ~ /\.

        {

            deny all;

        }

 

        access_log  /www/wwwlogs/access.log;

    }

include /www/server/panel/vhost/nginx/*.conf;

}

 

 

3.2 站点配置文件修改

在serveri节点下location的proxy_pass修改为http://upstream_name ,如下

    location / {

        proxy_pass http://quanzhong;

        proxy_redirect default;

      }

 

 

 

4.测试

重启nginx,第一次访问http://10.10.0.2如图所示

这里我设置的是节点5权重较高,所以多次出现节点5的页面

图片1.png

 

再次访问如图所示

2.png

 

 

多次访问如图所示

 

3.png

 

 

如果要修改负载均衡算法修改站点配置文件中对应upstream模块即可。

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

更多建议

这条文档是否有帮助解决问题?

没有帮助 有帮助

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: