负载均衡(Load Balance)是集群技术(Cluster)的一种应用。负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力。
目前最常见的负载均衡应用是Web负载均衡。根据实现的原理不同,常见的web负载均衡技术包括:DNS轮询、IP负载均衡和CDN。其中IP负载均衡可以使用硬件设备或软件方式来实现。

一、什么是web负载均衡

服务器集群(Cluster)使得多个服务器节点能够协同工作,根据目的的不同,服务器集群可以分为:

高性能集群:将单个重负载的请求分散到多个节点进行处理,最后再将处理结果进行汇总
高可用集群:提高冗余单元,避免单点故障
负载均衡集群:将大量的并发请求分担到多个处理节点。由于单个处理节点的故障不影响整个服务,负载均衡集群同时也实现了高可用性。
一般提到的负载均衡(Load Balance),是指实现负载均衡集群。负载均衡实现了横向扩展(Scale Out),避免纵向的升级(Scale Up)换代。

本文中的web负载均衡,特指能够分担web请求(http,https等)的负载均衡技术。

1、基本原理

任何的负载均衡技术都要想办法建立某种一对多的映射机制:一个请求的入口映射到多个处理请求的节点,从而实现分而治之(Divide and Conquer)。

这种映射机制使得多个物理存在对外体现为一个虚拟的整体,对服务的请求者屏蔽了内部的结构。

二、负载均衡技术

DNS轮询、CDN、IP负载均衡

DNS

DNS轮询是最简单的负载均衡方式。以域名作为访问入口,通过配置多条DNS A记录使得请求可以分配到不同的服务器。

DNS轮询没有快速的健康检查机制,而且只支持WRR的调度策略导致负载很难“均衡”,通常用于要求不高的场景。并且DNS轮询方式直接将服务器的真实地址暴露给用户,不利于服务器安全。

CDN
CDN(Content Delivery Network,内容分发网络)。通过发布机制将内容同步到大量的缓存节点,并在DNS服务器上进行扩展,找到里用户最近的缓存节点作为服务提供节点。

因为很难自建大量的缓存节点,所以通常使用CDN运营商的服务。目前国内的服务商很少,而且按流量计费,价格也比较昂贵。

IP负载均衡

IP负载均衡是基于特定的TCP/IP技术实现的负载均衡。比如NAT、DR、Turning等。是最经常使用的方式。

IP负载均衡可以使用硬件设备,也可以使用软件实现。硬件设备的主要产品是F5-BIG-IP-GTM(简称F5),软件产品主要有LVS、HAProxy、NginX。其中LVS、HAProxy可以工作在4-7层,NginX工作在7层。

1、软硬件负载均衡设备的优缺点:
硬件负载均衡设备可以将核心部分做成芯片,性能和稳定性更好,而且商用产品的可管理性、文档和服务都比较好。唯一的问题就是价格。

软件负载均衡通常是开源软件。自由度较高,但学习成本和管理成本会比较大。

2、 常见的软件、硬件负载均衡
nginx和f5的区别

nginx —软件负载均衡

见nginx和f5的区别的nginx篇
F5 —硬件负载均衡

F5的全称是F5-BIG-IP-GTM,是最流行的硬件负载均衡设备,其并发能力达到百万级。F5的主要特性包括:

1)多链路的负载均衡和冗余

可以接入多条ISP链路,在链路之间实现负载均衡和高可用。

2)防火墙负载均衡

F5具有异构防火墙的负载均衡与故障自动排除能力。

3)服务器负载均衡

这是F5最主要的功能,F5可以配置针对所有的对外提供服务的服务器配置Virtual Server实现负载均衡、健康检查、回话保持等。

4)高可用

F5设备自身的冗余设计能够保证99.999%的正常运行时间,双机F5的故障切换时间为毫秒级。

使用F5可以配置整个集群的链路冗余和服务器冗余,提高可靠的健康检查机制,以保证高可用。

5)安全性

与防火墙类似,F5采用缺省拒绝策略,可以为任何站点增加额外的安全保护,防御普通网络攻击,包括DDoS、IP欺骗、SYN攻击、teartop和land攻击、ICMP攻击等。

6)易于管理

F5提供HTTPS、SSH、Telnet、SNMP等多种管理方式,包含详尽的实时报告和历史纪录报告。同时还提供二次开发包(i-Control)。

7)其他

F5还提供了SSL加速、软件升级、IP地址过滤、带宽控制等辅助功能。

负载均衡篇(二)实现Web负载均衡的几种方式相关推荐

  1. linux下实现web数据同步的四种方式(性能比较)

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  2. 实现web数据同步的四种方式

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  3. WEB通信交互的几种方式

    WEB通信交互的几种方式 - 实时通信发展过程简介 简单介绍一下现在的WEB通信有以下几种方式:最基本的http请求方式,Ajax轮询,Ajax长轮询,HTML5推送事件,HTML5的WebSocke ...

  4. java 生成二维码 QRCode、zxing 两种方式

    版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...

  5. linux数据同步技术比较,linux下实现web数据同步的四种方式(性能比较)教程.docx

    linux下实现web数据同步的四种方式(性能比较)教程 实现web数据同步的四种方式=======================================1.nfs实现web数据共享2.rs ...

  6. web服务器攻击的八种方式

    随着互联网的高速发展,网络走进了千家万户,同时也有很大一部分人架设起了自己的网站.继而不安分的黑客们,又将目光对准了服务器攻击这个方式,从而破坏或取得服务器的管理权限.本文将主要讲述针对web服务器攻 ...

  7. maven web项目导入sts_Spring Boot2 系列教程(二)创建 Spring Boot 项目的三种方式

    我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 43W+,如下图: 2017 年由于种种原因,就没有 ...

  8. 提高Web Service效率的几种方式(转)

    2008-02-20 16:01 基于SOAP的Web Service的性能一直为人诟病,由于采用 XML标准进行系统间的数据传输,加大了传输的数据量,尤其是在传输一些具有比较严格结构的数据时,会使得 ...

  9. Windows从web下载文件的几种方式

    最近搞app自动化测试,需要自动从网页上下载apk用于测试,顺便学习了几种从web下载文件的方式. 一.PowerShell DownloadFile 命令 PowerShell 是一种winodws ...

  10. web端上传图片的几种方式

    首先是后台要有一个上传图片的工具类: [java] view plaincopy package utils; import java.io.File; import org.apache.commo ...

最新文章

  1. 基于 U-Net 的医学影像分割算法综述
  2. STM32串口发送中断
  3. 「LibreOJ β Round #4」子集
  4. Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单
  5. 技术债务就像俄罗斯方块,你永远都赢不了!
  6. 新闻发布项目——实体类(User)
  7. 【论文翻译】学习新闻事件预测的因果关系
  8. 中国已消失的9所世界级大学
  9. 提携数学天才陶哲轩的伯乐是谁?
  10. 1400协议是什么和28181区别_公安三所标准 跟GB28181标准 有什么 区别?
  11. php策略模式,PHP策略模式定义与用法(详解)
  12. 2月26日 Scrapy入门
  13. DenseNet 简介
  14. Python基于cq-http协议端,使用nonebot2框架制作属于自己的智能机器人
  15. java实现ssdp协议_SSDP协议最简单的Reactor / Netty实现是什么?
  16. 编译报错【error】dexpreopt.sh:23 exited with status 1
  17. 浅谈游戏《celeste蔚蓝》
  18. 微信小程序源码喝酒游戏集合只有前台上传就可以使用
  19. vmgsim 完整好用已经测试REFORM-3PC
  20. 贝多芬第九交响曲,卡拉扬63年版,第四乐章演唱部分歌词文件

热门文章

  1. sysdig_Sysdig: 系统故障排查利器
  2. 家用台式计算机硬件配置清单,台式电脑组装配置清单
  3. 施迈赛151192476 ZQ 700-11拉线开关
  4. 计算机内存和外存的主要区别是什么,计算机的存储系统一般有内存和外存,试述内存与外存的主要区别。...
  5. 编程求一元二次方程的解
  6. Android面试英文介绍
  7. 【程序思考】人穷志短,千古名言
  8. 零基础转行软件测试有前途吗?为什么说软件测试是极具发展前途的
  9. 数据分析的重要性体现在哪?
  10. 系统测试和验收测试的区别