zoukankan      html  css  js  c++  java
  • 负载均衡详解

    @(Linux服务)[负载均衡详解]
    负载均衡详解

    负载均衡简介

     负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。我们比较常用的例如:HAPoryx、LVS、nginx这三种。

    负载均衡分类

     我们最常见的负载均衡通常是四层和七层负载均衡。下面介绍四种:

    二层负载均衡

     负载均衡服务器对外依然提供一个VIP(虚拟IP),在集群中不同的机器采用相同IP地址,但是机器的MAC地址不一样。当负载均衡服务器接收到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。

    三层负载均衡

     和二层负载均衡类似,负载均衡服务器对外提供一个VIP(虚拟IP),但是集群中不同的机器采用不同的IP地址。负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过ip将请求转发至不同的真实服务器。

    四层负载均衡

    四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口以及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。

    七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用http、radiuus、dns等。七层负载均衡就可以基于这些协议来负载。这些应用层协议中包含很多有意义的内容。比如同一个web服务器的负载均衡,除了根据IP加端口进行负载外,还可以根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。
    对于一般的应用来说,有nginx就够了。nginx也可以用于七层负载均衡。但是对于一些大的网站。一般采用的是DNS+四层负载均衡+七层负载均衡的方式进行多层次负载均衡。

    四层、七层负载均衡对比

    所谓的四层即传输层,就是基于IP+端口的负载均衡(修改包头目标地址+修改源地址转发);
    七层即应用层,即使基于URL等应用层信息的负载均衡(proxy code代理);
    二层负载均衡,即基于MAC地址
    三层负载均衡基于IP;

    也可以这样理解:
    二层负载均衡会通过一个虚拟的MAC地址接受请求,然后在分配到真实的MAC地址;

    三层负载均衡通过一个虚拟的IP地址接收请求,然后在分配到真是的IP地址;

    四层负载均衡虚拟 IP + 端口接收请求,然后再分配到真实的服务器;

    七层负载均衡通过虚拟的 URL 或主机名接收请求,然后再分配到真实的服务器。

     所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量。

    四层负载均衡就是通过发布的三层地址(VIP),然后加四层的端口号来决定那些流量需要做负载均衡。对需要处理的流量进行 NAT 处理,转发至后台服务器,并记录下这个 TCP 或者 UDP 的流量是由哪台服务器处理的,
    后续这个连接的所有流量都同样转发到同一台服务器处理。

    七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征, 比如同一个 Web 服务器的负载均衡,除了根据 VIP 加 80 端口辨别是否需要处理的流量, 还可根据七层的 URL、浏览器类别、语言来决定是否要进行负载均衡。

    负载均衡器通常成为四层交换机或七层交换机

    四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URL或者Cookie信息。

    要明白 4 层负载均衡本质是转发,而 7 层负载本质是内容交换和代理

    四层与七层技术原理上的区别

    四层负载均衡:
    负载均衡设备在接收到第一个来自客户端的 SYN 请求时,选择一个最佳的服务器, 并对报文中的目标 IP 地址进行修改(改为后端服务器 IP),直接转发给该服务器。 TCP 的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。

    为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。
    七层负载均衡:
    主要通过报文中的真正有意义的应用层内容,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(TCP 三次握手)后,才可能接收到客户端发送的真正应用层内容的报文, 然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

    七层应用需要考虑的问题

    七层应用的确可以提高流量智能化,同时必不可免的带来设备配置复杂,负载均衡压力增高以及故障排查上的复杂性等问题。在设计系统时需要考虑四层七层同时应用的混杂情况。

    是否真的可以提高安全性。例如 SYN Flood 攻击,七层模式的确将这些流量从服务器屏蔽,但负载均衡设备本身要有强大的抗 DDoS 能力,
    否则即使服务器正常而作为中枢调度的负载均衡设备故障也会导致整个应用的崩溃。

    是否有足够的灵活度。七层应用的优势是可以让整个应用的流量智能化,但是负载均衡设备需要提供完善的七层功能,满足客户根据不同情况的基于应用的调度。

    最简单的一个考核就是能否取代后台 Nginx 或者 Apache 等服务器上的调度功能。

    能够提供一个七层应用开发接口的负载均衡设备,可以让客户根据需求任意设定功能,才真正有可能提供强大的灵活性和智能性。

    参考地址:http://mp.weixin.qq.com/s/MA6qsSUKp2YMg6_RyLlwxQ

  • 相关阅读:
    前端构建工具gulpjs的使用介绍及技巧
    mysql /*! 50100 ... */ 条件编译
    linux 硬连接与软连接
    Linux 数据流重定向
    倒排索引
    sed 常用的功能
    linux mysql安装
    mysql help
    linux 命令行选项
    mysql 主主复制的配置流程
  • 原文地址:https://www.cnblogs.com/xiaogongzi/p/8624489.html
Copyright © 2011-2022 走看看