Nginx负载均衡_腾讯视频
一、.背景介绍
nginx 这个轻量级、高性能的 web server 主要可以干两件事情:
一是直接作为http server;另外一个功能就是作为反向代理服务器实现负载均
二、.知识剖析
nginx的负载均衡的几种策略:
1.轮询(默认);
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {
server IP1;
server IP2;
}
2.指定权重:weight;
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server IP1 weight=10;
server IP2 weight=10;
}
3.ip_hash;
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server IP1:88;
server IP2:80;
}
4.fair(第三方);
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}
5.url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
三、常见问题
1.为什么要用nginx负载均衡?
2.nginx的优缺点?
四、解决方案
1.为什么要用nginx负载均衡?
简单来说就是为了在服务器端宕机后,不会导致整个服务不能使用,负载均衡需要在两台以上的服务器上才能实现
2.nginx的优缺点?
优点:(1)Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能
(2)Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来
(3)可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量
(4)Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。
缺点:(1)Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些
(2)对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测
五、编码实战
六、扩展思考
Session问题:
当我们确定一系列负载的服务器后,那我们的WEB站点会分布到这些服务器上。
这个时候如果采用Test2 每一次请求随机访问任何一台服务器上,这样导致你访问A服务器后,
下一次请求又突然转到B服务器上。这个时候与A服务器建立的Session,传到B站点服务器肯定是无法正常响应的。
总结:通过nginx ip_hash负载保持对同一服务的会话,这中看起来最方便,最轻量。但是数据量增大会导致ip
七、参考文献
八、更多讨论
网友评论