大型网站--负载均衡架构

news/2024/5/19 10:54:37/文章来源:https://blog.csdn.net/Y0Q2T57s/article/details/81880040

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

大型网站负载均衡的利器

  1. 全局负载均衡系统(GSLB)

  2. 内容缓存系统(CDN)

  3. 服务器负载均衡系统(SLB)

DNS域名解析的基本过程

640?wx_fmt=jpeg

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

640?wx_fmt=png

优点

  • 基本上无成本,因为往往域名注册商的这种解析都是免费的;

  • 部署方便,除了网络拓扑的简单扩增,新增的Web服务器只要增加一个公网IP即可。

缺点

  • 健康检查,如果某台服务器宕机,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器。修改DNS记录全部生效起码要3-4小时,甚至更久;

  • 分配不均,如果几台Web服务器之间的配置不同,能够承受的压力也就不同,但是DNS解析分配的访问却是均匀分配的。用户群的分配不均衡导致DNS解析的不均衡。

  • 会话保持,如果是需要身份验证的网站,在不修改软件构架的情况下,这点是比较致命的,因为DNS解析无法将验证用户的访问持久分配到同一服务器。虽然有一定的本地DNS缓存,但是很难保证在用户访问期间,本地DNS不过期,而重新查询服务器并指向新的服务器,那么原服务器保存的用户信息是无法被带到新服务器的,而且可能要求被重新认证身份,来回切换时间长了各台服务器都保存有用户不同的信息,对服务器资源也是一种浪费。

全局负载均衡系统(GSLB)

640?wx_fmt=jpeg

优势

  • 数据中心冗余备份

  • 多站点流量优化

  • 确保用户体验


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

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

内容缓存系统(CDN)

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

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

动态加速的特点

  • 智能路由

  • 传输控制协议(TCP)优化

  • HTTP预载

 

服务器负载均衡系统

应用背景

  • 访问流量快速增长

  • 业务量不断提高

用户需求

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

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

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

640?wx_fmt=jpeg

 

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

  1. 轮询(Round Robin)

  2. 加权轮询(Weighted Round Robin)

  3. 最少连接(Least Connections)

  4. 加权最少连接(Weighted Least Connections)

健康性检查

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

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

  1. Ping(ICMP)

  2. TCP

  3. HTTP

  4. FTP

系统加速

优化功能-SSL加速

640?wx_fmt=jpeg

优化功能-HTTP压缩

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

 

优化功能-连接复用

640?wx_fmt=jpeg

优化功能-TCP缓存

 640?wx_fmt=jpeg

会话保持

会话保持-客户端源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)不同负载均衡设备厂家由于不同的架构,使得某些设备在复杂环境下可能也表现的比较优秀,这个客户可以对比判断,但总体来说,以上建议适合于所有厂家的设备。


u1F4AA.0.png扩展阅读

做一个完整的Java Web项目需要掌握的技能

干货 | 京东购物车的 Java 架构实现及原理!


来源:https://www.cnblogs.com/and/p/3366400.html

版权声明:文章来源网络,版权归作者本人所有,如侵犯到原作者权益,请与我们联系删除或授权事宜

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

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

相关文章

织梦index.php被黑,织梦网站被黑的解决流程

织梦网站安全问题一直以来都是令人堪忧的,不过毕竟是开源程序,可以理解。这不最近有一位同学的站点就“中招”了,下面阿南就把处理的流程记录下来,希望对站长们有帮助。首先打开站点首页,我们可以看到,标题…

划重点!必备 SQL 查询优化技巧,提升网站访问速度

来自:开源中国 协作翻译链接:oschina.net/translate/sql-query-optimization原文:https://deliciousbrains.com/sql-query-optimization/译者:南宫冰郁, rever4433, soaring, 凉凉_, Tony, 无若在这篇文章中,我将介绍如…

AcFun网站已无法打开:官微表达无奈

IT之家2月2日消息 目前著名的弹幕网站AcFun中的视频已经无法播放,同时经过多地网友测试,AcFun的网站也已经无法打开,官微也发表微博,似乎表达对于网站无法打开的无奈。经过IT之家的测试,目前AcFun网站已经无法打开&…

大型网站限流算法的实现和改造

最近写了一个限流的插件,所以避免不了的接触到了一些限流算法。本篇文章就来分析一下这几种常见的限流算法分析之前依我个人的理解来说限流的话应该灵活到可以针对每一个接口来做。比如说一个类里面有5个接口,那么我的限流插件就应该能针对每一个接口就行…

高级Java开发人员最常访问的几个网站

这是高级Java开发人员最常访问的几个网站。 这些网站提供新闻,一般问题或面试问题的答案,精彩的讲座等。质量是优秀网站的关键因素,这此网站都有较高的质量内容。下面逐一介绍:1. StackoverflowStackoverflow.com可能是编程世界中…

高级Java开发人员最常访问的几个网站

这是高级Java开发人员最常访问的几个网站。 这些网站提供新闻,一般问题或面试问题的答案,精彩的讲座等。质量是优秀网站的关键因素,这此网站都有较高的质量内容。下面逐一介绍:1. StackoverflowStackoverflow.com可能是编程世界中…

大型网站系统架构的演化

四、使用集群改善应用服务器性能应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。常用的负载均衡技术硬件…

JavaWeb之ServletContext——统计用户访问网站次数

各位小伙伴大家好呀~今天我们来了解 ServletContext 对象ServletContext 对象1)什么是 ServletContext 对象ServletContext 代表是一个 web 应用的环境(上下文)对象,ServletContext对象内部封装是该 web 应用的信息,一个 web 应用…

一个大型网站的技术架构是怎样建成的

网站系统架构层次如下图所示:1.前端架构前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。浏览器优化技术并不是优化浏览器,而是通过优化响应页面,加快浏览器页面的加载和显示…

大型网站技术架构(二):架构要素和高性能架构

作者 | Arno原文 | https://segmentfault.com/a/1190000007390358在《大型网站技术架构(一)》我们把整个架构演变过程大致说了一下,这次我们来说说从哪方面进行考虑设计。为了使网站的能够应对高并发访问,海量数据处理&#xff0c…

网站高并发大流量访问的处理及解决方案

来自:Hist_花透的博客https://blog.csdn.net/qishouzhang/article/details/471119451.硬件升级普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则…

网站 HTTP 升级 HTTPS 完全配置手册

作者:葡萄城技术团队链接:https://my.oschina.net/powertoolsteam/blog/1862967今天,所有使用Google Chrome稳定版的用户迎来了v68正式版首个版本的发布,详细版本号为v68.0.3440.75,上一个正式版v67.0.3396.99发布于6月…

ubuntu怎么跳出系统自动进去_wordpress、Dedecms织梦等网站系统怎么做百度自动推送?...

主动向百度等搜索引擎可缩短爬虫发现网站链接时间,加快网站的收录速度。网站时效性内容建议使用链接提交工具,实时向搜索推送数据。那么wordpress、Dedecms织梦等网站系统怎么做百度自动推送呢?有开发能力的对于动开发的人来说,要…

利用 PHP 扩展 Taint 找出网站的潜在安全漏洞实践

一、背景笔者从接触计算机后就对网络安全一直比较感兴趣,在做PHP开发后对WEB安全一直比较关注,2016时无意中发现Taint这个扩展,体验之后发现确实好用;不过当时在查询相关资料时候发现关注此扩展的人数并不多;最近因为换…

网站mysql密码怎么修改_mysql怎么修改密码

第一种方式:最简单的方法就是借助第三方工具Navicat for MySQL或Navicat Premium来修改,方法如下:1、登录mysql到指定库,如:登录到student库。2、然后点击上方“用户”按钮。3、选择要更改的用户名,然后点击…

百度网站疑似宕机 众多网友反馈不能正常登陆

从11月9日上午11点10分开始,有不少网友开始网上抱怨,百度网站及其旗下App都打不开的消息,而从用户的反馈来看,范围还是挺大的。目前,不少网友在微博上反馈称,百度网站似乎出现了宕机,很多用户不…

8个程序员专用软件/网站,个个是神器,第一个最惊喜......

节省时间的方法有俩,一个是放弃做一些事,在做一些事的时候同步做另一些事。另一种就是改进做一些事的效率,更快地做一些事。寻找更加高效、好用的工具所花费的时间,和这些工具将为你节省的时间相比,九牛一毛。今天给大…

大型网站图片服务器架构的演进!

在主流的Web站点中,图片往往是不可或缺的页面元素,尤其在大型网站中,几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中,也会历经很多曲折甚至是血泪教训,尤其是早期规划不足&am…

Kali 利用setoolkit制作钓鱼网站

实验环境:一台kali(为机 NAT模式) 一台物理机(靶机) 在kali的终端上打开setoolkit 选择第一个社会工程,选择社会工程之后接着有11个选项. 选择第二个网站向量,选择完之后有8个选项. 选择第三个凭证收割方…

使用nginx部署网站

前面的话如果服务器只需要放置一个网站程序,解析网站到服务器的网站,网站程序监听80端口就可以了。如果服务器有很多应用,借助nginx不仅可以实现端口的代理,还可以实现负载均衡。本文将详细介绍前端及nodeJS项目在服务器配置时需要…