Nginx负载均衡模式
今天看到一篇Nginx负载均衡模式的文,觉得讲得很通俗易懂连我都看懂了!
以下是我的个人总结
首先,什么是Nginx?
Nginx是个高性能轻量级的web/http服务器,百度能承受5w并发连接数的响应;它主要提供的功能是:反向代理、负载均衡和HTTP 缓存。
其次,负载均衡是什么?
我们的项目在一台服务器上运行,它的接待请求是有上限的,到达上限后其他请求只能等待;出现这种情况我们就可以在多个服务器上分别运行这个项目,增加接待量;那么当有多台服务器的时候,Nginx如何分配每次请求由哪个服务器处理呢?这时候就用到了负载均衡;
Nginx有四种内置的负载均衡策略:
1. 轮询 负载均衡策略(默认,缺省配置)
即每次将请求按顺序轮流发送至相应的服务器上,此策略适合服务器配置相当,无状态且短平快的服务使用
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333;
}
注:如果有一台服务器down掉了 ,这台服务器会被自动剔除;
2. 最少连接数 负载均衡策略
此策略是指每次将请求分发到当前连接数最少的服务器上,也就是 Nginx 会将请求试图转发给相对空闲的服务器以实现负载平衡;
此策略适合请求处理时间长短不一造成服务器过载的情况;
upstream mysvr {
least_conn;
server 127.0.0.1:7878;
server 192.168.10.121:3333;
}
3. ip-hash 负载均衡策略
此策略会让相同的客户端ip请求相同的服务器,是解决session不能跨服务器的方法之一(先开个坑,下次专门写一篇)
upstream mysvr {
ip_hash;
server 127.0.0.1:7878;
server 192.168.10.121:3333;
server 134.168.10.121:3333;
}
注:当有服务器需要剔除,必须手动down掉
4. 权重 负载均衡策略
此策略会根据服务器权重进行请求分发,如果三台服务器有一台配置比较高,那么这台服务器可以进行处理更多请求,给这台服务器配置权重为 3 ,其他服务器权重不设置就默认为1;那么如果有5个请求,其中3个请求会分配给权重为3的那台服务器;
权重越高处理的请求数也越多,适合服务器配置硬件差别较大的情况;
upstream mysvr {
server 127.0.0.1:7878 weight=3;
server 192.168.10.121:3333;
server 134.168.10.121:3333;
}
注:
在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight);
此策略可以与least_conn和ip_hash结合使用