首先声明:我对负载均衡基本上一无所知
我看了F5的一些资料,好像负载均衡器的主要原理是 按流量把用户请求分摊到各服务器上
这初看是没有问题的,但是考虑到“session”,这样能行吗?
比如说,现有A,B两台服务器被均衡,某用户的第一次WEB请求是登录网站,假设均衡器将他登录到了A服务器上,A服务器上就会保留他的session;然后,他要求查看“个人信息”,均衡器将他的请求转到了B服务器,而B上没有他的session,B就会拒绝服务,对不对?
类似的问题还有上传下载文件,如果文件上传到了A服务器上,再到B服务器上去下载,能下载到吗?
我真的啥也不懂。请大家教教我
f5做负载均衡有很多种算法可以选择,你说的那种很少用,一般都是把同一个用户的请求都转向同一个节点,生产环境中f5用来保存session的话服务器的压力就大了点,当然没¥就算了。有讲究的中间会加一组缓存服务器。服务器都是做成集群,集群提供session的复制,这样在一台服务器死了后,f5就把该服务器的用户转到别的节点上。
谢谢,受教了。
其实也就是说,如果采用了集群,系统的设计还是要受一些影响的,对不对? 比如 我上面说的文件上传下载的例子, 文件只能存放在一个公共的地方,而不能和WEB服务器放在同一台机上
假设现在有三台机器,机器A专门做网络层的负载均衡,负责网络包的分发,机器B和C是中间件应用。
客户甲现在请求应用,做一个page flow类似的操作,前三次操作刚巧被机器A全部分发到了机器C上,产生的session也都在机器C的JVM中,第四次操作被机器A转发到了机器B上,机器B的JVM中没有客户甲的session,这种情况下,请求就会失败。
你所说的JVM可以跨机器、跨IP,那是WebLogic、OracleAS提供的所谓的集群、Session复制。而实际项目里session复制是比较恶心的,尤其是session里东西太多的时候,多机之间传递session对象的效率一点都不高。况且,如果采用叻产品级的集群,使用session复制,那你提出的这个所谓的网络层负载均衡根本也就是个无所谓的东西,因为后面的中间件已经被集群为相当于一个JVM,你网络层的负载均衡显然没有中间件产品提供的负载均衡来得有效。
如果我没理解错,大家讨论的是在不使用产品集群、session复制的情况下,应该如何避免使用session。还是那句话,要是session能够在容器之间同步的非常理想,那整个帖子都没必要讨论叻,而且你那个负载均衡,更没意义,提供叻session同步的容器会不提供更高级的应用层的负载均衡么?
robin的见解:
所谓硬件负载均衡器其实就是一台功能简化的电脑,上面运行某种操作系统,在网络协议处理上面进行特殊的增强(路由器实际上也是这样的)。他的作用就是放在多个服务器的前端,接受外面的访问请求,然后根据某些特定的策略,分发到不同的服务器上。
LVS原理是一样的,只不过是在各个参与负载均衡的服务器上面安装软件,而不是单独弄一台机器做这个事情(成本大幅度降低,同时也可以避免单点故障,不过效率要降低很多)。
总之硬件也好,操作系统级别的负载均衡也好,实际上都是在网络协议层做请求的分发。它做的工作很简单,接受请求,根据策略进行分发。此外,它还承担故障切换的任务,当某个节点宕机以后,会将分发到这个节点的请求分发到其他节点(会定期进行心跳检测,确定节点工作与否)。当节点恢复正常以后,还可以继续把请求再分发过来。
这种负载均衡方案是针对网络协议级别的,它至多实现对端口和协议的控制,但是它对服务器上面运行了什么程序,有什么数据一无所知。
应用服务器的群集同样可以实现上述的功能,即:
1、负载均衡
2、故障切换和恢复
只不过可靠性和效率要比硬件负载均衡器低很多罢了。
前面提到硬件负载均衡器并不知道某个节点的应用服务器Session有什么数据,因此某用户登陆到节点A以后,当节点A宕机,负载均衡器将请求分发到节点B。但是节点B没有用户的Session,因此用户必须重新登陆!对于那些把pageflow状态保存在HttpSession的应用来说,意味着整个页面流程都丢失了。
应用服务器群集除了上述两点,还具备
3、HttpSession的复制和粘着功能
即一旦某用户在节点A登陆,那么该用户后续请求会一直分发到A节点(有效降低了Session复制的频率),除非节点A宕机,则请求分发到B节点,即使A节点恢复以后,由于粘着性,请求仍然交给B节点,除非B节点宕机。
从某种程度上来说,硬件负载均衡和应用服务器群集功能上是有某种冲突的。当你把他们都用上的时候,例如硬件负载均衡根据策略将请求分发到B节点,但是由于应用服务器群集的session粘着性,B节点的应用服务器即使拿到了该请求,它也不会自己处理,而是转发给A节点的应用服务器。
不过在实际的应用中,考虑到各种各样的情况,往往会硬件负载均衡和应用服务器群集都用上。硬件负载均衡器的作用不仅仅限于负载的均衡,有时候根据需要,可能会有更加复杂的控制策略,例如不同省份的请求分发给不同的服务器去处理(可能不同省份的应用处理逻辑不一样),例如OLAP型请求分发给某节点,OLTP型应用分发给某节点等等,不同的业务分发到不同的节点等等。
因此整个部署拓扑会变成一个混合方案:前端硬件负载均衡器根据各种需要指定策略分发,后端每个节点上面做应用服务器垂直群集。节点之间故障切换的时候是没有Session复制的,这个时候,要求用户重新登陆一次是可以接受的(前提是不要在Session里面放其他逻辑,像查询结果集,pageflow等等)。至于做应用服务器垂直群集的作用往往是为了实现不停机情况下的应用重新发布升级等等。
主要还要看你跑的是什么任务,是WEB还是数据库
什么系统也没说,做什么服务器也没说……
用SERVER 2003自带的网络负载均衡管理器建集群吧,在两台服务器上分别建立,局域网里访问,不知道是WEB服务器还是文件服务器,还是数据库服务器?
如果是用微软的负载均衡是不需要特别的设备。
在每个节点上均安装windows server2003 x64 or x86 ENT,并安装SP1及其他补丁。
设置每个节点的网络连接,public的IP必须与AD同属一个网段(比如192.168.16.0/28),DNS指向AD;private的IP必须与其他节点的private的IP同属一个网段(与不同网段比如:10.10.10.0/28),DNS不用设定,并禁用private中WINS选项中NetBIOS上的TCP/IP和DNS注册。
F5负载均衡技术
F5 BIG-IP LTM(本地流量管理器)是一台对流量和内容进行管理分配的设备。它提供12种灵活的算法将数据流有效地转发到它所连接的服务器
群。而面对用户,只是一台虚拟服务器。用户此时只需访问定义于BIG-IP LTM上的一台服务器,即虚拟服务器(Virtual Server)。但他们的
数据流却被BIG-IP灵活地均衡到所有的物理服务器。
BIG-IP LTM可以通过多种负载均衡算法对流量进行分配,这些算法包括:
轮询(RoundRobin)
比率(Ratio)
优先权(Priority)
最少的连接方式(LeastConnection)
最快模式(Fastest)
观察模式(Observed)
预测模式(Predictive)
动态性能分配(DynamicRatio-APM)
动态服务器补充(DynamicServerAct)
服务质量(QoS)
服务类型(ToS)
规则模式
分享到:
相关推荐
4. **集成Ribbon**:Feign默认集成了Ribbon,Ribbon是一个客户端负载均衡器,它能够帮助Feign在调用远程服务时实现负载均衡。 5. **与Eureka整合**:通过与Eureka的整合,Feign能够利用服务注册与发现机制来选择合适...
本资料包“springboot-nginx-redis-session共享、TCPUDP负载均衡.zip”提供了一套完整的解决方案,涉及到Spring Boot、Nginx、Redis以及TCP/UDP负载均衡的整合。下面将详细解释这些技术及其在实际应用中的作用。 ...
Ribbon不仅支持简单的轮询、随机等负载均衡策略,还可以通过自定义实现更复杂的负载均衡算法。 **Ribbon的基本使用** 1. **集成Ribbon** 要使用Ribbon,首先需要在项目中引入相应的依赖。在Spring Boot项目中,...
服务提供者会在启动时向Eureka Server注册,而服务消费者则会从Eureka Server获取服务提供者的地址信息,实现动态的服务发现和负载均衡。 其次,`microservice-provider-user`模块是User服务提供者。在这个模块中,...
TiDB(Ti: Transactional, DB: Database)是一款开源的分布式NewSQL数据库,设计目标是支持在线事务处理(OLTP)、在线分析处理(OLAP)和混合工作负载。这款数据库系统借鉴了Google的Spanner/F1的设计思想,实现了...
在构建分布式系统时,Spring Cloud是一个非常流行的框架,它提供了许多工具和服务发现、负载均衡、API调用等关键功能。本项目"springcloud+eureka+ribbon+feign搭建 分布式项目.zip"旨在利用Spring Boot、Spring ...
在本项目中,"springboot+ribbon+eureka+fegin整合的一个Demo" 是一个全面展示Spring Boot微服务架构中服务发现、负载均衡和远程调用功能的实例。这个例子可以帮助开发者深入理解如何在实际开发中运用这些技术组件,...
Ribbon是Netflix的客户端负载均衡器,它作为一个客户端侧的负载均衡组件,可以配合Eureka实现服务间的智能路由。Ribbon客户端会自动从Eureka服务注册中心获取服务列表,并根据策略进行负载均衡。 综上所述,"my...
4. 集群和负载均衡:理解如何配置JBoss集群以实现高可用性和负载均衡,使用如HA-JNDI和JGroups等技术。 5. 性能调优:掌握监控日志、JVM内存配置、线程池调整等技巧,优化服务器性能。 6. 热部署:了解如何启用热...
2. **负载均衡**:Spring Cloud LoadBalancer是一个基于Spring Cloud的客户端负载均衡解决方案,它为开发者提供了简单且强大的客户端负载均衡功能。 3. **熔断机制**:Spring Cloud Hystrix提供了一种熔断机制,通过...
2. **负载均衡**:Ribbon是SpringCloud内置的客户端负载均衡器,它与Eureka结合,可以在服务调用时动态选择目标服务实例,实现负载均衡。 3. **熔断机制**:Hystrix是Netflix提供的容错管理工具,它实现了断路器...
4. **客户端负载均衡**:Ribbon是Netflix提供的一个客户端负载均衡器,它与Eureka结合,可以在客户端进行服务的负载均衡选择,分发请求到不同的服务实例上。 此外,SpringBoot还支持Docker容器化部署,这使得微服务...
柳州市政府充分考虑到系统的安全性、稳定性、高效性以及良好的可扩展性,因此在系统方案设计中充分采用了中科红旗软件技术有限公司的多款服务器产品,包括了多功能服务器、数据库服务器、群集服务器(负载均衡)、高...
8. 配置Ribbon(客户端负载均衡器)和zuul,实现服务的负载均衡。 9. 最后,通过Docker和Kubernetes等容器技术,将应用部署到生产环境,实现动态扩缩容。 总之,"j2ee+springboot+springcloud+mybatis"的组合为现代...
- 负载均衡:Dubbo内置了多种负载均衡策略,如Random、RoundRobin、LeastActive等,用于优化服务请求的分布。 - 服务容错:Failsafe、Failsfast、Fallback、Retry、Mock等策略,帮助系统应对服务失败。 3. Spring...
Ribbon是一个内置的客户端负载均衡器,服务消费者可以在请求服务提供者时指定使用Ribbon进行负载均衡。Feign则是一个声明式的HTTP客户端,它可以自动使用Eureka查找服务,并结合Ribbon实现负载均衡。 8. **健康检查...
研究中将自适应粒子群蚁群算法与传统的粒子群蚁群算法、蚁群算法进行比较,结果表明,自适应粒子群蚁群优化算法在处理不同规模的数据集方面具有明显的优势,尤其在减少执行时间和实现负载均衡方面效果突出。...
3. **SpringCloud**:SpringCloud是基于Spring Boot实现的一套微服务解决方案,它提供了服务发现、配置中心、负载均衡、熔断器、API Gateway等一系列工具,帮助开发者快速构建分布式系统。Eureka用于服务注册与发现...