NGINX负载均衡实战教程

nginx调度算法解析

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。
2、weight(轮询权值)
weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。
注意:此算法为常用的算法
3、ip_hash
每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。
4、fair
比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块
5、url_hash
按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。


实验环境说明:
nginx/1.13.3 centos7-3.10.0-693.11.1.el7
负载均衡服务器lb01:192.168.199.244
节点服务器web01:192.168.100.238
节点服务器web02:192.168.100.220
节点服务器web03:192.168.100.221

一、负载服务器配置

1.nginx.conf

  user nginx;
  worker_processes 1;
  pid /run/nginx.pid;
  include /etc/nginx/modules-enabled/*.conf;
  events {
      worker_connections 768;
  }
  http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    sendfile    on;
         upstream default_pools {   负载均衡代理池01
            server 192.168.100.238:80 weight=1;
         }
         upstream static_pools {    负载均衡代理池02
             server 192.168.100.220:80 weight=1;
         }
         upstream upload_pools {    负载均衡代理池03
             server 192.168.100.221:80 weight=1;
         }
     server {
         autoindex on;
         server_name www.chenqj.com;
             location / {
                proxy_pass http://default_pools;
             }
             location /static/ {
                 proxy_pass http://static_pools;
             }
             location /upload/ {
                 proxy_pass http://upload_pools;
             }
     }
 }

2.hosts解析

192.168.199.244 www.chenqj.com

二、web01

  user nginx;
  worker_processes 1;
  pid /run/nginx.pid;
  events {
      worker_connections 768;
  }
  http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    sendfile    on;
    server {
    listen 80;
    server_name localhost;
        root /usr/share/nginx/www;
        index proxy.html;
    }
}                    

在web01的站点目录/usr/share/nginx/www下新增proxy.html文件
proxy.hmtl内容如下:
192.168.100.238.default.html

三、web02

  user nginx;
  worker_processes 1;
  pid /run/nginx.pid;
  events {
      worker_connections 768;
  }
  http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    sendfile    on;
    server {
    listen 80;
    server_name localhost;
    root /usr/share/nginx/www;
    location /static/ {             
      index proxy.html;
      } 
    }
}

在web01的站点目录/usr/share/nginx/www下新增static目录,并在该目录下新增proxy.html文件
proxy.hmtl内容如下:
193.192.168.100.220-static.html

四、web03

  user nginx;
  worker_processes 1;
  pid /run/nginx.pid;
  events {
      worker_connections 768;
  }
  http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    sendfile    on;
    server {
    listen 80;
    server_name localhost;
    root /usr/share/nginx/www;
    location /upload/ {             
      index proxy.html;
      } 
    }
}

在web01的站点目录/usr/share/nginx/www下新增upload目录,并在该目录下新增proxy.html文件
proxy.hmtl内容如下:
192.168.100.221.upload.html

五、实验结果

192.168.199.244下执行

curl www.chenqj.com
    192.168.100.238.default.html
curl www.chenqj.com/upload/
    192.168.100.221.upload.html
curl www.chenqj.com/static/
    192.168.100.220-static.html

注意点
web节点在收到负载均衡服务器的请求时,会把节点下的第一个虚拟主机发给了反向代理,解决这个问题的办法就是在负载均衡服务器server标签内引用如下模块

proxy_set_header Host $host

日志格式中头部为负载均衡服务器的IP,想要设置为真实用户的IP,需要再负载均衡服务器server标签内引用如下模块,同时,节点服务器下的日志格式也要加入该行

proxy_set_header X-Forwarded-For $remote_addr

其他种类负载均衡
本文中是根据URL目录的内容来实现转发;
还有其他的,例如根据用户设备的种类来实现代理转发,这里可以引用http_user_agent模块来实现,这里就不举例说明了

转载于:https://www.cnblogs.com/reaperhero/articles/10162477.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值