负载均衡方案总结

负载均衡方案总结

所有的例子都通过访问www.ctrip.com为例。这里只讲方案,具体的NGIX、LVS、HAPROXY怎么工作的等以后细看了再总结。

HTTP重定向负载均衡

用户通过域名解析, 得到IP地址114.100.80.100,访问这台服务器,这台机器收到请求之后,因为它是知道服务器集群里的IP的, 然后返回一个重定向到114.100.80.1的请求给用户的浏览器,然后浏览器再访问114.100.80.1。

这个方案致命的缺点就是经过了两次请求,因为建立HTTP连接的请求的代价是很大的,所以现在采用这种方案的很少。

DNS域名解析负载均衡

用户在访问www.ctrip.com的时候,在运营商的域名解析服务器里会对应多个IP。然后用户在访问的时候,只需要直接访问某一个IP就可以了。

这种方案看起来很不错,没有多次请求,跟没有集群,访问当个应用服务器的效果是一样的。

但是这个方案如果单独使用的话,肯定是不行的,因为更新域名解析服务器里的IP和域名的对应关系,是有延迟的。比如某台机器挂掉了或者需要发布,要被拉出集群,但是如果用这种方案,用户还是会访问到这个IP,这肯定是不行的。

反向代理负载均衡

这种方案的典型代表就是Ngix,将用户的请求在内网里做一次转发。而Ngix是工作在应用层的,是一个第七层的协议。需要将包解析,然后转发给web服务器。因此同样的访问量的情况下,方向代理的吞吐量是远不如IP负载均衡的。

IP 负载均衡

相对于反向代理负载均衡,IP负载均衡直接作用于TCP/IP层,工作在第四层。

用户请求来了之后,修改请求报文头里的目的地址,然后转发给服务器集群,不再做一次解包封包的过程。典型的方案是Linux里的LVS模块,中国人写的哦,相信大家应该都听说过他的名字——章文嵩。现在貌似已经是淘宝的副总了。

这种方案看起来已经很不错了,但是其缺点是负载均衡的带宽问题。每次服务器返回都会经过IP负载均衡服务器。如果一个页面有2M的大小,这样的方案其实扛不住多少并发。

数据链路层负载均衡

那么最后,终极方案来了:数据链路层负载均衡。

这个方案,在第2层,这种数据传输方式又称为三角传输,负载均衡数据分发过程中不修改IP地址,只修改目的MAC地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的目的,由于实际处理请求的真实物理服务器IP和数据请求目的IP一致,不需要通过负载均衡服务器进行地址交换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。这种负载均衡方式又称之为直接路由方式(DR).这个一般由交换机或者路由器来完成。

总结下最佳方案,也是现在使用比较广泛的方案:DNS负载均衡+数据链路层负载均衡

负载均衡的算法

轮询

加权轮询

随机

最简单,最实用,也是用的最多的算法

最少链接

源地址散列

就是根据用户的IP地址,做一次hash然后算到某个IP。这个的好处就是同一个用户每次都能算到同一个IP。但是,虽然能够实现会话粘滞,我觉得却并没有什么卵用,比如发布的时候,总是算到这台机器,那就悲剧了。所以一般不会用这种算法。

时间: 2024-10-02 04:47:33

负载均衡方案总结的相关文章

Nginx的负载均衡方案详解

Nginx的负载均衡方案详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Nginx的负载均衡方案有: 1.轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器. 配置的例子如下: http{ upstream sampleapp { server <<dns entry or IP Address(optional with port)>>; server <&l

Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效果,可以说还是非常的理想的.同时我们也收集到了不少的问题,比如说如何在这种分布式的架构下使用Session,NLB中有一台服务器挂掉了会导致对外暴露的地址无法访问,如果实现服务器之间的同步,如果更好的进行热修复等等,还有我们在上一篇中也提到了NLB所提供的功能是非常简单的,为了回答我们前面提到的问题

邮件系统负载均衡方案

负载均衡是集群部署中的一种,通过多个节点来承担邮件服务的工作,每个获取Web页面的新请求都被动态路由到一个负载较低的节点上.即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求,适用于大容量用户使用. 集群技术解析 集群(Cluster)技术是指一组相互独立的计算机,利用高速通信网络组成一个计算机系统,每个群集节点(即集群中的每台计算机)都是运行其自己进程的一个独立服务器.这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协

(转)简易WCF负载均衡方案

最近跟高老师讨论nginx跟tomcat集群做负载均衡方案.感觉很有意思.想到自己项目中服务用的WCF技术,于是就想WCF如何做负载均衡,Google了一会,发现wcf4.0的路由服务好像可以实现.不过在研究路由服务期间,我有了个自己的方案,哈哈. 我要在客户端跟WCF服务中间部署一台WCF平衡服务器,用来分发请求,模拟nginx的工作. WCF平衡服务器我同样用WCF来实现,所有服务接口全部通过平衡服务区暴露给客户端.对于客户端来说,只要跟正常调用服务一样,添加平衡器的远程服务引用. 实现:

asp.net负载均衡方案[转]

在前面的几篇文章中,主要谈到了在Discuz!NT中的跨站缓存数据,数据库负载均衡.但如果要实现将产品分布式布置到若干机器,组成集群来共同支撑起整个业务的话,还是有一定问题的(后面会有所介绍).下面先介绍一下如何使用 Discuz!NT负载均衡方案搭建分布式应用. Discuz!NT前端负载均衡可以是nginx,lvs,haproxy等,当然配置最简单的基于nginx实现的,下面是它的一些简介:           Nginx("engine x")是俄罗斯人编写的十分轻量级的HTTP

负载均衡方案对比表

在选择使用何种负载均衡方案的时候,除了考虑工程师本身的熟练程度外,也要理解技术的原理,透过本质才能更好的看问题,下图参考<Linux运维最佳实践>:

大数据时代下的SQL Server第三方负载均衡方案----Moebius测试

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius(Install) Moebius测试(Testing) 负载均衡测试(Load Balancing Testing) 高可用性测试(Failover Testing) 数据安全性测试(Security Testing) 总结(Summary) 二.背景(Contexts) 前几天在SQL Serve

负载均衡方案(摘抄)

1.负载均衡之DNS域名解析 DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网.人们在通过浏览器访问网站时只需要记住网站的域名即可,而不需要记住那些不太容易理解的IP地址.在DNS系统中有一个比较重要的的资源类型叫做主机记录也称为A记录,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上.如果你有一个自己的域名,那么要想别人能访问到你的网站,你需要到特定的DNS解析服务商的服务器上

asp.net如何实现负载均衡方案讨论

我的目标是我一个人搭建一个负载均衡网站.不接受这是网络部,或者运维,或者系统部的事情,所有事情都是我一个人来完成,包括掏钱,包括将来发展等等,同时也别告诉我有没有意义,just do  it !给我方案,给我方法. 拥有资源:不够可以买,多了可以先闲着. 现在我已经买了5台阿里云服务器,ip地址分别为 ip地址                      名字简称      操作系统       iis服务器     cpu   内存DDR3      机械硬盘 111.13.101.204