Nginx负载均衡

负载均衡

负载均衡是什么?

我们之前使用proxy_pass的方式实现了nginx代理请求到后端的效果,随着我们的网站访问量越来越多,一个后端就不现实了,那么接下来我们应该如果在访问量日渐增大的情况下,满足线上业务的稳定呢?

解决方法就是:负载均衡

负载均衡简单说来人多力量大,打群架。

nginx upstream模块
官方资料网址:http://www.nginx.cn/doc/standard/httpupstream.html

官方的代理属性很多,我们主要介绍upstream和ip_hash属性

官方代码示例:

upstream backend  {
  server backend1.example.com weight=5;
  server backend2.example.com:8080;
  server unix:/tmp/backend3;
}

server {
  location / {
    proxy_pass  http://backend;
  }
}

属性详解:

upstream 主要是定义一个后端服务地址的集合列表,每个后端服务使用一个server命令表示

upstream {} 和 Server {} 两部分内容属于平级关系。

后端服务状态:

在upstream模块中,可以使用server命令指定后端服务器的地址,同时还可以设置后端服务器在负载均衡调度中的状态,常用的状态有以下几种:
down: 表示当前server主机暂时不参与负载均衡。
backup:后备主机,当所有非backup机器出现故障或者繁忙的时候,才会请求backup机器。
max_fails:允许请求的最大失败数,默认为1,配合fail_timeout一起使用
fail_timeout:经历max_fails次失败后,暂停服务的时间,默认为10s。
nginx负载均衡实践

载均衡配置文件:

#vim /etc/nginx/conf.d/upstream.conf
upstream backends {
  server 10.211.55.26:10086;
  server 10.211.55.26:10087;
  server 10.211.55.26:10088;
}
server {
      listen 10.211.55.26:80;
      server_name localhost;
      location / {
        proxy_pass http://backends;
  }
}

后端代理配置文件:

#vim /etc/nginx/conf.d/backend.conf
server {
  listen 10.211.55.26:10086;
  location / {
        root /var/www/html/hello/;
        try_files $uri $uri/ =404;
  }
}
server {
  listen 10.211.55.26:10087;
  location / {
        root /var/www/html/nihao/;
        try_files $uri $uri/ =404;
  }
}
server {
  listen 10.211.55.26:10088;
  location / {
        root /var/www/html/huanying/;
        try_files $uri $uri/ =404;
  }
}

负载均衡调度算法
官方资料网址:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#example

Nginx提供的负载均衡策略有两种:

内置策略:nginx自带的算法
雨露均沾型:轮训、加权轮训、哈希
定向服务型:ip_hash、least_conn、cookie、route、lean
商业类型:ntlm、least_time、queue、stick
拓展策略:各种结合业务场景自定义的算法或者第三方算法
自定义算法
第三方算法:fair、url_hash
第三方算法:fair、url_hash

常用算法简介

轮询(默认):请求按顺序逐一分配到不同的后端服务器。
weight:指定轮询权重,值越大,分配到的几率就越高,适用于后端服务器性能不均衡情况。
ip_hash:按访问IP的哈希结果分配请求,分配后访客访问固定后端服务器,有效的解决动态网页会话共享问题。
加权轮训使用

upstream meiduo {
      # weight设定权重,权重数越大,服务被访问的几率越大
    server 10.211.55.30:8001 weight=1;
    server 10.211.55.30:8002 weight=3;
    server 10.211.55.30:8003 weight=6;
}

server {
    listen 10.211.55.30:8080;
    location / {
        proxy_pass http://meiduo;
    }
}

server {
    listen 10.211.55.30:8001;
     location / {
        root /etc/nginx/html;
        index 8001.html;
    }
}

server {
    listen 10.211.55.30:8002;
     location / {
        root /etc/nginx/html;
        index 8002.html;
    }
}
server {
    listen 10.211.55.30:8003;
     location / {
        root /etc/nginx/html;
        index 8003.html;
    }
}

ip_hash使用

upstream meiduo {
      # 使用ip_hash属性
    ip_hash;
    server 10.211.55.30:8001;
    server 10.211.55.30:8002;
    server 10.211.55.30:8003;

}

server {
    listen 10.211.55.30:8080;
    location / {
        proxy_pass http://meiduo;
    }
}

server {
    listen 10.211.55.30:8001;
     location / {
        root /etc/nginx/html;
        index 8001.html;
    }
}

server {
    listen 10.211.55.30:8002;
     location / {
        root /etc/nginx/html;
        index 8002.html;
    }
}
server {
    listen 10.211.55.30:8003;
     location / {
        root /etc/nginx/html;
        index 8003.html;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值