配置负载均衡

nginx通过upstream模块提供负载均衡配置,使用起来也非常简单。

有四种调度算法:

1. weight 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除, 使用户访问不受影响。weight。指定轮询权值,weight值越大,分配到的访问机率越高, 主要用于后端每个服务器性能不均的情况下。

2.ip_hash

每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器, 有效解决了动态网页存在的session共享问题。

3. fair(第三方)

比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡, 也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的, 如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

4. url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。 Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx的hash软件包。

第一种:weight轮询

upstream webservers{
    server 192.168.6.11 weight=10 max_fails=2 fail_timeout=30s;
    server 192.168.6.12 weight=10 max_fails=2 fail_timeout=30s;
    server 192.168.6.13 weight=10 max_fails=2 fail_timeout=30s;
    server 192.168.6.14 down;
    server 192.168.6.15 backup;
}

server {
    listen 80;
    server_name lotus.com;

    location / {
        proxy_pass http://webservers;
        proxy_set_header  X-Real-IP  $remote_addr;
    }
}
几个参数的意义
1. max_fails

允许请求失败的次数,默认为1。当超过最大次数时, 返回proxy_next_upstream模块定义的错误。

2. fail_timeout:

在经历了max_fails次失败后,暂停服务的时间。 max_fails可以和fail_timeout一起使用,进行健康状态检查。

3. down

表示这台机器暂时不参与负载均衡,相当于注释掉了

4. backup

表示这台机器是备用机器,是其他的机器不能用的时候,这台机器才会被使用,俗称备胎

第二种:ip_hash

upstream webservers{
  ip_hash;
  server 192.168.6.11 weight=1 max_fails=2 fail_timeout=30s;
  server 192.168.6.12 weight=1 max_fails=2 fail_timeout=30s;
  server 192.168.6.13 down;
}

server {
    listen 80;
    server_name lotus.com;

    location / {
        proxy_pass http://webservers;
        proxy_set_header  X-Real-IP  $remote_addr;
    }
}
ip_hash要注意以下几点:
  1. ip_hash 模式下,最好不要设置weight参数,因为你设置了, 就相当于手动设置了,将会导致很多的流量分配不均匀。
  2. ip_hash 模式下,backup参数不可用,加了会报错,为啥呢? 因为,本身我们的访问就是固定的了,其实,备用已经不管什么作用了。

你可能感兴趣的:(配置负载均衡)