logo

  • 欢迎各位友链


  • 首页
  • 关于
  • 技术文章
  • 资源分享
  • 微语
  • 相册
  • 优秀博客
  • 留言

负载均衡的种类

 2020/02/11
 Garlic
 0
 543
“ 负载均衡的目的就是让请求到达不同的服务器上。一次请求到服务器之间,有那么多环节,因此可以实现的方法有很多种,实际应用中不外乎以下几种方式 ”
负载均衡的种类

负载均衡的目的就是让请求到达不同的服务器上。一次请求到服务器之间,有那么多环节,因此可以实现的方法有很多种,实际应用中不外乎以下几种方式。

HTTP 重定向负载均衡

HTTP 重定向负载均衡有一台重定向服务器,它也是一台普通的服务器,其唯一的功能就是根据用户的 HTTP 请求计算一台应用集群中服务器的地址,并将此地址写入 HTTP 重定向响应中返回给用户。

这种方案实现起来非常简单,但是需要浏览器请求两次服务器才能完成。并且重定向服务器很容易编程瓶颈,因为一次重定向返回的过程,也是一次标准 HTTP 请求,如果集群内有 10 台机器,那 HTTP 重定向服务器的流量将是应用服务器的 10 倍,如果有 100 台估计就要宕机了,所以伸缩性能受到了很大的限制。还有使用 302 响应码重定向,不利于网站的 SEO。

DNS 域名解析负载均衡

这是利用 DNS 处理域名解析请求的同时进行负载均衡处理的一种方案。在 DNS 中配置多个 A 记录,每次域名解析请求都会根据负载均衡算法计算一个不同的 IP 地址返回。

DNS 域名解析负载均衡的优点是将负载均衡的工作转交给 DNS,省掉了网站管理维护负载均衡服务器的麻烦,同时还可以使用智能 DNS 可以基于地理位置或者 ISP 来做域名解析,用户将会得到距离最近或者速度最快的一个服务器地址,这样可以加快用户的访问速度,改善性能。

但是这种方法也有很大的缺点,DNS 是多级解析,每一级都会缓存 DNS 记录,如果某个服务器变动了,DNS 记录更新的时间将会很长,这个速度取决于域名服务商。

一般大型网站都会使用 DNS 域名解析,利用域名解析作为一级负载均衡手段。你可以使用 dig <域名> 的方法查看某个域名的 A 记录,你会发现很多网站会有多条 A 记录。

反向代理负载均衡

这种方法就是使用反向代理服务器,它一般在 web 服务器前面,这个位置也正好是负载均衡服务器的位置,所以大多数反向代理服务器同时也提供负载均衡的功能。

由于 web 服务器不直接对外提供访问,因此 web 服务器不需要使用外部 IP,而反向代理服务器则需要配置双网卡和内部外部两套 IP 地址。

反向代理服务器转发请求是在 HTTP 协议层面,因此也叫应用层负载均衡,由于应用层在七层网络模型中的第七层,所以一般也称为七层负载均衡。优点就是和反向代理服务器功能集成在一起,部署简单。缺点是反向代理服务器是所有请求和响应的中转站,其性能可能会成为瓶颈。

网络层负载均衡

这种方法是在网络层通过修改请求目标地址进行负载均衡,网络层在七层网络层模型的第四层,所以也叫做四层负载均衡,也叫做 IP 层负载均衡。

请求达到负载均衡服务器后,由负载均衡服务器在操作系统内核进程获取网络数据包,根据负载均衡算法得到一台真实 web 服务器的地址,然后修改请求的目的地址到这台真实的 web 服务器地址,等到 web 服务器处理完成后,响应数据包回到负载均衡服务器,再将数据包源地址修改为自身的 IP(负载均衡服务器的 IP)地址发送给用户浏览器。

这里关键在于真实 web 服务器响应数据包如何返回给负载均衡服务器。一种是源地址转换(SNAT),第二种是负载均衡服务器作为网关服务器。

网络层的负载均衡在内核进程完成数据转发,有更好的性能。但是由于响应请求的流量要经过负载均衡服务器,容易成为瓶颈。

数据链路层负载均衡

数据链路层主要处理 mac 地址,所以使用修改 mac 地址进行转发请求。

负载均衡数据分发过程中不修改 IP 地址,只修改 mac 地址,通过配置真实物理服务器集群所有机器虚拟 IP 和负载均衡服务器 IP 地址一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的目的。

由于 web 服务器的服务器地址 IP 和数据请求目的 IP 地址一致,不需要通过负载均衡服务器进行地址转换,可将相应数据包直接返回用户。

如果有足够的公有 IP,其实 web 服务器也可以直接使用自己的 IP 响应请求,不过这样 web 服务器必须绑定负载均衡的虚拟 IP 地址(VIP),才能保证 web 服务器收到来自负载均衡发送的数据包。

这种方式称作三角传输模式,单臂模式,也叫做直接路由方式(DR)。使用 DR 方式的链路层负载均衡是目前大型网站使用最广的一种负载均衡手段。

本文转自 负载均衡的种类


支付宝 微信
 70

负载均衡
  • 本文链接: 负载均衡的种类 | Garlic`s Blog
  • 版权声明:若无特殊注明,本文皆为《Garlic`s Blog》原创,转载请保留文章出处。
  • 备注:相关侵权、举报、投诉及建议等,请发E-mail:php_garlic@163.com。
 PHP常用的字符串函数
 Laravel RABC 教程
  • 日常开发的效率提升工具
    日常开发的效率提升工具
  • 宝塔7.6.0去除登陆限制,及强制跳转 /bind解决方法
    宝塔7.6.0去除登陆限制,及强制跳转 /bind解决方法
  • Laravel 常用扩展包
    Laravel 常用扩展包
  • Laravel route() 方法生成 HTTPS 链接
    Laravel route() 方法生成 HTTPS 链接
暂无评论,快抢沙发吧~
  • 😋 支持Emoji表情,可用的 Emoji 请见 🤘 👉 Emoji 列表 ⭐ ✨
 请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!



 验证码
Garlic
Garlic
你能够拥有梦想,而且梦想能够实现,网络是离你梦想最近的地方!
 269
 关注 公众号
1151 本站已勉强运行
PV 今日pv
27 文章数量
文章搜索
最新评论
  • nevermore
    nevermore 2020/12/16
    文章

    博主这个网站搭建花了多久的哈。扒代码花了多久的哈

  • 演员
    演员 2020/10/03
    文章

    老哥这板子好帅,能分享哈不

 点击排行
 最多点赞
  • 宝塔面板安装云锁Nginx自编译web防护教程
    宝塔面板安装云锁Nginx自编译web防护教程
    2019/12/06浏览:750
  • Laravel Eloquent: 使用 hasMany 来处理『无限极分类』
    Laravel Eloquent: 使用 hasMany 来处理『无限极分类』
    2020/01/24浏览:725
  • PHP常用的字符串函数
    PHP常用的字符串函数
    2020/01/26浏览:627
  • Laravel Eloquent: 使用 hasMany 来处理『无限极分类』
    Laravel Eloquent: 使用 hasMany 来处理『无限极分类』
    2020/01/24点赞:100
  • 清除Windows 垃圾
    清除Windows 垃圾
    2020/09/30点赞:87
  • 日常开发的效率提升工具
    日常开发的效率提升工具
    2021/10/19点赞:81
 标签
常用工具 Windows 宝塔 Office SoftEther 负载均衡 百度网盘 Yii Thinkphp Apache
 友情链接
Laravel China 社区 椰子皮博客 站点导航
首页 Emoji 表情列表 网站地图
CopyRight © 2019 - 2023 - Garlic`s Blog - 粤ICP备17064364号-1
声明: 本站资源来源自网络,如有侵权,请联系站长删除! 本站前端模板采用 椰子皮博客