从网络到分布式-负载均衡

作者:ice_image
出处:https://www.cnblogs.com/ice-image/p/14524056.html
网络并发负载均衡OSI 七层参考模型分层模型 , 每一层实现各自的功能和协议 , 并完成与相邻层的接口通讯 。OSI 的服务定义详细说明了各层所提供的服务 , 某一层的服务就是该层及其下各层的一种能力 , 通过接口提供给更高一层 。各层所提供的服务与这些服务是怎么实现的无关 。

  • 应用层:为各种应用程序提供服务
  • 表示层:数据格式转化、数据加密
  • 会话层:建立、管理和维护会话
  • 传输层:定义了一些传输数据的协议和端口号
  • 网络层:IP 选址及路由选择
  • 数据链路层:mac 地址的封装与解码 。
  • 物理层:定义物理设备标准 , 如网线接口类型、光纤的接口类型、各种传输介质的传输速率 。主要用于传输比特流 。

从网络到分布式-负载均衡

文章插图
 
TCP/IP 五层模型
从网络到分布式-负载均衡

文章插图
 

从网络到分布式-负载均衡

文章插图
 

从网络到分布式-负载均衡

文章插图
 
负载均衡通常是指将请求或者是数据 , 均匀的分摊到多个操作单元上执行 。属于分而治之的思想 。
目的是通过调度集群 , 达到最佳化资源使用 , 最大化吞吐率 , 最小化响应时间 , 避免单点过载的问题
负载均衡算法
  • 静态
    • RR:轮询
    • WRR:权重轮询
    • DH
    • SH
  • 动态
    • LC:最小连接数法
    • WLC:加权最小连接
    • SED:最短期望延迟
    • NQ:never queue
    • LBLC:基于本地的最小连接
    • 响应速度均衡
    • 处理能力均衡
四层负载均衡基于传输层的负载均衡 , 代表协议为 TCP/UDP , 除了包含 IP 之外 , 还区分了端口号 , 主要是通过基于 IP + 端口号进行请求的转发 。
从网络到分布式-负载均衡

文章插图
 
四层负载均衡服务器 LVS
  1. NAT:地址转换
  2. DR:直接路由
  3. TUN:隧道技术
NAT 地址转换原理:IP地址改写
从网络到分布式-负载均衡

文章插图
 
DR 直接路由原理:局域网改写 mac 地址
从网络到分布式-负载均衡

文章插图
 
TUN 隧道技术原理:IP封装、跨网段
从网络到分布式-负载均衡

文章插图
 
keepalived高可用 , 用于检测各个节点的状态 , 处理单点故障 。
若单点 LVS 挂掉 , 该如何处理 , 思路:多点 , 形成集群(分布式)
  • 主备:只有主向外提供服务 , 备机用于在主机发生故障的时候 , 提供服务 。
  • 主主:同时向外提供服务
  • 主从:两者相互配合完成工作
keepalived
  1. 监控自己服务
  2. Master通告自己还活着 , Backup监听Master状态 , Master挂了 , 一堆Backup推举出一个新的Master
  3. 配置:VIP、添加ipvs、keepalived是有配置文件的
  4. 对后端的Server做监控检查
  5. keepalived是一个通用的工作 , 主要作为HA实现:
    Nginx , 可以作为公司的负载均衡来使用 , Nginx成为了单点故障 , 也可以用keepalived来解决 , 只要涉及到一变多的情况 , 基本都可以使用keepalived来解决 。
七层负载均衡基于应用层的负载均衡 , 代表协议由 HTTP、DNS 等 , 可以根据请求的 URL 等进行负载 , 更加灵活 。基于反向代理的负载均衡的 Nginx 就是其代表之一 。
普通的四层负载均衡软件 , 其实现的功能只是对请求数据包的转发、传递 , 从负载均衡下的节点服务器来看 , 接收到的请求还是来自访问负载均衡器的客户端的真实用户 , 而基于反向代理的负载均衡是 , 反向代理服务器在接收访问用户请求后 , 会代理用户重新发起请求代理下的节点服务器 , 最后把数据返回给客户端用户 。在节点服务器看来 , 访问的节点服务器的客户端用户就是反向代理服务器 , 而非真实的网站访问用户 。


推荐阅读