当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展,使用集群和负载均衡提高整个系统的处理能力。

而我们讨论的负载均衡一般分为两种,一种是基于DNS,另一种基于IP报文。

利用DNS实现负载均衡,就是在DNS服务器配置多个A记录,不同的DNS请求会解析到不同的IP地址。大型网站一般使用DNS作为第一级负载均衡。
缺点是DNS生效时间略长,扩展性差。

基于IP的负载均衡,早期比较有代表性并且被大量使用的的就是LVS了。原理是LVS在Linux内核态获取到IP报文后,根据特定的负载均衡算法将IP报文转发到整个集群的某台服务器中去。
缺点是LVS的性能依赖Linux内核的网络性能,但Linux内核的网络路径过长导致了大量开销,使得LVS单机性能较低。

那么有没有更好的负载均衡技术呢?当然有。
Google于2016年3月最新公布的负载均衡Maglev就在此列。

Maglev是谷歌为自己的数据中心研发的解决方案,并于2008开始用于生产环境。在第十三届网络系统设计与实现USENIX研讨会(NSDI ‘16)上, 来自谷歌、加州大学洛杉矶分校、SpaceX公司的工程师们分享了这一商用服务器负载均衡器Maglev的详细信息。Maglev安装后不需要预热5秒内就能应付每秒100万次请求令人惊叹不已。在谷歌的性能基准测试中,Maglev实例运行在一个8核CPU下,网络吞吐率上限为12M PPS(数据包每秒),如果Maglev使用Linux内核网络堆栈则速度会小于4M PPS。

无独有偶,国内云服务商 UCloud 进一步迭代了负载均衡产品——Vortex,成功地提升了单机性能。在技术实现上,UCloud Vortex与Google Maglev颇为相似。以一台普通性价比的x86 1U服务器为例,Vortex可以实现吞吐量达14M PPS(10G, 64字节线速),新建连接200k CPS以上,并发连接数达到3000万、10G线速的转发。

负载均衡有硬件和软件两种.
硬件层的比较牛逼,将4-7层负载均衡功能做到一个硬件里面,如F5,梭子鱼,据说yahoo中国!早些时候只用了两台F5做双活.
目前主流的软件负载均衡分为四层和七层
LVS属于四层负载均衡,工作在tcp/ip协议栈上,通过修改网络包的ip地址和端口来转发, 由于效率比七层高,一般放在架构的前端.
七层的负载均衡有nginx, haproxy, apache等, 工作在应用层,因此可以将HTTP请求等应用数据发送到具体的应用服务器,如将图片请求转发到特定的服务器上,总之可以做到更智能的负载均衡,这些功能在四层负载均衡上不好实现,一般放在架构的后面位置,布置在应用服务器前面.

《构建高性能Web站点》第12章 web负载均衡

《大型网站技术架构:核心原理与案例分析》 6.2 应用服务器集群的伸缩性设计

写的比较详细~

---------------------------------------------

下面的内容摘录自以上两书:

12.2 HTTP重定向

Web服务器可通过Http响应头信息中的Location标记来返回一个新的URL,浏览器自动去访问这个新的URL。

实现:可以通过Web应用程序代码实现你想到的调度策略,如可根据请求的URL的不同来进行合理的过滤和转移。

12.3 DNS负载均衡

DNS负责将用户请求的域名映射为实际的IP地址,这种映射可以是一对多的( DNS的A记录,用来指定域名对应的IP地址),这样DNS服务器便充当负载均衡调度器。

DNS节省了所谓的主站点,DNS服务器已经充当了主站点的职能。常见的策略是对多个A记录进行RR(轮询)

12.4 反向代理负载均衡

反向代理服务器的核心工作是转发HTTP,它工作在HTTP层面,因此,基于反向代理的负载均衡也称为七层负载均衡。

任何对于实际服务器的HTTP请求都必须经过调度器;调度器必须等待实际服务器的HTTP响应,并将它反馈给用户。

12.5 IP负载均衡

网络地址转换(NAT)负载均衡工作在传输层,对数据包中的IP地址和端口进行修改,从而达到转发的目的,称为四层负载均衡。

NAT服务器(前端服务器)必须作为实际服务器(后端服务器)的网关,否则数据包被转发后将一去不返。

12.6 直接路由

这种方式工作在数据链路层。它修改数据包的目标MAC地址,并没有修改目标IP(因为这种转发工作在数据链路层,它对上层端口无能为力),然后发给实际的服务器,实际服务器的响应数据直接发回给用户,而不用经过调度器。但实际服务器必须接入外网,而且不能将调度器作为默认网关,要给实际服务器添加和调度器IP地址相同的IP别名。

12.7 IP隧道

基于IP隧道的负载均衡系统也可以使用LVS来实现,称为LVS-TUN。与LVS-DR不同的是,实际服务器和调度器可以不在同一个WAN网段,调度器通过IP隧道技术来转发请求到实际服务器,所以实际服务器必须有合法的IP地址。

基于IP隧道的请求转发机制,是将调度器收到的IP数据包封装在一个新的IP数据包中,转交给实际服务器,然后实际服务器的响应数据包可以直接到达用户端。

基于IP隧道的独特方式,可以将实际服务器部署在不同的地域并根据就近原则转移请求,比如一些CDN服务器就是基于IP隧道技术实现的。

服务器集群负载均衡原理相关推荐

  1. 服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型

    服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型 下面是"黑夜路人"的<大型网站架构优化(PHP)与相关开源软件使用建议> =============== ...

  2. 常见的服务器集群负载均衡技术:二三四七层负载均衡,DNS、LVS、F5、nginx负载均衡

    服务器集群负载均衡技术 LB:load balance负载均衡器.有时也叫做director. DNS负载均衡 DNS负载均衡,最基础的是轮询方式,循环返回不同的服务器IP地址.可以同时返回多个服务器 ...

  3. 服务器集群负载均衡技术

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

  4. 服务器集群负载均衡(F5、Array、Nginx、LVS、HAProxy)区别以及选型

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  5. 全面讲述linux集群负载均衡

    学习linux时,你可能会遇到linux集群的问题,这里将介绍linux集群负载均衡的方法,经过仔细整理,在这里拿出来和大家分享一下,希望本文能教会你更多东西. 集群原理 linux集群系统包括集群节 ...

  6. 图文解说:Nginx+tomcat配置集群负载均衡

    图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用  作者:niumd Blog:http://ari.iteye ...

  7. Apache+Tomcat +mod_proxy集群负载均衡及session

      序言: 在玩Apache+Tomcat +mod_jk集群负载均衡及session的时候发现,还有一种方式可以实现,就是网上各位大牛们说的mod_proxy反向代理. 实在弄的我的知识细胞洋洋.实 ...

  8. 前后端分离 集群负载均衡 分布式 微服务

    一.前后端分离 1.为什么要前后端分离 在以前传统的网站开发中,前端一般扮演的只是切图的工作,只是简单地将UI设计师提供的原型图实现成静态的HTML页面,而具体的页面交互逻辑,比如与后台的数据交互工作 ...

  9. Niginx 集群负载均衡策略

    Niginx 集群负载均衡策略 所需物料 1.Nginx服务 步骤略 本人 nginx version: nginx/1.16.0 2.Java Servlet 测试项目 新建java web 项目, ...

最新文章

  1. 改变示波器TDS3054D图片颜色
  2. 使用 HTML5、CSS3 和 MathML 在 EPUB 3 中制作版式丰富的出版物
  3. 组播基本概念、IGMP、IGMP监听学习笔记
  4. C#程序只允许运行一个实例的解决方案
  5. js 和 query 获取页面和滚动条的高度
  6. Asp.net 调用mysql存储过程参数传中文乱码!
  7. sparkstreaming 读取mysql_SparkStreaming读取Kafka的两种方式
  8. 万字长文精华之数据中台构建五步法
  9. 用python自动化玩游戏封号吗_用 Python 自动化办公能做到哪些有趣或有用的事情?...
  10. 最強御主人様!-Mighty My Master-全年龄汉化补丁(第二版修正)
  11. C#語法學習二(NameSpace)
  12. 带你十分钟了解BFC(渡一教育笔记)
  13. 厦门大学847信号与系统考研参考书目
  14. 中国射频前端产业现状分析
  15. 数字信号处理思维导图
  16. wifi信道12为啥没人用_关于WIFI信道的问题?
  17. 计算机控制手机源码,Total Control电脑控制手机助手
  18. 移动端产品设计(02)-移动APP产品结构
  19. python搭建微信小程序卖货要收费用吗_开发一个微信小程序需要多少钱?
  20. 贼有趣:朱茵变杨幂,人工智能换脸让明星不再担心自己演技?

热门文章

  1. 蔷薇框架软件_蔷薇花园软件下载-蔷薇花园app下载v1.55 安卓版-2265安卓网
  2. 场效应管的输出特性曲线及转移特性曲线记忆
  3. 高频滤波电容的容量选择?
  4. 2022-2028年中国陕西水果行业市场现状分析及未来前景规划报告
  5. arcgis 出图背景_急速出图工作流第二弹丨试试用水彩风拯救你的Deadline~
  6. 用户和计算机通信的界面设计,数据分析系统的交互界面设计
  7. 安卓APP跳转百度、高德、腾讯地图
  8. 金三银四丨黑蛋老师带你剖析-CTF岗
  9. urovo手持终重启_Urovo:PDA手持机的硬件优势
  10. 字段太长,无法录入数据库