负载均衡的详细信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了负载均衡的详细信息相关的知识,希望对你有一定的参考价值。

参考技术A

算法
提供多个WAN ports可作多种负载平衡算法则,企业可依需求自行设定负载平衡规则,而网络存取可参照所设定的规则,执行网络流量负载平衡导引。算法则有:
◎ 依序Round Robin
◎ 比重Weighted Round Robin
◎ 流量比例Traffic
◎ 使用者端User
◎ 应用类别Application
◎ 联机数量Session
◎ 服务类别Service
◎ 自动分配Auto Mode
Inbound Load Balancing
内建Inbound Load Balance 功能,可让企业透过多条ISP线路,提供给浏览者更实时、快速与稳定不断线的因特网在线服务;
Inbound负载平衡算法包括:Round Robin/ Weighted Round Robin/Auto Back Up;
功能
内建DNS服务器,可维护多个网域(domain),每个网域又可以新增多笔纪(A/CNAME/MX),达到Inbound Load Sharing的功能。
■Server Load Balancing
AboCom服务器负载均衡提供了服务级(端口)负载均衡及备援机制。主要用于合理分配企业对外服务器的访问请求,使得各服务器之间相互进行负载和备援。
AboCom服务器负载与服务器群集差异:
一旦有服务器故障,群集技术只对服务器的硬件是否正常工作进行检查;AboCom服务器负载则对应用服务端口进行检查,一旦服务器的该应用服务端口异常则自动将访问请求转移到正常的服务器进行响应。
■VPN Trunk 负载均衡
支持同时在多条线路上建立VPN连接,并对其多条VPN线路进行负载。不仅提高了企业总部与分支机构的VPN访问速度,也解决了因某条ISP线路断线造成无法访问的问题。进行VPN负载均衡时VPN访问数据将同时在多条VPN线路上进传输。当一条VPN线路故障时,所有流量将自动切换到正常的VPN线路上进行传输。
QoS(带宽管理)
个人带宽管理:可实现每个人的网络带宽分配、管理,可以设置保证带宽用以保障个人应用不受整体环境影响。每日带宽配额:可以针对个人、群组或部门等分别设置带宽配额,这样可以合理利用带宽资源,杜绝资源的浪费,也杜绝员工干与工作无关的事,如看在线电影,下载大容量文件资料等等。
内容过滤
网络信息过滤:采用关键字进行内容过滤,可保护内网不受色情、暴力、反动、迷信等信息的入侵和干扰。
聊天软件、P2P软件控制:可针对QQ、MSN、YAHOO、SKYPE、GOOGLE TALK等聊天通讯软件进行管控和限制,还可限制或禁止如BT、电驴、迅雷等P2P软件的使用。
SSL VPN
提供最佳远程安全存取解决方案,企业仅需透过最熟悉的网络浏览器接口(Web Browser),即可轻松连接到企业内部网络;即使未携带企业管控的笔记型计算机,利用家用计算机、公用计算机、PDA等,甚至是通过无线局域网络,都不影响安全联机的建立。
其他功能
实时图形化统计分析:记录所有网络封包的进出流量信息,可用做网络使用监控及统计记录;提供事件警报 (Event Alert)及日志记录管理功能;
支持3A认证:Authentication、Authorization、Accounting,即认证、授权、审计;
交换机联合防御:利用指定交换机进行联合防护,提升整个网络的安全系数和安全强度;
HA双机热备:支持双机备援,防止设备故障造成网络瘫痪,提升整个网络的可靠性;
远程唤醒(Wake on Lan):远程启动计算机。 软/硬件
软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。
软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统本身的Bug,往往会引起安全问题。
硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。
负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。
一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。
本地/全局
负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡),本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。
本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。
全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过Intranet(企业内部互联网)来达到资源统一合理分配的目的。
全局负载均衡有以下的特点:
实现地理位置无关性,能够远距离为用户提供完全的透明服务。
除了能避免服务器、数据中心等的单点失效,也能避免由于ISP专线故障引起的单点失效。
解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量。 负载均衡有三种部署方式:路由模式、桥接模式、服务直接返回模式。路由模式部署灵活,约60%的用户采用这种方式部署;桥接模式不改变现有的网络架构;服务直接返回(DSR)比较适合吞吐量大特别是内容分发的网络应用。约30%的用户采用这种模式。
路由模式(推荐)
路由模式的部署方式如上图。服务器的网关必须设置成负载均衡机的LAN口地址,且与WAN口分署不同的逻辑网络。因此所有返回的流量也都经过负载均衡。这种方式对网络的改动小,能均衡任何下行流量。
桥接模式桥接模式配置简单,不改变现有网络。负载均衡的WAN口和LAN口分别连接上行设备和下行服务器。LAN口不需要配置IP(WAN口与LAN口是桥连接),所有的服务器与负载均衡均在同一逻辑网络中。参见下图:
由于这种安装方式容错性差,网络架构缺乏弹性,对广播风暴及其他生成树协议循环相关联的错误敏感,因此一般不推荐这种安装架构。
服务直接返回模式
如上图,这种安装方式负载均衡的LAN口不使用,WAN口与服务器在同一个网络中,互联网的客户端访问负载均衡的虚IP(VIP),虚IP对应负载均衡机的WAN口,负载均衡根据策略将流量分发到服务器上,服务器直接响应客户端的请求。因此对于客户端而言,响应他的IP不是负载均衡机的虚IP(VIP),而是服务器自身的IP地址。也就是说返回的流量是不经过负载均衡的。因此这种方式适用大流量高带宽要求的服务。 基础网络配置:
AX1000(config)#clock timezone Asia/Shanghai//设置时区
AX1000(config)#vlan 10//创建VLAN10
AX1000(config-vlan:10)# untagged ethernet 1 to 2//划分接口到VLAN10中
AX1000(config-vlan:10)# router-interface ve 10 //设置路由接口为Ve10,后面会给Ve10 配置地址的,这点和传统的二、三层交换不一样。
AX1000(config-vlan:10)# name “Web-Server-Outside”//也可以设置的备注
AX1000(config-vlan:10)#end//完成VLAN10的内容,和Cisco的命令一样。
AX1000(config)#vlan 20
AX1000(config-vlan:20)# untagged ethernet 3 to 4
AX1000(config-vlan:20)# router-interface ve 20
AX1000(config-vlan:20)# name “Web-Server-Inside”
AX1000(config-vlan:10)#end
AX1000(config)#interface ethernet 1//进入eth1口
AX1000(config-if:ethernet1)# enable //激活该接口
AX1000(config-if:ethernet1)# interface ethernet 2
AX1000(config-if:ethernet2)# enable
AX1000(config-if:ethernet2)#interface ethernet 3
AX1000(config-if:ethernet3)# enable
AX1000(config-if:ethernet3)#interface ethernet 4
AX1000(config-if:ethernet4)# enable
AX1000(config-if:ethernet4)#end
AX1000(config)#interface ve 10//进入Ve10接口并为其配置地址
AX1000(config-if:ve10)# ip address 116.255.188.2 255.255.255.0
AX1000(config-if:ve10)# ip nat outside//这和传统的路由交换设置一直,是需要做NAT处理的。
AX1000(config-if:ve10)#end
AX1000(config)#interface ve 20
AX1000(config-if:ve20)# ip address 192.168.1.1 255.255.255.0
AX1000(config-if:ve20)# ip nat inside
AX1000(config-if:ve20)#end
首先添加服务器:
AX1000(config)#slbserver Web1192.168.1.11//添加服务器Web1,其IP地址为192.168.1.11
AX1000(config-real server)#port 80tcp//指定服务器开放的端口及端口类型
AX1000(config-real server-node port)#exit
AX1000(config-real server)#exit
AX1000(config)#slb server Web2192.168.1.12
AX1000(config-real server)#port 80tcp
AX1000(config-real server-node port)#end
检查添加的服务器状态是否正常:
AX1000#showslbserver //查看SLB信息
Total Number of Services configured: 2
Current = Current Connections, Total = Total Connections
Fwd-pkt = Forward packets, Rev-pkt = Reverse packets
Service Current Total Fwd-pkt Rev-pkt Peak-conn State
—————————————————————————————
Web1:80/tcp 0 0 0 0 0 Up
Web1: Total 0 0 0 0 0 Up
Web2:80/tcp 0 0 0 0 0 Up
Web2: Total 0 0 0 0 0 Up
发现全Up以后,则表示服务器的健康检查通过。
默认的健康检查方式是Ping检查服务器的存活状态。只有服务器状态为Up时,负载均衡器才会把会话分发给该服务器处理,从而最大可能性的保障用户的请求得到服务器的正常应答,这也是负载均衡器的基本功能之一。
在很多时候服务器作了安全策略,比如说防止Icmp的报文等等,就需要调整服务器的健康检查方式,具体内容后期提供。
创建服务组
AX1000(config)#slb service-group Webtcp
AX1000(config-slbsvc group)#member Web1:80
AX1000(config-slbsvc group)#member Web2:80
AX1000(config-slbsvc group)#end验证服务组工作正常
AX1000#show slb service-group
Total Number of Service Groups configured: 2
Current = Current Connections, Total = Total Connections
Fwd-p = Forward packets, Rev-p = Reverse packets
Peak-c = Peak connections
Service Group Name
Service Current Total Fwd-p Rev-p Peak-c
——————————————————————————-
*Web State:All Up
Web1:80 0 0 0 0 0
Web2:80 0 0 0 0 0创建虚拟服务器:
其地址为:116.255.188.235,即对外公布的真实的服务地址
AX1000(config)#slbvirtual-server VIP-WEB 116.255.188.235//创建VIP
AX1000(config-slbvserver)#port 80http//指定VIP对公共用户开放的端口及端口类型,Web页面选择http
AX1000(config-slbvserver-vport)#service-group Web//该端口对应的服务组为Web
AX1000(config-slbvserver-vport)#end查看虚拟服务器状态
AX1000#showslbvirtual-server
Total Number of Virtual Services configured: 1
Virtual Server Name IP Current Total Request Response Peak
Service-Group Service connection connection packets packets connection
—————————————————————————————-
*VIP-WEB(A) 116.255.188.235 Up
port 80 http 0 0 0 0 0
Web 80/http 0 0 0 0 0
Total received conn attempts on this port: 0
域名的解析记录已设置为116.255.188.235,所以只要直接访问即可看到效果。
验证:
AX1000#show session | in 116.255.188.235//查看当前设备上访问116.255.188.235的详细会话
Traffic Type Total
——————————————–
TCP Established 17
TCP Half Open 8
UDP 0
Non TCP/UDP IP sessions 0
Other 681295
Reverse NAT TCP 0
Reverse NAT UDP 0
Free Buff Count 0
Curr Free Conn 2031387
Conn Count 6926940
Conn Freed 6926870
TCP SYN Half Open 0
Conn SMP Alloc 103137
Conn SMP Free 102986
Conn SMP Aged 0
Conn Type 0 Available 6225920
Conn Type 1 Available 3112960
Conn Type 2 Available 2015155
Conn Type 3 Available 778240
Conn SMP Type 0 Available 6225920
Conn SMP Type 1 Available 3112960
Conn SMP Type 2 Available 1572712
Conn SMP Type 3 Available 778240
Prot Forward Source Forward Dest Reverse Source Reverse Dest Age Hash Flags
—————————————————————————————————————-
Tcp 110.152.232.139:1927 116.255.188.235:80 192.168.1.11:80 110.152.232.139:80 0 1 OS
Tcp 110.152.232.139:1927 116.255.188.235:80 192.168.1.12:80 110.152.232.139:80 0 1 OS
类型 源地址 目的地址服务器地址 服务器回报地址

为什么没有 5 层6 层负载均衡?



零.从横向扩展说起

从单机扩展到多机,面临的第一个问题就是这些机器如何协同工作,即如何调度请求

为什么没有 5 层、6 层负载均衡?

load balancer dispatcher

P.S.关于横向扩展与纵向扩展的详细信息,见Scalability_系统设计笔记 1

一.负载均衡器

多服务器下的请求调度机制称为负载均衡(Load balancing),调度器(Dispatcher)即负载均衡器(Load balancer):

为什么没有 5 层、6 层负载均衡?

其主要作用是根据既定策略(如随机、轮流)将客户端请求分发给各个服务器

The fundamental feature of a load balancer is to be able to distribute incoming requests over a number of backend servers in the cluster according to a scheduling algorithm.

有助于:

  • 防止请求到达不可用的服务器

  • 防止资源过载

  • 消除单点故障,提升可用性

此外,还可以用于:

  • SSL termination:处理 SSL 连接,将加密解密的工作前置到调度层

  • 会话保留(Session persistence):集中处理会话,避免切换服务器造成会话状态丢失

也就是说,多机场景下,必须要有一个负责分发/调度请求的负载均衡器,那么,接下来的问题是应该在哪一层实现负载均衡机制

二.实现思路

考虑一个 HTTP 请求从客户端到服务器的通信过程,可以简单划分为 3 个阶段:

  • 出发:客户端发出请求

  • 途中:请求经网络传输

  • 到达:服务器收到请求

对请求进行分发/调度,就是要想办法(按既定策略)改变请求的目的地,那么,至少有 3 种思路:

  • 出发前:在请求经网络传输之前,就确定最终目的地,例如 DNS 负载均衡、客户端负载均衡

  • 传输中:在网络传输的某些环节改变目的地,例如 4 层负载均衡

  • 到达后:在请求抵达服务器后,进行二次分发,例如 7 层负载均衡

三.DNS 负载均衡

为什么没有 5 层、6 层负载均衡?

  • 随机分发:采用支持多值应答路由策略的 DNS 服务

简单易用,但缺陷也很明显

  • 更新不及时:DNS 的解析结果往往会被层层缓存,记录更新无法立即生效

P.S.关于 DNS 负载均衡的更多信息,见What Is DNS Load Balancing?

四.客户端负载均衡

为什么没有 5 层、6 层负载均衡?

client-side load balancing

例如,向客户端提供服务器 IP 列表,客户端发起请求之前随机选取一个 IP,就能达到随机分发的目的

五.OSI 七层模型

请求从客户端发出之后,接着通过网络进行传输

OSI(Open System Interconnect)参考模型将网络通信分为 7 个抽象层:

自下而上,依次为:

  • 物理层(第 1 层):通过物理介质传输原始比特流,即物理信号(Symbol)

  • 数据链路层(第 2 层):提供可靠的节点间数据帧(Frame)传输机制,具体工作包括 MAC 寻址

  • 网络层(第 3 层):决定数据包(Packet)传输将采取的物理路径,支持 IP、ARP 等协议,具体工作包括 IP 寻址、路由和流量控制

  • 传输层(第 4 层):提供可靠的报文(Datagram)传输机制,支持 TCP、UDP 等传输协议,具体工作包括

  • 会话层(第 5 层):负责管理会话,以支持通过多次传输连续交换信息

  • 表现层(第 6 层):将来自网络服务的数据翻译成应用层可用的格式,具体工作包括字符编码转换、数据压缩、加密解密等

  • 应用层(第 7 层):提供高级 API 的人机交互层,应用能够通过该层访问网络服务,如资源共享、远程文件访问等

也就是说,一个 HTTP 请求必须经由这些层才能到达目标服务器,那么,理论上,在第 2~7 层中的任意一层都有机会变更终点,实现负载均衡

而常见的负载均衡机制多实现在第 4 层和第 7 层,这是为什么呢?

六.2 层、3 层负载均衡

越靠近底层,所能用来进行分发决策的信息越少,所以 2 层负载均衡的实际用途有限,常见的只有冗余网关协议(如GLBP、VRRP)和链路聚合(Link aggregation,也叫 etherchannel)等,具体见How is load balancing achieved with layer 2 devices?

七.4 层负载均衡

Layer 4 load balancing uses information defined at the networking transport layer (Layer 4) as the basis for deciding how to distribute client requests across a group of servers. For Internet traffic specifically, a Layer 4 load balancer bases the load-balancing decision on the source and destination IP addresses and ports recorded in the packet header, without considering the contents of the packet.

P.S.第 4 层负载均衡器通常是专用的硬件设备,NAT 操作可能会由专用芯片来完成

与更复杂的 7 层负载均衡相比,4 层负载均衡所需的计算更少,但在目前的硬件条件下,由此带来的性能优势已经不重要了

八.7 层负载均衡

7 层负载均衡根据应用层协议信息(如 HTTP 头)以及数据包内容信息进行分发,包括 URL、数据类型、Cookie 信息等:

Layer 7 load balancers base their routing decisions on various characteristics of the HTTP header and on the actual contents of the message, such as the URL, the type of data (text, video, graphics), or information in a cookie.

比起 4 层负载均衡,7 层负载均衡可以读取请求和响应内容,所需的计算虽然更多,但不见得比 4 层负载均衡性能更差,因为拥有更全面的上下文信息,可以在此基础上进行更聪明的全局决策(比如剔除慢速连接、重定向超时请求),甚至还能对内容进行优化(比如压缩),从而提高性能

P.S.严格来讲,7 层负载均衡应该叫 5~7 层负载均衡,因为结合了 OSI 模型中 5~7 层的相关信息:

TCP/IP model and OSI model

参考资料

  • Load balancing (computing)

  • Scalable System Design Patterns

  • What Is Layer 4 Load Balancing?

  • What Is Layer 7 Load Balancing?

  • What is the difference between layer-3 and layer-4 load balancing? Why is layer-7 LB used inspite of its drawbacks of being a bottleneck?

  • System Design, Chapter 3: Load Balancing

联系我      

如果心中仍有疑问,请查看原文并留下评论噢。(特别要紧的问题,可以直接微信联系 ayqywx


以上是关于负载均衡的详细信息的主要内容,如果未能解决你的问题,请参考以下文章

使用 Nginx 配置 TCP 负载均衡

为什么没有 5 层6 层负载均衡?

使用Nginx配置TCP负载均衡

Dubbo的容错与负载均衡

AWS考证方向:实现WEB负载均衡

LVS负载均衡之NAT模式原理及配置详细流程