nginx负载均衡

五种负载均衡策略:
        location /xxx { 
            root  html; 
            index  index.html index.htm; 
            proxy_pass http://backserver; 
        }
        轮询(默认):
            每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
            upstream backserver {
                server 192.168.0.11:8080;
                server 192.168.0.12:8080;
            }
        指定权重:
            指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,权重越高,被访问的概率越大
            upstream backserver {
                server 192.168.0.11:8080 weight=1;
                server 192.168.0.12:8080 weight=2;
            }
        IP绑定ip_hash:
            每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
            upstream backserver {
                ip_hash;
                server 192.168.0.11:8080;
                server 192.168.0.12:8080;
            }
        fair(第三方):
            按后端服务器的响应时间来分配请求,响应时间短的优先分配
            upstream backserver {
                server 192.168.0.11:8080;
                server 192.168.0.12:8080;
                fair;
            }
        url_hash(第三方):
            按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效
            upstream backserver {
                server 192.168.0.11:8080;
                server 192.168.0.12:8080;
                hash $request_uri;
                hash_method crc32;
            }


        配置实例:
            worker_processes 2;
            error_log /var/log/nginx/error.log;
            pid /run/nginx.pid;
            events {
                worker_connections 1024;
            }
            http {
                log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                  '$status $body_bytes_sent "$http_referer" '
                                  '"$http_user_agent" "$http_x_forwarded_for"';

                access_log  /var/log/nginx/access.log  main;

                sendfile            on;
                tcp_nopush          on;
                tcp_nodelay         on;
                keepalive_timeout   65;
                types_hash_max_size 2048;

                include             /etc/nginx/mime.types;
                default_type        application/octet-stream;
                underscores_in_headers on;
                server {
                    listen       80;
                    server_name  localhost;
                    root         /opt/wwwroot/api-doc.kingnetdc.com;


                    location / {
                
                    }
                }
                
                upstream chatmonitorstream {
                    server 192.168.90.24:9001;
                }  

                map $http_upgrade $connection_upgrade {
                    default upgrade;
                    '' close;
                }  

                server {
                    listen       80;
                    server_name  chatmonitor.kingnetdc.com;
                    
                    location /favicon.ico {
                        log_not_found off;
                        access_log off;
                    }

                    location / {
                        rewrite ^/$              /main/index.html  break;
                        rewrite ^/main$          /main/index.html  break;
                        rewrite ^/main/$          /main/index.html  break;
                        rewrite ^/management$       /management/index.html  break;
                        rewrite ^/management/$      /management/index.html  break;

                        proxy_pass    http://chatmonitorstream;
                        proxy_redirect     off;
                            proxy_set_header   Host             $host;
                            proxy_set_header   X-Real-IP        $remote_addr;
                            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                            #proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
                            proxy_max_temp_file_size 0;
                            proxy_connect_timeout      90;
                            proxy_send_timeout         90;
                            proxy_read_timeout         90;
                            proxy_buffer_size          4k;
                            proxy_buffers              4 32k;
                            proxy_busy_buffers_size    64k;
                            proxy_temp_file_write_size 64k;
                    }
                        
                    location /chatrealservice/ {
                        proxy_pass    http://chatmonitorstream;
                            proxy_set_header   Host             $host;
                        proxy_set_header   X-Real-IP        $remote_addr;
                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                    }
                }        
            }
    动静分离:访问后缀为.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)文件时,加载/usr/share/nginx/html下文件,并在客户端进行缓存
        server {
            listen       80;
            server_name  localhost;
            
            #server
            location /shop/ {
                proxy_pass http://XXX;
                proxy_set_header X-Real-IP $remote_addr;

            }
            #static file
            location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
                root /usr/share/nginx/html;
                #cache
                expires 3d;
            }
        }
    一致性Hash算法:(一般用于缓存服务器)
        nginx借助第三方模块ngx_http_consistent_hash,通过一致性哈希算法来选择合适的后端节点
        下载https://github.com/replay/ngx_http_consistent_hash
        解压unzip ngx_http_consistent_hash-master.zip
        进入nginx安装原始文件夹:./configure --add-module=/XXX/XXX/ngx_http_consistent_hash-master,添加模块
        make
        make install
        配置实例:
            
            worker_processes  1;
            events {
                worker_connections  1024;
            }
            http {
                upstream www.nbmp.cn {
                    consistent_hash $request_uri;
                    server 106.38.193.181:80;
                    server 106.38.193.182:80;
                }
                server {
                    listen       80;
                    server_name  localhost;
                    location / {
                         proxy_pass http://www.nbmp.cn;
                   }
                }
            }
        consistent_hash $remote_addr        可以根据客户端ip映射
        consistent_hash $request_uri        根据客户端请求的uri映射
        consistent_hash $args                根据客户端携带的参数进行映射

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值