nginx负载均衡的三种方式,nginx负载均衡配置详解

nginx负载均衡的算法怎么实现的

nginx负载均衡的三种方式,nginx负载均衡配置详解

文章插图
【nginx负载均衡的三种方式,nginx负载均衡配置详解】常见的有LVS、Nginx和HAProxy,者者介绍分别如下:
LVS:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability),感谢章文嵩博士为我们提供如此强大实用的开源软件 。
LVS的特点是:
1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
3、工作稳定,自身有完整的双机热备方案;
4、无流量,保证了均衡器IO的性能不会收到大流量的影响;
5、应用范围比较广,可以对所有应用做负载均衡;
6、软件本身不支持正则处理,不能做动静分离 。
Nginx的特点是:
1、工作在网络的7层之上,可以针对http应用做一些分流的策略;
2、Nginx对网络的依赖非常小;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等;
6、Nginx仅能支持http和Email;
HAProxy的特点是:
1、HAProxy是支持虚拟主机的;
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3、支持url检测后端的服务器出问题的检测会有很好的帮助;
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6、HAProxy的算法多;
nginx实现tomcat集群的负载均衡有几种方式一,如果仅是对外提供一个页面访问,不用区分单一用户(不区分每个访问session,不涉及用户权限,用户资料等内容),仅仅配置nginx负载均衡策略即可 。
nginx负载均衡策略主要分一下四种:
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动剔除 。
2)、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器 。
3)、fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配 。
4)、url_hash 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效 。
二,如果涉及到用户session,做一些鉴权缓存、存放临时信息时,就必须做tomcat的session共享 。
目前可参考到的session共享方式主要分为两种 。
1)利用tomcat自带的组播机制,实现session复制 。
对tomcat及应用的若干配置文件进行配置即可实现,网上有很多资料可参考 。但这种方式些弊端,看过一些资料,不建议用session复制的方式 。在实际使用过程中,也发现有存在session莫名失踪的现象 。
2)利用第三方机制存储session 。
比较常见的是tomcat集成memcached服务器来存储session 。实际项目中,我们采用过利用redis实现session存储,redis高效的存取性能为高效的访问提供了保障,但是目前redis的集群功能似乎没有发布,如何解决redis的单点故障需要研究 。
怎么修改nginx实现均衡负载1、Nginx的负载分发策略
Nginx 的 upstream目前支持的分配算法:
1)、轮询 ——1:1 轮流处理请求(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询 。
2)、权重 ——you can you up
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况 。
3)、ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题 。
2、配置Nginx的负载均衡与分发策略
通过在upstream参数中添加的应用服务器IP后添加指定参数即可实现
nginx 做负载均衡需要什么配置对 nginx.conf 文件的做两处操作:






在修改的过程中,要注意:


Nginx负载均衡策略的优势体现在哪些方面?在OSI网络体系中,IP网络层是第3层,TCP/UDP传输层是第4层,而HTTP等应用层则是第7层,因此,在Web场景中,需求量最大的自然是7层负载均衡,而Nginx非常擅长应用层的协议处理,这体现在以下4个方面:1.通过多路复用、事件驱动等技术,Nginx可以轻松支持C10M级别的并发;2.能够充分使用CPU、内存等硬件,极高的效率使它可以同时为几十台上游服务器提供负载均衡功能;3.架构很灵活,它允许任何第三方以C模块的形式,与官方模块互相协作,给用户提供各类功能;4.使用了非常开放的2-clause BSD-like license源码许可协议,它意味着你在修改Nginx源码后,还可以作为商业用途发布 。