负载均衡(反向代理)

Posted 一度校园动态

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了负载均衡(反向代理)相关的知识,希望对你有一定的参考价值。

负载均衡(反向代理)

负载均衡(反向代理)
负载均衡(反向代理)

1.什么是负载均衡?

当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。下面详细介绍负载均衡的实现方式之一

什么是反向代理负载均衡?

反向代理服务器是一个位于实际服务器之前的服务器,所有向我们网站发来的请求都首先要经过反向代理服务器,服务器根据用户的请求要么直接将结果返回给用户,要么将请求交给后端服务器处理,再返回给用户。我们知道,所有发送给我们网站的请求都首先经过反向代理服务器。那么,反向代理服务器就可以充当服务器集群的调度者,它可以根据当前后端服务器的负载情况,将请求转发给一台合适的服务器,并将处理结果返回给用户。

优点

隐藏后端服务器。
与HTTP重定向相比,反向代理能够隐藏后端服务器,所有浏览器都不会与后端服务器直接交互,从而能够确保调度者的控制权,提升集群的整体性能。
故障转移与DNS负载均衡相比,反向代理能够更快速地移除故障结点。
当监控程序发现某一后端服务器出现故障时,能够及时通知反向代理服务器,并立即将其删除。
合理分配任务,HTTP重定向和DNS负载均衡都无法实现真正意义上的负载均衡,也就是调度服务器无法根据后端服务器的实际负载情况分配任务。
但反向代理服务器支持手动设定每台后端服务器的权重。
我们可以根据服务器的配置设置不同的权重,权重的不同会导致被调度者选中的概率的不同。

缺点

调度者压力过大由于所有的请求都先由反向代理服务器处理,那么当请求量超过调度服务器的最大负载时,调度服务器的吞吐率降低会直接降低集群的整体性能。制约扩展当后端服务器也无法满足巨大的吞吐量时,就需要增加后端服务器的数量,可没办法无限量地增加,因为会受到调度服务器的最大吞吐量的制约。

粘滞会话


反向代理服务器会引起一个问题。若某台后端服务器处理了用户的请求,并保存了该用户的session或存储了缓存,那么当该用户再次发送请求时,无法保证该请求仍然由保存了其Session或缓存的服务器处理,若由其他服务器处理,先前的Session或缓存就找不到了。

解决办法1 可以修改反向代理服务器的任务分配策略,以用户IP作为标识较为合适。相同的用户IP会交由同一台后端服务器处理,从而就避免了粘滞会话的问题。

解决办法2 可以在Cookie中标注请求的服务器ID,当再次提交请求时,调度者将该请求分配给Cookie中标注的服务器处理即可

解决办法3使用memcached同步session

实现步骤


安装memcached

准备俩个tomcat 将端口改成不同的 然后加入标识,比如在第一个tomcat中加入<p>I am  tomcat 1</p>  ,第二个加入<p>I am  tomcat 2</p>分别将<%@ page session="false" %>改成<%@ page%>

在index.jsp中加入  <%=session.getId()%>context.xml中加入

<Manager  

        className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  

        memcachedNodes="n1:127.0.0.1:11211"  

        sticky="false"  

        sessionBackupAsync="false"  

        requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"  

        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>


导入相关jar包到tomcatlib目录下(tomcat7.0)

nginx.conf配置加入下面配置

#服务器的集群  

    upstream  netitcast.com {  #服务器集群名字   

        server    127.0.0.1:18080  weight=1;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。  

        server    127.0.0.1:28080  weight=2;  

    } 

进入nginx解压目录输入start nginx

启动俩个tomcat

运行后刷新几次发现sessionId相同则搭建成功

memcached安装后服务会自动启动


一度教育简介

长沙市一度软件教育培训学校,系中国工业和信息化部联合认证的软件技术实训基地,2008年建校至今,已成为湖南高端IT培训的领跑品牌。

办学理念:

一切以就业为中心,以项目实战为主导,分层次教学。

教学模式:

理论指导+项目实战+COT,培养高技能IT精英。

教学思想:读项目,做项目,讲项目。

教育理念:以教为本,育为先。









以上是关于负载均衡(反向代理)的主要内容,如果未能解决你的问题,请参考以下文章

nginx反向代理访问很慢,我做了负载均衡,现在几乎无法访问,有谁能帮我解决一下,万分感谢。

Nginx实现反向代理负载均衡功能

nginx学习之反向代理负载均衡

Nginx 反向代理负载均衡虚拟主机

nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP

Linux服务:Nginx反向代理与负载均衡