千万级负载均衡架构设计

负载均衡 (Load Balancing) 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

大型网站负载均衡的利器

  • 全局负载均衡系统(GSLB)
  • 内容缓存系统(CDN)
  • 服务器负载均衡系统(SLB)

DNS域名解析的基本过程

最初的负载均衡解决方案(DNS轮询)

优点

  • 基本上无成本,因为往往域名注册商的这种解析都是免费的;
  • 部署方便,除了网络拓扑的简单扩增,新增的Web服务器只要增加一个公网IP即可

缺点

  • 健康检查,如果某台服务器宕机,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器。修改DNS记录全部生效起码要3-4小时,甚至更久;
  • 分配不均,如果几台Web服务器之间的配置不同,能够承受的压力也就不同,但是DNS解析分配的访问却是均匀分配的。用户群的分配不均衡导致DNS解析的不均衡。
  • 会话保持,如果是需要身份验证的网站,在不修改软件构架的情况下,这点是比较致命的,因为DNS解析无法将验证用户的访问持久分配到同一服务器。虽然有一定的本地DNS缓存,但是很难保证在用户访问期间,本地DNS不过期,而重新查询服务器并指向新的服务器,那么原服务器保存的用户信息是无法被带到新服务器的,而且可能要求被重新认证身份,来回切换时间长了各台服务器都保存有用户不同的信息,对服务器资源也是一种浪费。

全局负载均衡系统(GSLB)

优势

  • 数据中心冗余备份
  • 多站点流量优化
  • 确保用户体验

全局负载均衡系统(GSLB)的原理

 

 

DNS检查工具网上有很多,感兴趣的可以搜索一下。

内容缓存系统(CDN)

  • 内容缓存系统(CDN)之静态加速
  • 内容缓存系统(CDN)之动态加速

动态加速的特点

  • 智能路由
  • 传输控制协议(TCP)优化
  • HTTP预载

 

服务器负载均衡系统

应用背景

  • 访问流量快速增长
  • 业务量不断提高

用户需求

  • 希望获得7×24的不间断可用性及较快的系统反应时间

负载均衡必须满足性能、扩展、可靠性 

服务器负载均衡系统三种接入方式

部署方式

特点

优点

缺点

串联路由模式

比较常见的部署方式

  • 负载均衡设备将服务器有效隔离,安全考虑上最好
  • 服务器网关指向负载均衡设备,   功能实现更简单,有利于最大化负载均衡性能
  • 服务器可以直接接收到真实访问源客户IP地址
  • 对现有拓扑结构变动较大
  • 需要考虑内网服务器是否有对外访问需求,必要时需要设置静态NAT转换

单臂模式

最常见的部署方式

  • 部署方便,对现有拓扑结构变动小
  • 和应用无关的流量不会通过负载均衡设备
  • 内部应用无影响,外部应用通常需要前端防火墙做NAT映射到应用VIP
  • 服务器不能直接接收访问客户源地址,需要对应用做修改后才可以通过其他方式获得真实访问地址

DSR

服务器回程报文不通过负载均衡设备,直接返回给客户端; 

延迟短,适合流媒体等对延时要求较高应用

  • 性能高,可处理吞吐量高
  • 服务器可以直接接收到真实访问源客户IP地址
  • 只能做4层的负载均衡,基于7层的服务无法实现优化(例如压缩等)无法使用
  • 需要在服务器上配置loopback地址

 

服务器负载均衡系统的常见调度算法

  • 轮询(Round Robin)
  • 加权轮询(Weighted Round Robin)
  • 最少连接(Least Connections)
  • 加权最少连接(Weighted Least Connections)

健康性检查

健康性检查算法的目的:通过某种探针机制,检查服务器群中真实服务器的健康情况,避免把客户端的请求分发给出现故障的服务器,以提高业务的HA能力。

目前常用的健康性检查算法:

  • Ping(ICMP)
  • TCP
  • HTTP
  • FTP

系统加速

优化功能-SSL加速

优化功能-HTTP压缩

 HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。F5 HTTP压缩技术通过具有智能压缩能力的 BIG-IP 系统可缩短应用交付时间并优化带宽。HTTP压缩采用通用的压缩算法压缩HTML、JavaScript或CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。

 

优化功能-连接复用

优化功能-TCP缓存

 

会话保持

会话保持-客户端源IP会话保持

源IP地址会话保持就是将同一个源IP地址的连接或者请求认为是同一个用户,根据会话保持策略,在会话保持有效期内,将这些发自同一个源IP地址的连接/请求都转发到同一台服务器。

会话保持-Cookie会话保持

当采用基于源地址的会话保持无法做到负载均分时,例如客户端发起连接请求的源IP地址相对固定,发生此类问题通常可采用基于应用层的会话保持方式,Cookie通常是存在于HTTP头中,现如今基于HTTP的应用被广泛使用,因此基于Cookie的会话保持越来越多的出现在服务器负载均衡解决方案中。 

局限性:

  对于非HTTP协议,或者客户端禁用Cookie,无效。

会话保持-URL哈希(Hash)会话保持

哈希会话保持的一个基本概念就是按照某个Hash因子,根据此因子以及后台存在多少台服务器计算得到的结果来选择将请求分配到那台服务器。哈希会话保持的特点是在后台服务器的健康状态不发生改变的时候,每个特定的Hash因子被分配到的服务器是固定的。其最大的优势是哈希会话保持可以没有会话保持表,而仅仅是根据计算的结果来确定被分配到那台服务器,尤其在一些会话保持表查询的开销已经远远大于Hash计算开销的情况下,采用Hash会话保持可以提高系统的处理能力和响应速度。

 URL哈希会话保持通常针对后台采用Cache服务器的应用场景,针对URL进行Hash计算,将同一个URL的请求分配到同一台Cache服务器,这样,对后台的Cache服务器群来说,每台Cache服务器上存放的内容都是不一样的,提高Cache服务器的利用率。

 

故障案例分析

Q&A案例分析(1)-循环跳转

故障现象:

  Web服务端对用户访问的URL进行判断,对于非https的请求,重定向到http站点,结果导致用户一直302跳转。

原因分析:

  采用了负载均衡SSL加速功能,在服务端看到所有的用户请求都来自于http。

解决方案:

  全站启用SSL加速。

Q&A案例分析(2)-用户Session丢失

故障现象:

  用户在http站点上提交数据到同域名的https站点,web程序抛出session丢失的异常,用户提交数据失败。

原因分析:

  http和https在负载均衡设备上被认为是2个独立的服务,产生2个独立的TCP链接,会命中不同的真实服务器,导致session丢失。

解决方案:

  在负载均衡设备上启用基于真实服务器的会话保持。

Q&A案例分析(3)-客户端源IP取不到

故障现象:

  服务端获取不到用户外网的IP地址,看到的都是大量来自于内网特定网段的IP地址。

原因分析:

  负载均衡设备启用了用户源地址转换(SNAT)模式,修改了TCP报文中的用户源IP。

解决方案:

   负载均衡设备会用用户的外网IP改写x-forwarded-for值,服务端通过获取http协议中request header头的x-forwarded-for值作为用户源IP。IIS日志通过安装插件形式显示用户源IP。

服务器负载均衡设备选型

1.价格因素
    硬件设备:F5、 Citrix 、Redware 、A10
    软件:LVS、Nginx、Haproxy、zen loadbalance
2.性能
    4/7层吞吐量(单位bps)
    4/7层新建连接数(单位CPS)
    并发连接数
    功能模块性能指标(ssl加速、 HTTP压缩、内存Cache)
3.满足真实和未来需求
     1)如果确认负载均衡设备对所有应用的处理都是最简单的4层处理,那么理论上选择的负载均衡设备的4层性能稍高于实际性能需求即可。
     2)如果确认负载均衡设备对所有应用的处理都是简单的7层处理,那么理论上选择的负载均衡设备的7层性能稍高于实际性能需求即可。
     3)如果负载均衡设备处理的应用既有4层的也有7层的,建议按照7层应用的性能来考虑负载均衡设备。
     4)如果确认自己的应用经过负载均衡处理时,需要复杂的4层或者7层处理,例如需要根据客户端的地址做策略性分发,需要根据tcp的内容做处理,需要根据HTTP头或者HTTP报文做处理,那么建议选择的负载均衡设备4/7层性能为真实性能需求的两倍。
     5)如果负载均衡设备有混合的复杂流量处理并且还开启了一些功能模块,那么建议选择的负载均衡设备4/7层性能为真实性能需求的3倍。
     6)考虑到设备需要轻载运行才能更加稳定,所以有可能的话在以上基础上再增加30%的性能。
     7)如果还要满足未来几年的发展需求,在以上基础上还要留出未来发展所需要增加的性能。
     8)不同负载均衡设备厂家由于不同的架构,使得某些设备在复杂环境下可能也表现的比较优秀,这个客户可以对比判断,但总体来说,以上建议适合于所有厂家的设备。

转载于:https://www.cnblogs.com/wd0730/p/3374524.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科学为什么重要?马化腾公开信引热议,透露企业未来发展方向

来源:世界科技创新论坛摘要:美国强大的源泉,不是因为它有原子弹,航空母舰,隐性飞机,或者芯片,而在于它牢牢地掌握着基础科学的最前沿。科学一点都马虎不得,没有捷径可走,…

Bloom-Filter算法 简介

Bloom-Filter算法 其实可以看作 bit-map 的一种扩展。 它把已存在的元素通过多个hash 函数映射到一个 bit 序列,对于每一个元素根据hash函数的结果把相应的 位置置一(这个bit序列通常很长,但是比起记住所有元素它占用的空间是小的&#xff09…

吴恩达斯坦福大学机器学习 CS229 课程学习笔记(二)

终于要开始正式的学习了。看了第一节课最大的印象是Ng老师的优雅,儒雅,偏英式的发音(突然意识到他从小在伦敦长大)。配着字幕看的视频,但还是希望能锻炼一下自己的听力,也只有在自己看过一遍印象才深刻&…

当自动驾驶汽车撞过来的时候,你希望它如何判断?

来源:网易智能 摘要:据报道,当无人驾驶汽车在繁忙的街道上发生碰撞的时候,它该优先避免让谁受伤呢?它该杀死谁,而不杀死谁呢?麻省理工学院的一项研究表明,你的回答将取决于你来自哪里…

细数黑客攻击的七大战术

不计其数的黑客们游荡在因特网中来欺骗那些容易上当的用户。它们多年使用着重复的攻击手段,毫无创新地利用着我们懒惰、误判和一些犯二的行为。 不过每年,恶意软件研究人员总会遇到一些引人侧目的攻击手段。这些攻击手段在不断拓展恶意攻击的范围。新的攻…

人工智能黑暗面

来源:大数据文摘编译:DonFJ、蒋宝尚机器学习是现在大家都打了鸡血想用或者在用的技术。但是,你以为只有好人能用它吗?Too young too simple!接下来,我将揭秘AI技术黑暗的一面——犯罪份子和人工智能的孽缘。…

认识蚁群算法

好像是看罗胖的罗辑思维,看到过一种说法,越是准入门槛高的,难以取代的行业,所需的工具是越简单的。摄影师需要昂贵的镜头,而画家却只需要简单的纸笔,尽管照片比画逼真得多,但是却无法取代绘画的…

postgresql数据类型转换

PostgreSQL数据类型转换需要使用语法 alter table tbname alter column fieldname type date_type 遇到需要转换为特殊类型如DATE、BOOL需要使用using子句 --转换为date类型 alter table tbname alter column fieldname type date using cast(fieldname as date)--转换为bool类…

薛定谔的猫跳进了生物学界,化学家表示:没有我可能办不到

来源:原理摘要:在生物科学界流传着“物理学家累了就来生物界玩一玩”的调侃。确实,现今学科之间密不可分,生物学的发展对特定物理技术的需求也越大。但是这样化学家却不满意了?1943年,物理学家薛定谔在都柏…

图像配准之特征点匹配的思考

最近赶时髦,看了一些智能优化算法如蚁群算法,还有机器学习的一些东西,就想着怎么把这些先进的东西用在图像配准中。头脑风暴了一下,觉得在已经检测到两幅图像的特征点的基础上,就如何对它们进行匹配似乎有优化的空间。…

软件工程实践小队Scrum Meeting

Scrum Meeting转载于:https://www.cnblogs.com/hjk-buaa/p/3382259.html

指针%p输出的一些认识

还是看源码发现的问题 static int import_lowe_features( char*filename, struct feature** features ) 这个函数的作用是将txt文件中的Lowe的特征点导入到feature结构体中。在这个函数中第二个参数是指向结构体的指针的指针。 f calloc( n, sizeof(struct feature) );//在内存…

全球智慧医疗产业发展现状

来源:无锡情报所摘要:全球智慧医疗市场主要集中在美国、欧洲、日本和中国,而产品生产主要集中在美国、欧洲和日本。 随着大数据、云计算、物联网和人工智能技术快速发展和普及,运用互联网应用平台提升医疗资源的使用效率、提高救治和服务水平…

textbox回车事件中拿不到text的处理办法(wpf)

wpf做一个搜索框&#xff0c;想要在回车时搜索框内的文字。 <TextBox x:Name"SearchBox" Grid.Column"1" Margin"350,35,52,21" Width"122" Height"34" RenderTransformOrigin"0.5,0.5" Text"{Binding K…

2018AI和机器学习界的12个重大收购案

来源&#xff1a;网络大数据据IDC声称&#xff0c;到2018年&#xff0c;全球人工智能(AI)和认知系统支出将达到190亿美元&#xff0c;这比2017年的支出总额增加约54%。并购在不断发生。仅2017年就见证了几起大宗收购&#xff0c;比如雅虎被Verizon收购、苹果收购Shazam等。知名…

PCA对特征点描述子降维

降维在机器学习领域其实是很重要的一部分&#xff0c;因为在高维情形下回出现样本稀疏&#xff0c;计算距离、内积困难&#xff0c;是所有机器学习面临的共同问题&#xff0c;被称为维数灾难&#xff08;Curse of dimensionality&#xff09;&#xff0c;而降维就是解决的一个办…

java快速获取大图片的分辨率(大图片格式JPG,tiff ,eg)

问题描述&#xff1a;怎样快速获取一个20MB图片的分辨率&#xff1f; 程序代码&#xff1a; 1 package test;2 3 import java.awt.Dimension;4 import java.awt.image.BufferedImage;5 import java.io.File;6 import java.io.IOException;7 import java.util.Iterator;8 import…

C语言基础知识整理

一、 关于sizeof和strlen。Sizeof&#xff08;&#xff09;用于计算某类型或者某变量在内存中所占空间。比如整数分为short型&#xff0c;int型&#xff0c;long整型&#xff0c;分别占2,2/4,4个字节&#xff0c;int型具体占用几个字节和编译系统有关。我们输入字符串时通常用c…

【2017-2019】Gartner战略技术趋势一览

来源&#xff1a;学术plus 、装备参考近期&#xff0c;Gartner公布了2019年十大战略技术趋势的预测&#xff0c;值此之际&#xff0c;本文总结回顾并简要分析了2017-2019三年的战略趋势变化。Gartner副总裁兼研究员David Cearley指出&#xff1a;在智能、数字、网格三大领域下的…

[wikioi]多源最短路

http://wikioi.com/problem/1077/ Floyd算法。精华是三层循环&#xff0c;if (dist(i,k) dist(k,j) < dist(i,j)) then dist(i,j) dist(i,k) dist(k,j)。 但循环的顺序必须k放在最外层&#xff0c;否则会错&#xff0c;因为有可能赋值给dist(i,j)的dist(i,k)和dist(k,j)都…