centos7 单线多 vlan 汇聚多条宽带做负载均衡

如题,有 3 条宽带,经过 vlan 交换机,进 centos7 里面,想用 pppoe 拨号。3 条宽带分别对应交换机 vlan101 vlan102 vlan103.做了 access,接 centos7 的口做了 trunk 思路: 微信图片_20210721141828.jpg 看图 实际操作,按照 google 百度结果,配置了 vconfig,配置了对应的接口,开启了 8021q 依然不能用…. PS:交换机肯定是对的,因为我用 win10 设置网卡 vlanid 101 拨号是没任何问题得。

centos7 交换机 vlan 宽带9 条回复 • 2021-07-26 09:55:58 +08:00
dreamage 1
dreamage 18 天前
先把交换机下面 101 口接 PC 配置 IP 试试,看看 centos7 trunk 做的对吗
aijialefu 2
aijialefu 18 天前
@dreamage centos7 需要做 trunk 吗?交换机已经做了 trunk 口–>centos7 不是应该和 Windows10 一样,网卡配 101 的 vlanID,然后直接让 eth0.101 拨号吗?
aijialefu 3
aijialefu 18 天前
@dreamage 交换机应该没问题的,笔记本经过交换机,测了 Windows10 配置了 vlanID101,vlanID102 都能正常拨上号,如果交换机 101 口接 dhcp 的路由器也能正常获取 ip,所以判定交换机肯定没配置错。
现在 centos7 我按照网上的配置 vconfig 添加了 101,102 也都拨不上,eth0.101 eth0.102 也开启了 8021q
0gys 4
0gys 18 天前 via iPhone
抓包看看有没有 pppoe 的回应。
dreamage 5
dreamage 18 天前
eth0.101 eth0.102 也开启了 8021q 意思就是 trunk 模式。所以想让你在交换机接 PC,centos 用 trunk,看看是 centos trunk 的问题,还是在 trunk 下做 pppoe 的问题
aijialefu 6
aijialefu 18 天前
@dreamage 交换机接到 Windows10 (网卡直接设置 vlanID )的 pc 正常拨上号。应该是 centos7 的 vlanID 或者什么地方没配置好,centos 还需要做 trunk ???
Jessica8821 7
Jessica8821 17 天前
腾讯云轻量新老用户同价,享终身续费同价,再赠一年顶级域名,详情询:17602378821 (微信)
aijialefu 8
aijialefu 14 天前
@dreamage 老兄,搞了好几天还是搞不定,方便加个绿色软件吗?可提供一杯咖啡的费用
dreamage 9
dreamage 14 天前
我也没做过,只是提供给你一个排错的思路

究竟什么才是云计算 云计算的优势都有哪些

究竟什么才是云计算?云计算的优势都有哪些?2020年初,新型冠状病毒来袭,多省市推迟春节后开工,中央工作领导小组明确提出“支持远程办公”,阿里、华为、腾讯等各大网络办公平台需求爆发。云服务需求爆发,算力需求激增,带来服务器需求爆发。有人好奇云计算究竟是什么或者云计算究竟凭什么可以这个强大、应用如此广泛,接下来就给大家解答一下。

%title插图%num

什么是云计算?

云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。

现阶段所说的云服务已经不单单是一种分布式计算,而是分布式计算、效用计算、负载均衡、并行计算、网络存储、热备份冗杂和虚拟化等计算机技术混合演进并跃升的结果。云计算服务类型分为三类,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。这3种云计算服务有时称为云计算堆栈,因为它们构建堆栈,它们位于彼此之上。

云计算的优势是什么?

云计算的可贵之处在于高灵活性、可扩展性和高性比等,与传统的网络应用模式相比,其具有的特点是:虚拟化技术、动态可扩展、按需部署、灵活性高、可靠性高、性价比高等。

1、云计算能够让用户随时随地地处理信息,非常方便的在互联网上进行信息共享。

2、云计算能够让用户可以非常方便地使用大量的非本地计算资源或者数据资源,包括处理器和储存设备,无需自己购买这些设备或资源,而储存数据和资源的地方,我们称之为“云端”。

3、云计算特点是“弹性扩容、按需使用”,可以满足爆发性的算力需求,如特殊时期远程办公、又如微博各类明星事件。以阿里云云服务器入门级为例,支持分钟级别创建 1000 台实例,多种弹性付费选择更贴合业务现状,同时带来弹性的扩容能力,实例与带宽均可随时升降配,云盘可扩容。

了解了云计算的含义以及云计算的功能优势,很多人想要学习云计算。如果你想进入云计算行列,可以选择专业学习一下,让自己理论扎实、实战经验丰富,能够胜任企业各种需求,这是你不可错过的好选择!

 

负载均衡是什么,负载均衡技术主要应用在哪一领域?

什么是负载均衡(Load Balance)

由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。

针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。

负载均衡技术主要应用

1、DNS负载均衡:*早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。

2、代理服务器负载均衡:使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。

3、地址转换网关负载均衡:支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。

4、协议内部支持负载均衡:除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的*高层。

5、NAT负载均衡:NAT(Network Address Translation 网络地址转换)简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。

6、反向代理负载均衡:普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

7、混合型负载均衡:在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,我们可以考虑给每个服务器群采用*合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到*佳的性能。我们将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。

服务器负载均衡是什么意思?

负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外供应效力而无须其他服务器的辅助。经过某种负载分管技术,将外部发送来的央求均匀分配到对称结构中的某一台服务器上,而接收到央求的服务器独登时回应客户的央求。均衡负载可以平均分配客户央求到服务器列阵,籍此供应快速获取重要数据,解决很多并发访问效力问题。这种群集技术可以用*少的出资取得接近于大型主机的性能。

负载均衡的类型

根据DNS的负载均衡

经过DNS效力中的随机姓名解析来完结负载均衡,在DNS服务器中,可认为多个不同的地址配置同一个姓名,而*终查询这个姓名的客户机将在解析这个姓名时得到其中一个地址。因此,关于同一个姓名,不同的客户时机得到不同的地址,他们也就访问不同地址上的Web服务器,然后达到负载均衡的目的。

反向署理负载均衡

运用署理服务器可以将央求转发给内部的Web服务器,让署理服务器将央求均匀地转发给多台内部Web服务器之一上,然后达到负载均衡的目的。这种署理方式与一般的署理方式有所不同,标准署理方式是客户运用署理访问多个外部Web服务器,而这种署理方式是多个客户运用它访问内部Web服务器,因此也被称为反向署理模式。Apusic负载均衡器就归于这种类型的。

%title插图%num

据NAT的负载均衡技术

网络地址变换为在内部地址和外部地址之间进行变换,以便具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址变换网关拥有的某一外部地址时,地址变换网关能将其转发到一个映射的内部地址上。因此如果地址变换网关能将每个衔接均匀变换为不同的内部服务器地址,尔后外部网络中的计算机就各自与自己变换得到的地址上服务器进行通讯,然后达到负载分管的目的。

负载均衡服务器的好处

由于网民数量激增,网络访问路径过长,用户的访问质量简略遭到严重影响,尤其是当用户与网站之间的链路被出人意料的流量拥塞时。而这种情况经常发生在异地互联网用户急速增加的运用上。这时候,如果在效力端运用负载均衡(GSLB)技术,就可以合理分管系统负载、提高系统可靠性、支持网站内容的虚拟化。在实际运用中,许多IDC,如互联通更是选用GSLB与Cache、Mirror相结合的方法来供应网络加速效力。负载均衡效力具有如下特点:

高智能化

运用虚拟IP(VIP)地址代表方针服务器和运用,将会话分配到*高可用性的服务器,全程监控每个会话,效力恢复后自动重新挂号,并转发客户机和服务器信息包时供应全地址变换。简略有用的负载均衡算法可以配置包括循环法、*少衔接法、散列法或*少失误法等多种不同的负载均衡方法,也可以对个别服务器配置*大衔接数量阈值和加权值,以防止服务器超载。

高可靠性

架构在专用的高速骨干网之上,该骨干网络供应延迟*小的网络连通性,然后保障GSLB的功能正常发挥和高性能,远远优于根据公网的GSLB。并且,当主站点机房的Internet 出口呈现毛病时,还能将用户自动、透明地从其他分站点Internet入口导向主站点服务器。

高可用性

选用热备份方法,在*短时间内对服务器链路、交换端口和交换机进行检测和毛病转移,使运用免受毛病影响;任何一个服务器或服务器群发生毛病或阻塞,用户将被自动引导到下一个*佳备份服务器或站点,然后更进一步提高了效力和内容的可用性。

服务器负载均衡

网络的负载均衡是一种动态均衡技术,经过一些东西实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。

计算集中型的运用,比如电子商务网站,服务器计算负荷会很大;读写频繁的运用,比如网络数据库,存储系统则面临着检测;传输量大的运用,比如视频效力,数据总是无法快速传送,无法完结*好的效果;访问量大的运用,路由器与防火墙简略成为瓶颈。想要合理解决这些问题,晋级设备、改动拓扑是”笨办法”,相对巧妙的方法是选用负载均衡技术,用多个设备一起完结任务。

负载均衡技术根据现有网络结构,供应了一种扩展服务器带宽和增加服务器吞吐量的廉价有用的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。负载均衡的运用,可以有用地解决网络拥塞问题,可以就近供应效力,完结地理位置无关性(异地负载均衡)。同时,这项技术还能提高服务器的响应速度,提高服务器及其他资源的利用效率,防止网络关键部位呈现单点失效,然后为用户供应更好的访问质量。

构建负载均衡服务器之一 负载均衡与集群详解

一、什么是负载均衡

首先我们先介绍一下什么是负载均衡: 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到*佳化资源使用、*大化吞吐率、*小化响应时间、同时避免过载的目的。这是来自维基百科的介绍。负载均衡的目的,就在于平衡负载,给用户提供优质,可靠,稳定的服务。

*简单的负载均衡实例, 应用服务器并不直接与用户相连, 用户连接负载均衡服务器,然后由负载均衡服务器把消息转发给实际应用服务器。负载均衡器内部会根据应用服务器的负载情况,决定把消息转发给哪台服务器处理。同时负载均衡器还可以对用户屏蔽应用服务器失效,只要把用户的消息转发到非失效服务器即可。

提到负载均衡,就不能不介绍另外一个概念: 集群。集群就是一组部署有相同应用的服务器。例如web 服务器。用户的请求无论连接到哪台服务器上,都能得到相同的处理。这样我们实现一种服务器,可以将用户的请求根据特定规则转发到应用服务器上进行处理。就实现了完整的集群处理系统。这个服务器如果实现了后台服务器感知和配置功能,能够了解后台服务器的可用情况。就可以被称作为负载均衡器。

负载均衡在目前网络服务规模越来越庞大的情况下,成为一个大型服务器系统必须要面对的问题。随着用户和业务的增多,来自用户的访问量和数据流量不断增大,对服务器的计算能力和储存要求也在不断增加,单台服务器根本无法承担这么庞大的数据处理请求。这个时候,我们必须利用集群技术,采用一组服务器对来自用户的请求进行处理,服务器的数量要能够不断的扩充。在集群的前端,我们采用负载均衡技术,平均分散用户的请求到不同的处理服务器,并且能够在集群中某个服务失效时,即时感知,屏蔽,将消息转发到其他可用服务器上。

负载均衡分为硬件和软件:

(1).硬件LB(比较出名的)

F5 公司的 BIG-IP系列、Citrix 公司的 NetScaler系列、A10 公司的 AX系列

(2).软件LB

四层:LVS(Linux VirtualServer)注:国人开发的、七层:Nginx,HAProxy

二、集群的类型

1.scale on:向上扩展  

将服务器的内存容量调大和cpu数量增加些(简单说升级服务器硬件)

缺点:在一定的范围之内它的性能是上升的趋势,但是超出范围之后就是下降的趋势。因为随着它的cpu的个数增加我们需要给我们的cpu仲裁,而且随着cpu个数的增加资源竞争性越大。

2.scale out:向外扩展  

一台服务器应付不过来,我们就再增加一台服务器。  

优点:增减服务器很方便,而且没有向上扩展随着增加性能下降。

向外扩张的工作模式:当客户端向服务器端发送请求,服务器端只拿出来一台服务器来相应我们的客户端的请求。

(1).LB:Load Balancing:负载均衡集群

负载均衡集群中有一个分发器或者叫调度器,我们将其称之为Director,它处在多台服务器的上面,分发器根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来响应客户端发送的请求。

(2).HA:High Availability 高可用集群  

高可用集群是服务的可用性比较高,当我们某台服务器死机后不会造成我们的服务不可用。其工作模式则是将一个具有故障的服务转交给一个正常工作的服务器,从而达到服务不会中断。一般来说我们集群中工作在前端(分发器)的服务器都会对我们的后端服务器做一个健康检查,如果发现我们服务器当机就不会对其在做转发。

衡量标准:可用性=在线时间/(在线时间+故障处理时间) 99%、99.9%、99.99%、99.999%

(3).HP:Hight Performance 高性能  

高性能的集群是当某一个任务量非常大的时候,我们做一个集群共同来完成这一个任务。这种处理方式我们称为并行处理集群,并行处理集群是将大任务划分为小任务,分别进行处理的机制。一般这样的集群用来科学研究与大数据运算等方面的工作。现在比较火的Hadoop就是使用的并行处理集群。

说明:三种集群之间的区别  

负载均衡着重在于提供服务并发处理能力的集群,高可用以提升服务在线的能力的集群。高性能着重用于处理一个海量任务。

三、主要负载均衡方案介绍

1:HTTP 重定向负载均衡

这种负载均衡方式仅适合WEB 服务器。用户发出请求时,负载均衡服务器会根据HTTP请求,重新计算出实际的WEB服务器地址,通过302重定向相应发送给用户浏览器。用户浏览器再根据302响应信息,对实际的WEB服务器发出请求。HTTP重定向方案有点是比较简单,缺点是性能比较差,需要2次请求才能返回实际结果,还有就是仅适合HTTP服务器使用。

2: DNS 域名解析负载均衡

在DNS中存储了一个域名的多个主机地址,每次域名解析请求,都可以根据负载均衡算法返回一个不同的IP地址。这样多个WEB服务器就构成了一个集群,并由DNS服务器提供了负载均衡服务。DNS域名解析负载均衡的优点是由DNS来完成负载均衡工作,服务本身不用维护负载均衡服务器的工作。缺点也是,由于负载均衡服务器不是自己维护,没法做精细控制,而且DNS在客户端往往带有缓存,服务器的变更很难及时反映到客户端上。

3:反向代理负载均衡

反向代理服务器位于实际的服务器之前,他能够缓存服务器响应,加速访问,同时也启到了负载均衡服务器的效果。反向代理服务器解析客户端请求,根据负载均衡算法转发到不同的后台服务器上。用户和后台服务器之间不再有直接的链接。请求,响应都由反向代理服务器进行转发。优点是和负载均衡服务集成在一起,部署简单。缺点是所有的请求回应都需要经过反向代理服务器。其本身可能会成为性能的瓶颈。著名的 Nginx服务器就可以部署为反向代理服务器,实现WEB 应用的负载均衡。上面的三种都是工作在OSI网络模型中的应用层,我们可以统称为应用层负载均衡(七层负载均衡)。下面介绍的几种工作在OSI网络模型中的4层以及4层以下(四层负载均衡),解决方案也具有更大的通用性。

4:IP负载均衡

用户请求包到达负载均衡服务器114.100.20.200后,负载均衡服务器在操作系统内核层获取网络数据包,根据负载均衡算法获取真实后台服务器地址192.168.1.1, 然后将数据包的目标地址改为192.168.1.1, 转发给内部服务器。整个过程都在内核层进行处理。收到192.168.1.1的响应包之后,会更改响应包的SRC IP, 转发给客户端用户。采用IP层负载均衡算法,全部处理过程都在内核层(Ring 0)进行。和七层负载均衡相比,具有更好的性能。但是由于所有的响应包都要经过负载均衡服务器,负载均衡服务器的网卡带宽,很容易成为系统的瓶颈,如果能够让响应包不经过负载均衡服务器,就可以*大的提升整个负载均衡服务器的服务能力。我们下面介绍的数据链路层负载均衡,就具有这个能力。

5:数据链路层负载均衡

数据链路层负载均衡,顾名思义,就是工作在TCP/IP协议*底层的数据链路层,进行负载均衡。我们常用的以太网中,在这一层主要采用数据帧进行通信,每个网卡都具有唯一的MAC地址,数据帧用MAC地址来标识数据的来源与目的地。数据链路层负载均衡通过修改数据包的MAC地址,实现负载均衡。

这种数据传输方式又称为三角传输,负载均衡数据分发过程中不修改IP地址,只修改目的MAC地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的目的,由于实际处理请求的真实物理服务器IP和数据请求目的IP一致,不需要通过负载均衡服务器进行地址交换,可将响应数据包直接返回给用户,避免负载均衡服务器网卡带宽成为瓶颈。这种负载均衡方式又称之为直接路由方式(DR).

如上图所示,用户请求到达负载均衡服务器114.100.20.200后,负载均衡服务器将数据包的目的MAC地址更改为00:1e:ec:bc:5e:03,并不修改数据包目的IP,由于服务器集群所有服务器的虚拟IP地址和负载均衡服务器IP地址一致,因此数据可以正常传输到达MAC地址为00:1e:ec:bc:5e:03的机器上,该服务器处理完之后,将响应数据包发送到网关服务器,网关服务器直接将数据包发送给用户,响应数据不需要通过负载均衡服务器,这样就避免了负载均衡服务器成为传输瓶颈的可能。

数据链路层负载均衡是目前使用*广泛的一种负载均衡方式。著名的负载均衡开源产品LVS(Linux Virtual Server),同时支持上面的IP负载均衡和数据链路层负载均衡。是学习负载均衡技术必须了解的产品。基于数据链路层的负载均衡虽然有非常好的性能,但是对网络拓扑也有比较大的限制,负载均衡服务器和后台服务器必须处于同一网络环境中才可以。

四、负载均衡算法介绍

前面介绍的内容,解决了从用户到实际后台服务器之间的数据包发送和响应的问题。下面我们介绍选择实际后台运行服务器的具体负载均衡算法。考虑到服务请求的不同类型服务器的不同处理能力以及随机选择造成的负载分配不均匀等问题,为了更加合理的把负载分配给内部的多个服务器,就需要应用相应的能够正确反映各个服务器处理能力及网络状态的负载均衡算法。我们以LVS为参考,介绍比较经典的8种负载均衡算法。

1.轮叫调度(Round Robin)

调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载

2.加权轮叫(Weighted Round Robin)

调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求这样可以保证处理能力强的服务器能处理更多的访问流量调度器可以自动问询真实服务器的负载情况,并动态地调整其权值

3.*少链接(Least Connections)

调度器通过“*少连接”调度算法动态地将网络请求调度到已建立的链接数*少的服务器上如果集群系统的真实服务器具有相近的系统性能,采用“*小连接”调度算法可以较好地均衡负载

4.加权*少链接(Weighted Least Connections)

在集群系统中的服务器性能差异较大的情况下,调度器采用“加权*少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载调度器可以自动问询真实服务器的负载情况,并动态地调整其权值

5.基于局部性的*少链接(Locality-Based Least Connections)

“基于局部性的*少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统该算法根据请求的目标IP地址找出该目标IP地址*近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“*少链接”的原则选出一个可用的服务器,将请求发送到该服务器

6.带复制的基于局部性*少链接(Locality-Based Least Connections with Replication)

“带复制的基于局部性*少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“*小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“*小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器同时,当该服务器组有一段时间没有被修改,将*忙的服务器从服务器组中删除,以降低复制的程度

7.目标地址散列(Destination Hashing)

“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空

8.源地址散列(Source Hashing)

“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空

负载均衡服务器简介

HAProxy

HAProxy是一个特别适用于高可用环境的TCP/HTTP开源的反向代理和负载均衡软件。在7层负载均衡方面的功能
很强大(支持cookie track,header rewrite等),支持双机热备,支持虚拟主机,支持健康检查(通过patch可以
支持ECV),同时还提供直观的监控页面,可以清晰实时的监控服务集群的运行状况。同时支持Linux 2.6内核中
System Epoll,通过简化系统调用,大幅的提高了网络I/O性能。

%title插图%num

Haproxy包括以下一些特性:
根据静态分配的cookie,分配HTTP请求。
分配负载到各个服务器,同时保证服务器通过使用HTTP Cookie实现连接保持。
当主服务器宕机时切换到备份服务器。
允许特殊端口的服务监控。
做维护时通过热配置可以保证业务的连续性,更加人性化。
添加/修改/删除HTTP Request和Response头。
通过特定表达式Block HTTP请求。
根据应用的cookie做连接保持。
带有用户验证的详细的HTML监控报告。
新的1.3版本引入了frontend,backend配置段,frontend根据任意HTTP请求头内容做规则匹配,然后把请求
定向到相关的backend,通过ACL可以实现类似与F5的irules的功能。功能非常强大。目前HAProxy支持以下

5种负载均衡算法,同时也支持通过weight来实现负载比率的调整和通过cookie来实现连接保持。
1. 轮询 roundrobin
2. *少连接数 Leastconn
3. 根据原IP source
4. 根据URI uri
5. 根据URL里的参数 url_param

LVS

LVS(Linux Virtual Server)是一个开源的软件,由毕业于国防科技大学的张文嵩博士于1998年5月创立,
可以实现Linux下的简单负载均衡。
在企业的IT集群应用中,*常用的架构除了高可用集群外,还有负载均衡集群(Load Balancing)。负载均衡

集群可实现多台服务器或应用的流量均衡分配。服务器集群对外部应用及客户表现为一个虚拟的服务器,集群
内部各服务器平均地处理由外部应用及客户端所提交的业务,实现服务器之间的负载均衡处理并提供灵活的可
扩展性,当业务压力增大时,可随时加入新的服务器以提高集群的整体性能。负载均衡集群特别适用于高并发
的网络应用,如网站、文件服务器、各种要求高并发的Socket处理等。通常负载均衡集群方案大多通过专用的
硬件——负载均衡器来实现,但此类硬件产品往往价格昂贵。目前在服务器领域千兆网络已经非常普及,但是
当前中档的百兆负载均衡器依然动辄近十万元的高价,使得不少企业望而却步。
随着LVS功能的逐渐完善及性能的不断提高,当前不少硬件负载均衡器就是通过Linux内核结合LVS来实现的。

1. 技术简介

LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡的转移到不同的服
务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。
整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的
透明性、可伸缩性、高可用性和易管理性。

2. 集群采用三层结构

负载调度器(load balancer):它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而
客户认为服务器是来自一个IP地址(称之为虚拟IP地址)。
Load Balancer是整个集群系统的前端,负责把客户端请求转发到Real Server上。
Backup是备份的Load Balancer,当Load Balancer不可用时接替他,成为实际的Load Balancer。
Load Balancer通过Ldirectord监测个Real Server的健康状况,在Real Server不可用时把它从集群中剔除,恢复
时重新加入。

服务器池(server pool):是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

共享存储(shared storage):为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,
提供相同的服务。

3. LVS的IP负载均衡

可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。IP负载均衡技术
在负载均衡调度器的实现技术中效率*高。LVS集群中实现的三种IP负载均衡技术,分别是:

VS/NAT(Virtual Server via Network Address Translation):端口映射NAT,其目标是将一组服务器构成一个
高性能的、高可用的虚拟服务器。因为这种技术容易形成单点故障,从而造成网络无法访问,并且存在带宽瓶
颈。所以LVS又提供了下面两种实现。

VS/TUN(Virtual Server via IP Tunneling):通过IP隧道实现虚拟服务。

VS/DR(Virtual Server via Direct Routing):直接路由实现虚拟服务器的方法,负载能力*强,要求真实服务
器直接将结果返回到客户端。

下面是一个采用VS/DR的拓扑图。

%title插图%num

4. 调度器

调度器是服务器集群系统的唯一入口点,它可以采用IP负载均衡技术、基于内容请求分发技术或者两者相结合。
在IP负载均衡技术中,需要服务器池拥有相同的内容提供相同的服务。当客户端请求到达时,调度器只根据服务
器负载情况和设定的调度算法从服务器池中选出一个服务器,将该请求转发到选出的服务器,并记录这个调度。
当这个请求的其它报文到达时,也会被转发到前面选出的服务器。

在基于内容请求分发技术中,服务器可以提供不同的服务。当客户端请求到达时,调度器可以根据请求的内容
选择服务器执行请求。因为所有的操作都是在Linux内核空间中完成的,它的调度开销很小,所以它具有很高的
吞吐率。服务池的节点数是可变的。当整个系统收到的负载超过目前所有节点的处理能力时,可以在服务器池
中增加服务器来满足不断增长的请求负载。
对大多数网络服务来说,请求间不存在很强的相关性,请求可以在不同的节点上并行执行,所以整个系统的性
能基本上可以随着服务器池的节点数目增加而线性增长。共享存储通常是数据库、网络文件系统或者分布式文
件系统。服务器节点需要动态更新的数据一般存储在数据库系统中,同时数据库会保证并发访问时数据的一致
性。静态的数据可以存储在网络文件系统中(如NFS/CIFS),但网络文件系统的伸缩能力有限,一般来说,
NFS/CIFS服务器只能支持3~6个繁忙的服务器节点。对于规模较大的集群系统,可以考虑用分布式文件系统,
如AFS、GFS、Coda和Intermezzo等。分布式文件系统可以为服务器提供共享的存储区,它们访问分布式文件
系统就像访问本地文件系统一样,同时分布式文件系统可以提供良好的伸缩性和可用性。

5. 分布式锁管理器

当不同服务器上的应用程序同时读写访问分布式文件系统上同一资源时,应用程序的访问冲突需要消解才能使
资源处于一致状态。这需要一个分布式锁管理器(Distributed Lock Manager),它可能是分布式文件系统内
部提供的,也可能是外部的。开发者在写应用程序时,可以使用分布式锁管理器来保证应用程序在不同节点上
并发访问的一致性。
负载调度器、服务池和共享存储系统通过高速网络相连接,如100Mbps交换网络、Myrinet和Gigabit网络等。
使用高速的网络,主要为避免当系统规模扩大时互联网络成为整个系统的瓶颈。

6. 监视器

Graphic Monitor是系统管理员提供整个集群系统的监视器,它可以监视系统的状态。Graphic Monitor是基于
浏览器的,所以无论管理员在本地还是在异地都可以监视系统的状况。为了安全的原因,浏览器要通过HTTPS
(Secure HTTP)协议和身份认证后,才能进行系统监测,并进行系统的配置和管理。

7. heartbeat

高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一的系统,这样的
一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引
起服务中断。从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用。这个任务通常由一
组被称为“心跳”的代码完成。在Linux-HA里这个功能由一个叫做heartbeat的程序完成。
可用于Load Balancer主机和Backup之间failover的实现。

8. keepalived

keepalived是一个类似于layer3/4/5交换机机制的软件,也就是我们平时说的第3层、第4层和第5层交换。它的
作用是检测web服务器的状态,如果有一台web服务器死机,或者工作出现故障,keepalived将检测到,并将
有故障的web服务器从系统中剔除,当web服务器工作正常后keepalived自动将web服务器加入到服务器集群
中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
主要用于Real Server健康状态监测以及Load Balancer主机和Backup之间failover的实现。

10. IPVS

IPVS是LVS集群系统的核心软件,安装在Load Balancer上,把发往Virtual IP的请求转发到Real Server上。
IPVS的负载均衡机制有三种,就是上文提到的:
VS/NAT(Virtual Server via NAT)
VS/TUN(Virtual Server via IP Tunneling)
VS/DR(Virtual Server via Direct Routing)
IPVS的负载调度算法有十种。
IPVS(IP Virtual Server)是一种高效的Layer-4交换机,它提供负载均衡的功能。当一个连接的初始SYN报文
到达时,IPVS就选择一台服务器,将报文转发给它。此后通过检查发报文的IP和TCP报文头地址,保证此连接
的后继报文被转发到相同的服务器。这样,IPVS无法检查到请求的内容在选择服务器,这就要求后端的服务器
组提供相同的服务,不管请求被发送到哪一个服务器,返回的结果应该是一样的。但是在有一些应用中后端的
服务器可能功能不一,就要基于内容请求分发,同时基于内容请求分发可以提高后端服务器上访问的局部性。
IPVS的具体实现由ipvsadm这个程序来完成,因此判断一个系统是否具备ipvs,只需查看ipvsadm是否被安装。

9. 配置

如果LVS负载均衡器只是单台的,只需要安装LVS即可。如果LVS服务器是多台一般需要LVS+keepalived或
LVS+ldirectord+heartbeat来实现LVS负载均衡器的热备和监控应用服务器的状态。

Nginx

Nginx(engine x)是一个高性能的HTTP服务器和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Nginx因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
在高连接并发的情况下,Nginx是Apache服务器不错的代替品。Nginx在美国是做虚拟主机常用的软件平台之
一。能够支持高达50,000个并发连接数的响应,它选择了epoll and kqueue作为开发模型。
Nginx采用C进行编写,它*大的优势在于高负载情况下内存和CPU的低消耗。
Nginx安装简单,配置文件非常简洁,Bugs很少,启动很容易,并且几乎可以做到7*24不间断运行,即使运行
数个月也不需要重新启动。能够在不间断服务的情况下进行软件版本的升级。
目前Nginx使用简单的轮询算法,无法做到基本连接数计数的负载均衡。
目前中国大陆使用Nginx网站用户有:新浪、网易、腾讯。
Nginx可以和Apache结合使用,使用Nginx处理静态请求,并将动态请求反向代理给Apache处理。

 

Web负载均衡的几种实现方式

摘要:

负载均衡(Load Balance)是集群技术(Cluster)的一种应用。负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力。目前*常见的负载均衡应用是Web负载均衡。根据实现的原理不同,常见的web负载均衡技术包括:DNS轮询、IP负载均衡和CDN。其中IP负载均衡可以使用硬件设备或软件方式来实现。

什么是web负载均衡

服务器集群(Cluster)使得多个服务器节点能够协同工作,根据目的的不同,服务器集群可以分为:

高性能集群:将单个重负载的请求分散到多个节点进行处理,*后再将处理结果进行汇总
高可用集群:提高冗余单元,避免单点故障
负载均衡集群:将大量的并发请求分担到多个处理节点。由于单个处理节点的故障不影响整个服务,负载均衡集群同时也实现了高可用性。
一般提到的负载均衡(Load Balance),是指实现负载均衡集群。负载均衡实现了横向扩展(Scale Out),避免纵向的升级(Scale Up)换代。

本文中的web负载均衡,特指能够分担web请求(http,https等)的负载均衡技术。

基本原理

任何的负载均衡技术都要想办法建立某种一对多的映射机制:一个请求的入口映射到多个处理请求的节点,从而实现分而治之(Divide and Conquer)。

这种映射机制使得多个物理存在对外体现为一个虚拟的整体,对服务的请求者屏蔽了内部的结构。

采用不同的机制建立映射关系,可以形成不同的负载均衡技术,常见的包括:

DNS轮询
CDN
IP负载均衡

DNS

DNS轮询是*简单的负载均衡方式。以域名作为访问入口,通过配置多条DNS A记录使得请求可以分配到不同的服务器。

DNS轮询没有快速的健康检查机制,而且只支持WRR的调度策略导致负载很难“均衡”,通常用于要求不高的场景。并且DNS轮询方式直接将服务器的真实地址暴露给用户,不利于服务器安全。

CDN
CDN(Content Delivery Network,内容分发网络)。通过发布机制将内容同步到大量的缓存节点,并在DNS服务器上进行扩展,找到里用户*近的缓存节点作为服务提供节点。

因为很难自建大量的缓存节点,所以通常使用CDN运营商的服务。目前国内的服务商很少,而且按流量计费,价格也比较昂贵。

IP负载均衡

IP负载均衡是基于特定的TCP/IP技术实现的负载均衡。比如NAT、DR、Turning等。是*经常使用的方式。关于其原理,可以参考下面另一篇文章:lvs中的负载均衡方式。

IP负载均衡可以使用硬件设备,也可以使用软件实现。硬件设备的主要产品是F5-BIG-IP-GTM(简称F5),软件产品主要有LVS、HAProxy、NginX。其中LVS、HAProxy可以工作在4-7层,NginX工作在7层。关于三者的简单对比,可以参考这里。

硬件负载均衡设备可以将核心部分做成芯片,性能和稳定性更好,而且商用产品的可管理性、文档和服务都比较好。唯一的问题就是价格。

软件负载均衡通常是开源软件。自由度较高,但学习成本和管理成本会比较大。

F5

F5的全称是F5-BIG-IP-GTM,是*流行的硬件负载均衡设备,其并发能力达到百万级。F5的主要特性包括:

多链路的负载均衡和冗余

可以接入多条ISP链路,在链路之间实现负载均衡和高可用。

防火墙负载均衡

F5具有异构防火墙的负载均衡与故障自动排除能力。

服务器负载均衡

这是F5*主要的功能,F5可以配置针对所有的对外提供服务的服务器配置Virtual Server实现负载均衡、健康检查、回话保持等。

高可用

F5设备自身的冗余设计能够保证99.999%的正常运行时间,双机F5的故障切换时间为毫秒级。

使用F5可以配置整个集群的链路冗余和服务器冗余,提高可靠的健康检查机制,以保证高可用。

安全性

与防火墙类似,F5采用缺省拒*策略,可以为任何站点增加额外的安全保护,防御普通网络攻击,包括DDoS、IP欺骗、SYN攻击、teartop和land攻击、ICMP攻击等。

易于管理

F5提供HTTPS、SSH、Telnet、SNMP等多种管理方式,包含详尽的实时报告和历史纪录报告。同时还提供二次开发包(i-Control)。

其他

F5还提供了SSL加速、软件升级、IP地址过滤、带宽控制等辅助功能。

LVS

LVS(Linux Virtual Server, Linux虚拟服务器),是章文嵩博士开发的开放软件,目前已经集成到Linux内核中。

基于不同的网络技术,LVS支持多种负载均衡机制。包括:VS/NAT(基于网络地址转换技术)、VS/TUN(基于IP隧道技术)和VS/DR(基于直接路由技术)。

此外,为了适应不同的需要,淘宝开发了VS/FULLNAT,从本质上来说也是基于网络地址转换技术。*近还有一个基于VS/FULLNAT的DNAT模块。

不管使用哪种机制,LVS都不直接处理请求,而是将请求转发到后面真正的服务器(Real Server)。不同的机制,决定了响应包如何返回到客户端。

VS/NAT

NAT(Network Address Translation,网络地址转换)也叫做网络掩蔽或者IP掩蔽,是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程。

NAT能够将私有(保留)地址转化为合法IP地址,通常用于一个公共IP地址和多个内部私有IP地址直接的映射,广泛应用于各种类型Internet接入方式和各种类型的网络中。

通过使用NAT将目的地址转换到多个服务器的方式,可以实现负载均衡,同时能够隐藏并保护内部服务器,避免来自网络外部的攻击。商用负载均衡设备如Cisco的LocalDirector、F5的Big/IP和Alteon的ACEDirector都是基于NAT方法。

VS/NAT(Virtual Server via Network Address Translation)是基于NAT技术实现负载均衡的方法。其架构如下图所示:

%title插图%num

客户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达调度器
调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,*后将修改后的报文发送给选出的服务器。

真实的服务器处理请求,并将响应报文发到调度器。

调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口
调度器将修改过的报文发给用户
在VS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器,当真实服务器的数目在10台和20台之间时,负载调度器将成为整个集群系统的新瓶颈。大多数Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载调度器中只负责调度请求而响应直接返回给客户,将*大地提高整个集群系统的吞吐量。比如IP隧道技术。

VS/TUN

IP Tunneling(IP隧道)技术,又称为IP封装技术(IP encapsulation),是一种在网络之间传递数据的方式。可以将一个IP报文封装到另一个IP报文(可能是不同的协议)中,并转发到另一个IP地址。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。

VS/TUN(Virtual Server via IP Tunneling)是基于隧道技术实现负载均衡的方法。其架构如下图所示:

%title插图%num

VS/TUN与VS/NAT的工作机制大体上相同,区别在于:

  1. 调度器转发报文的时候进行了协议的二次封装,真实的服务器接收到请求后先进行解包。过程如下图所示:

%title插图%num

响应报文从后端服务器直接返回给客户,不需要经过调度器。

VS/DR

DR(Direct Routing, 直接路由), 路由器学习路由的方法之一。路由器对于自己的网络接口所直连的网络之间的通信,可以自动维护路由表,而且不需要进行路由计算。

直接路由通常用在一个三层交换机连接几个VLAN的情况,只要设置直接路由VLAN之间就可以通信,不需要设置其他的路由方式。

VS/DR(Virtual Server via Direct Routing)是基于直接路由实现负载均衡的方法。其架构如下图所示:

%title插图%num

跟VS/TUN方法相同,VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以*大地提高整个集群系统的吞吐量。

VS/DR要求调度器和服务器组都必须在物理上有一个网卡通过不分段的局域网相连,即通过交换机或者高速的HUB相连,中间没有隔有路由器。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。

VS/DR的整个过程与VS/TUN非常类似,不同之处在于调度器不对请求包进行二次封装,只是将目标MAC地址更改为经过调度算法选出的目标服务器的MAC地址。如下图:

%title插图%num

三种方法的优缺点比较

VS/NAT
优点

对后端服务器的操作系统无要求
只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。
支持端口映射
缺点

请求和响应报文都需要通过调度器,伸缩能力有限(10+)
要求服务器和调度器在同一个VLAN
需要将服务器的默认网关指向调度器
对于那些将IP地址或者端口号在报文数据中传送的网络服务,需要编写相应的应用模块来转换报文数据中的IP地址或者端口号
VS/TUN
优点

不需要调度应答报文,性能高
服务器和调度器可以不在同一个VLAN
支持广域负载均衡
缺点

所有的服务器必须支持“IP Tunneling”协议,要安装内核模块(比如IPIP等),配置复杂
有建立IP隧道的开销
服务器上直接绑定虚拟IP(Virtaul IP),风险很大
服务器需要联通外网
不支持端口映射
VS/DR
优点

与VS/TUN相比,没有IP隧道的开销,性能*好
缺点

要求调度器与服务器都有一块网卡连在同一物理网段(同一个VLAN)上
要求服务器网络设备(或者设备别名)不作ARP响应,或者能将报文重定向(Redirect)到本地的Socket端口上
服务器上直接绑定虚拟IP(Virtaul IP),风险很大
不支持端口映射

VS/FULLNAT

如上节所述,前面三种传统的负载均衡机制各自存在一些不足。

VS/FULLNAT是为了解决这些不足而新开发的一种转发模式。VS/FULLNAT的特点是:

调度器和服务器可以跨VLAN通信,不需要配置在同一个网段
请求和应答报文都经过调度器,服务器不需要绑定虚拟IP
VS/FULLNAT这两个特点可以简化网络拓扑,降低运维成本和风险。

如何选择

如果人少钱多,不在乎性能的损耗愿意多买服务器,同时希望*大程度较少运维的工作量,可以选择FULLNAT
很大众的方式是用DR,没有太多的优点但也没有太多的缺点
如果要搞广域网负载均衡,那就用TUN吧
个人感觉NAT不是为了互联网用的。小并发的实验性应用或者用在非web场合,比如mysql集群等。当然,如果需要端口映射,必须使用NAT方式