一、什么是负载均衡

当一台服务器的单位时间内的访问量越大时,服务器压力就越大。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。

我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

二、负载均衡的策略机制

实现负载均衡需要考虑其分配的算法,任何一种实现方法都离不开下面几种算法:

  1. 轮询(默认)
  2. 权重轮询(权重越高,进入的几率越大)
  3. IP-Hash
  4. Fair
  5. URL-Hash

1.轮询(默认)

请求依次轮流往每个应用服务器上进行分配,分配策略比较简单。

缺点:不均匀,可能会出现,某些服务器接受的请求较重,负载压力重,有些负荷小,不可控。另外服务器之间需要进行session同步。

2.权重轮询(权重越高,进入的几率越大)

优点:可以根据情况进行调整。可控,仍然需要进行session同步。

3.IP-Hash

优点:无需进行session同步,固定IP会固定访问一台服务器。

缺点:恶意攻击,会造成某台服务器压垮。提供的服务不同,面向的地区不同,IP可能会出现集中,造成不均匀,不可控。

4.Fair

这种相当于自适应,会根据服务器处理请求的速度进行负载均衡分配。处理请求最早结束的,拿到下一个请求。看上去是不是很好。但是一般都不使用,说是考虑到网络不稳定因素。还有待研究。这种也需要进行session同步。

5.URL-Hash

这种是根据URL进行hash,这样某些请求永远打某台服务器。利于利用服务器的缓存,但是可能由于URL的哈希值分布不均匀,以及业务侧重造成某些服务器压力大,某些负荷低。这种也需要进行session同步。

三、实现负载均衡的几种方式

实现负载均衡有多种方式:

  1. 软件负载均衡:比如常见的Nginx、LVS。
  2. 硬件负载均衡;买相应硬件。
  3. DNS负载均衡:通过DNS域名解析的方式,使多个服务器IP对应一个域名。

除了硬件外,下面是几种常见的方式,除了DNS域名解析是DNS实现的,其他均是软件负载均衡:

  1. HTTP重定向
  2. DNS域名解析
  3. 反向代理(Nginx)
  4. IP负载均衡
  5. 链路层的负载均衡(LVS)

1. HTTP重定向

HTTP重定向服务器就是一个普通的服务器,当用户访问时,其会根据一定的算法得到服务器集群的一个真实服务器的IP地址,将其放在HTTP响应头中,响应状态码为(302),当用户浏览器接收到这个响应时,会将得到的真实服务器的IP地址提出并重新访问。如上图所示,当用户访问域名时通过DNS解析得到114.100.20.200,然后访问114.100.20.200,也就是HTTP重定向服务器,响应重定向至114.100.20.203,用户浏览器再重新访问。


缺点:

  1. 这种方式需要用户浏览器访问两次,性能较差
  2. HTTP重定向服务器会的处理能力会成为负载均衡的瓶颈
  3. HTTP重定向返回302,可能会使搜索引擎判定为SEO作弊,降低搜索排名

2.DNS域名解析

我们有很多个服务器IP,但是可以只用一个域名。当我们通过域名访问网站时,需要通过DNS服务器得到服务器的IP地址,我们可以在DNS服务器上设置一定的算法,每次得到不同的IP地址来进行访问从而实现负载均衡。

当用户访问www.apusapp.com时,这个域名对应了多个IP地址,通过DNS服务器解析会得到一个IP地址(可以看到,得到的这个IP地址,是服务器集群中一个服务器的IP地址),用户访问这个IP地址来达到真实的服务。

优点:

  1. 将负载均衡的工作丢给了DNS服务器去做,省去了网站管理人员的维护工作,简单易用,成本低,而且方便灵活。
  2. 服务器可以放在任何的地方。
  3. 同时,DNS服务还可以做基于地理位置的解析,可以让一个距离最近的服务器的IP地址放回,提高性能

缺点:

  1. .DNS服务是有多级的,每一级都有可能缓存着DNS的对应关系,所以有可能当某一台真实服务器下线之后,修改了DNS服务器的记录,但在生效之前还有一段时间,在这段期间,其IP地址已经不可用了,通过域名进行访问时还是会访问到这个IP地址,就会访问失败。
  2. DNS服务器和真实服务器是完全分开的,所以DNS的负载均衡不能监测到真是服务器当前的运行状态,其负载均衡的效果不是很好。

事实上,大型网站都将DNS负载均衡作为第一级的负载均衡手段,在服务器内部再进行第二级的负载均衡,也就是说,我们通过DNS得到的IP地址并不是真实服务器的IP地址,而是内部负载均衡服务器的IP地址。

3. 反向代理(Nginx)
为什么叫反向代理:代理与反向代理:VPN服务就是我们常用的一种代理(正向代理),用户将请教交给代理服务器,代理服务器访问网站获取数据,之后代理服务器再将数据返还给用户。在这个过程中,应用服务器并不知道用户的存在。只知道代理浏览器的访问。
反向代理是指在服务器端的代理,代理服务器接收用户的请求,再转发给真实服务器,之后再返回给代理服务器再给用户,在这个过程中,用户并不知道真实服务器的存在。

反向代理服务器管理了一组服务器,当用户访问时,代理服务器根据负载均衡算法将请求转发到真实服务器,真实服务器也通过反向代理服务器返还数据。内部服务器不对外部提供服务,所以不需要外部IP,而反向代理服务器需要两个网卡,一个IP用于外部用户访问使用,另外一个用于内部使用。

优点:反向代理服务器位于应用层,负载均衡方案和反向代理服务器集成在了一起,部署简单。

缺点: 反向代理服务器处理所有用户的请求和响应,其性能可能成为服务器集群的瓶颈

注意:有名Nginx就是反向代理服务

4.IP负载均衡

优点:IP负载均衡在内核进程完成数据分发,较反向代理均衡有更好的处理性能。

缺点:负载均衡的网卡带宽成为系统的瓶颈。

5.链路层的负载均衡(LVS)

MAC地址:mac地址是与网卡相关,其编号只与网卡生产厂商和流水号有关,基本上可以作为每台电脑的“身份证”。以太网中数据帧之间是通过MAC寻址来到达对应的计算机网卡或者路由的


链路层的负载均衡通过修改帧数据包中的MAC地址来达到转发的目的。这种方法,所有的真实服务器和负载均衡服务器都有相同的IP地址,不用修改IP数据包的目的地址和源地址,只通过修改MAC地址就可以达到效果,因为请求的IP地址和实际处理的真实服务器的IP地址一致,所以不需要回到负载均衡服务器进行地址交换,可以将响应直接发会给用户浏览器,避免了负载均衡服务器成为传输瓶颈的可能。

优点:避免负载均衡服务器网卡带宽成为瓶颈,是目前大型网站所使用的最广的一种负载均衡手段。

Linux中的LVS(Linux Virtual Server)就是链路层负载均衡的开源产品

四、使用套路

DNS负载均衡是地理级别的,硬件负载均衡对应的是集群级别的,软件负载均衡对应的是机器级别的。

原文链接:https://blog.csdn.net/bpb_cx/article/details/82771168
原文链接:https://www.jianshu.com/p/c48af7936329
原文链接:https://blog.csdn.net/JACKO_CHAN/article/details/81060273

负载均衡及其常见实现方式相关推荐

  1. 负载均衡的常见实现方式

    HTTP重定向 HTTP重定向服务器就是一个普通的服务器,当用户访问时,其会根据一定的算法得到服务器集群的一个真实服务器的IP地址,将其放在HTTP响应头中,响应状态码为(302),当用户浏览器接收到 ...

  2. 亿级Web系统负载均衡几种实现方式

    aspirant 架构师技术联盟 负载均衡(Load Balance)是集群技术(Cluster)的一种应用技术.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应 ...

  3. 负载均衡有哪些实现方式?

    负载均衡有哪些实现方式? 面试回答: 一般而言,负载均衡可以通过DNS.Http重定向.反向代理.IP等方式实现. 其中DNS是最简单的负载均衡方式,一般用于地域级别的负载均衡,它虽然简单,但扩展性太 ...

  4. 负载均衡的几种方式_负载均衡的几种方式

    负载均衡其实就是任务的分发,使得任务能按照你的预想分配到各个计算单元上,它能提高服务对外的性能,避免单点失效场景.这里要注意的一点是虽说叫负载均衡,但是有时候我们的分配算法就是不是均衡的. 比如配个n ...

  5. SpringCloud集群的搭建,分布式的实现,负载均衡的几种方式,路由,页面监听

    SpringCloud 服务注册与发现--Netflix Eureka 负载均衡: 客户端负载均衡--Netflix Ribbon 服务端负载均衡:--Feign(其也是依赖于Ribbon,只是将调用 ...

  6. nginx实现负载均衡的6种方式

    nginx实现负载均衡的6种方式 一.负载均衡 1.轮询 2.权重 3.ip_hash 4.最少连接least_conn nginx.conf配置文件内容详解 后续更新 一.负载均衡 nginx负载均 ...

  7. IIS Web负载均衡的几种方式

    Web负载均衡的几种实现方式 摘要: 负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应 ...

  8. Nginx负载均衡的4种方式 :轮询-Round Robin 、Ip地址-ip_hash、最少连接-least_conn、加权-weight=n

    负载均衡的概念: Load Balance负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法. 我们知道单台服务器的性能是有上限的,当流量很大时,就需要使用多台服务器来共同提供服务 ...

  9. 细谈负载均衡,什么是负载均衡以及负载均衡的常见方法

    一.负载均衡概述 负载均衡是由多台服务器以对称的方式是组成的服务器集群,每台服务器具有等价的地位,都可以单独对位提供服务而无需借助其他服务器的辅助.通过某种负载分担技术,将请求均匀的分配到对称结构的某 ...

  10. nginx负载均衡的五种方式

    文章目录 前言 :负载均衡是什么 一.方式1:轮询 二.方式2:权重 方式3:iphash 方式4:最小连接 方式5:fair 总结:根据这几种方式可以猜测处nginx的底层使用了计数器,从而可以将海 ...

最新文章

  1. CentOS7种搭建FTP服务器
  2. PLSQL DEVELOPER 使用技巧
  3. linux中shell如何输出换行符
  4. 腾讯上海某实验室SQL面试题——查询最后任职信息
  5. ffmpeg个人翻译文档1-8转
  6. leetcode中文版python_Python版LeetCode1.两数之和
  7. ASP.NET教程11
  8. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 2丨连续出现的数字【难度中等】
  9. rserve php,使用Rserve远程执行R脚本
  10. 条件语句的多层嵌套问题优化,助你写出不让同事吐槽的代码
  11. 阿里天池全国社保比赛心得
  12. uitextfield长按显示英文select all,copy,paste?
  13. pyqt快速编程指南 源码_适合 C++ 新手学习的开源项目——在 GitHub 学编程
  14. 钉钉web版防撤回、屏蔽已读
  15. redis的简单操作
  16. Python炸弹人小游戏源代码
  17. matlab怎么画两个自变量的图_er图怎么画?轻松绘制专业er图的软件
  18. cgi一键还原 linux分区,用一键恢复CGI工具备份还原分区和硬盘使用图文教程
  19. 如何利用JS生成二维码
  20. 学习笔记——利用串口通信控制LED指示灯开关

热门文章

  1. 浅谈 | 日内动量交易策略
  2. Unity5.6 VideoPlayer用法
  3. Anaconda 的Jupyter Notebook更换默认浏览器
  4. C++之文件批量改名
  5. 如何去优化一个网站做到更好
  6. 成功之路散文连载之名师出高徒
  7. 编一程序,将两个字符串连接起来,不要用strcat函数。C语言
  8. 轻型机械臂模块关节机械设计方案
  9. Rope3d数据集分析
  10. ECCV 2020 论文大盘点-图像增强与图像恢复篇