当前位置 博文首页 > 韩超的博客 (hanchao5272):负载均衡、DNS、F5、反向代理、LVS、

    韩超的博客 (hanchao5272):负载均衡、DNS、F5、反向代理、LVS、

    作者:[db:作者] 时间:2021-09-05 16:08

    1.负载均衡

    负载均衡:将负载(大量请求)匀的、平的分摊到多个服务节点上进行处理。

    实现负载均衡有很多种手段,例如:DNS、硬件负载均衡设备、Nginx反向代理、LVS。

    1.1.DNS

    DNSDomain Name System,域名系统,更加专业的名字为域名解析系统。

    域名解析系统部署在DNS服务器上,提供域名解析服务。

    简单来说,域名解析就是将一个域名解析成多个ip地址。

    如下图是通过某个域名解析网站对www.baidu.com的解析结果:

    最早的负载均衡就是利用搭建本地DNS服务器实现的,实现方式简单易懂,为同一个主机名分配多个映射 ,可采用轮循,随机等方式分配请求。

    作为负载均衡的缺点

    DNS中有缓存,但是如果机器出现故障,缓存不能及时更新。

    此时,如果访问域名,返回的IP可能是一个正在故障的IP地址,最终导致所有访问该IP的请求都发送故障。

    1.2.F5

    硬件负载均衡设备又叫负载均衡器(Load Balancer),通常作为独立硬件存在。

    负载均衡设备拥有非常好的负载均衡性能,他拥有众多的负载均衡策略(权重,动态比率,最快模式,最小连接数等),可以保证以相对较优的方式分配请求。

    常见的负载均衡器有:F5、BIGIP。

    一台负载均衡器的售价往往高达十几万甚至几十万,许多企业并不愿意为它买单。

    关于F5的LTM和GTM

    本段落内容感谢博友wendy019900107的补充。

    LTM和GTM是F5推出的两类产品。

    LTM

    • Local Traffic Management,本地流量管理 ,也就是通常所说的服务器负载均衡。
    • LTM主要实现的是一对多NAT(Network Address Translation,网络地址转换)。
    • 比如一个用户访问进来,由LTM负责具体分配到哪个服务器来处理。

    GTM

    • Global Traffic Management,广域网流量管理,也称为全局负载均衡。
    • GTM又称之为智能DNS,它可以:
      • 支持LTM的功能;
      • 对各域名对应的IP进行健康检查,解决DNS的缓存更新不及时问题;
      • 根据来源ip所处的运营商、地理位置,优先给客户端返回离它地理位置近属于同一运营商的ip。

    1.3.Nginx反向代理

    反向代理:服务器根据客户端的请求,从其关联的一组或多组后端服务器上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。

    可以通过Nginx服务器的反向代理功能实现负载均衡。

    为什么叫反向代理呢?与正向代理有什么区别呢?可以通过下面的描述简单理解:

    • 代理访问网络有三个角色:客户端、代理、服务器。
    • 正向代理举例:翻墙软件。反向代理举例:Nginx负载均衡。
    • 无论正向还是反向,代理访问网络的基本流程:客户端—>代理—>服务器。
    • 两者关键区别:代理服务器的代理对象。
      • 正向代理中的代理是代替客户端去访问服务器。
      • 反向代理中的代理是代替服务器去应对客户端的访问。

    下面用一张图来简单描述两者区别:

    在这里插入图片描述

    1.4.LVS

    LVS是章文嵩博士在1998年5月成立的自由软件项目,现在已经是Linux内核的一部分。

    LVS实现负载均衡有多种,下面就其中的NAT和DR两种方式进行简单的描述。

    更多关于LVS的内容请自行了解。

    在这里插入图片描述

    NAT

    1. 客户端发出用户请求。此时,请求报文的源IP为CIP,目标IP为VIP。
    2. 请求报文到达LVS,LVS修改数据包的目标IP为RIP。此时,请求的报文源IP为CIP,目标IP为RIP。
    3. 请求报文根据目标IP=RIP发送到后端服务器。
    4. 服务器处理完请求逻辑,开始构建响应报文回复给LVS。此时,请求的报文源IP为RIP,目标IP为CIP。
    5. 响应报文到达LVS,LVS修改数据包的源IP为VIP。此时,请求的报文源IP为VIP,目标IP为CIP。
    6. 响应报文返回至客户端。

    DR

    1. 客户端发出用户请求。此时,请求报文的源IP为CIP,目标IP为VIP。
    2. 请求报文到达LVS,LVS将数据包的源MAC修改为DIPMAC,目标MAC修改为RIPMAC。此时,请求的报文源IP为CIP,目标IP为VIP。
    3. 请求报文根据目标MAC=RIPMAC发送到后端服务器。
    4. 服务器处理完请求逻辑,开始构建响应报文回复给客户端。此时,请求的报文源IP为VIP,目标IP为CIP。
    5. 响应报文通过虚拟网络接口lo传送至物理网络接口eth0之后发出,最终返回至客户端。

    2.四层负载均衡与七层负载均衡

    负载均衡的分层是针对OSI网络模型来说的,负载均衡模型也不仅仅只有四层和七层的。

    下面先给出OSI网络模型架构:

    根据上述模型,可以快速了解负载均衡的分层:

    • 二层负载均衡:基于虚拟MAC与真实MAC的地址互联。
    • 三层负载均衡:基于虚拟IP与真实IP的地址互联。
    • 四层负载均衡:基于三层的IP加四层的PORT进行虚拟与真实互转,期间也记录四层的UDP和TCP信息。
    • 七层负载均衡:基于六层的URL进行地址互转,分析URL得到对应的七层HTTP等信息。

    3.CDN

    CDN的全称是Content Delivery Network,即内容分发网络。

    CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

    CDN的关键技术主要有内容存储和分发技术。

    简单来说,CDN存储一些静态资源为其附近的用户提供所需内容。

    可以通过下图来简单理解CDN。

    • CDN不是一天服务器,而是一个服务器网络,这些服务器节点分布在各地。
    • CDN存储的一般都是静态资源,就是指不会因为用户请求而发生改变的内容,如CSS、HTML、图片等等。
    • CDN服务器可以在用户请求后缓存静态资源,也可以主动抓取主服务器静态资源。
    • 用户访问网络资源时,服务会根据其地理位置,为其选择距离较近的CDN服务器提供静态资源服务。

    4.参考

    • https://blog.csdn.net/qq_28165595/article/details/83004020
    • https://blog.51cto.com/19940919/1979002
    • https://blog.csdn.net/qq_16093323/article/details/79582554
    • http://www.360doc.com/content/18/1124/13/11935121_796918723.shtml
    cs