集群 & 负载均衡

集群(Cluster

       指一组计算机系统构成一个松耦合的多处理器系统,它们之间经过网络实现进程间的通讯,实现分布式计算。在客户端看来就像是只有一个服务器。集群能够利用多个计算机进行并行计算从而得到很高的计算速度,也能够用多个计算机作备份,从而使得任何一个机器坏了整个系统仍是能正常运行。前端

 

集群技术的分类

  • 高可用集群(High Availability,HA:高可用的含义是最大限度地可使用。从集群的名字上能够看出,此类集群实现的功能是保障用户的应用程序持久、不间断地提供服务
  • 负载均衡集群:分为前端负载调度和后端服务两个部分。负载调度部分负责把客户端的请求按照不一样的策略分配给后端服务节点,然后端节点是真正提供应用程序服务的部分。与高可用集群不一样的是,负载均衡集群中,全部的后端节点都处于活动动态,它们都对外提供服务,分摊系统的工做负载
  • 科学计算集群(High Performance Computing,HPC高性能计算集群。这类集群致力于提供单个计算机所不能提供的强大计算能力,包括数值计算和数据处理,而且倾向于追求综合性能。HPC 与超级计算相似,可是又有不一样,计算速度是超级计算追求的第一目标。最快的速度、最大的存储、最庞大的体积、最昂贵的价格表明了超级计算的特色。

 

负载均衡(Load Balance

       负载均衡创建在现有网络结构之上,它提供了一种廉价、有效、透明的方法扩展网络设备和服务器的带宽、增长吞吐量、增强网络数据处理能力、提升网络的灵活性和可用性node

       主要的负载均衡的技术有以下这些:后端

  • DNS 负载均衡:它是最先的负载均衡技术,经过 DNS 来实现,在 DNS 中为多个地址配置同一个名字,于是查询这个名字的客户机将获得其中某一个地址,从而使得不一样的客户访问不一样的服务器,达到负载均衡的目的DNS 负载均衡是一种简单而有效的方法,可是它不能区分服务器的差别,也不能反映服务器的当前运行状态
  • 代理服务器负载均衡使用代理服务器,能够将请求转发给内部的服务器,使用这种加速模式显然能够提高静态网页的访问速度。然而,也能够考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。
  • 地址转换网关负载均衡:支持负载均衡的地址转换网关,能够将一个外部 IP 地址映射为多个内部 IP 地址,对每次 TCP 链接请求动态使用其中一个内部地址,达到负载均衡的目的。
  • 协议内部支持负载均衡:除了这三种负载均衡方式以外,有的协议内部支持与负载均衡相关的功能,例如 HTTP 协议中的重定向能力等,HTTP 运行于 TCP 链接的最高层。
  • 反向代理负载均衡:普通代理方式是代理内部网络用户访问 internet 上服务器的链接请求,客户端必须指定代理服务器,并将原本要直接发送到 internet 上服务器的链接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的链接请求,而后将请求转发给内部网络上的服务器,并将从服务器上获得的结果返回给 internet 上请求链接的客户端,此时代理服务器对外就表现为一个服务器。
  • 混合型负载均衡在有些大型网络,因为多个服务器群内硬件设备、各自的规模、提供的服务等的差别,能够考虑给每一个服务器群采用最合适的负载均衡方式,而后又在这多个服务器群间再一次负载均衡或群集起来以一个总体向外界提供服务(即把这多个服务器群当作一个新的服务器群),从而达到最佳的性能。此种方式有时也用于单台均衡设备的性能不能知足大量链接请求的状况下。

 

       负载均衡从应用的地理结构上又分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance)。服务器

  • 本地负载均衡能有效地解决数据流量过大、网络负荷太重的问题,而且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障形成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给集群内的服务器共同负担。即便是再给现有服务器扩充升级,也只是简单地增长一个新的服务器到集群中,而不需改变现有网络结构、中止现有的服务。 它关注一个地理位置上的设备群,是微观的
  • 全局负载均衡:主要用于在一个多区域拥有本身服务器的站点,为了使全球用户只以一个 IP 地址或域名就能访问到离本身最近的服务器,从而得到最快的访问速度。它关注的是一个网络的总体,是对放在不一样位置、为完成同一个任务的设备群体作负载均衡,是宏观的。全局负载均衡有如下的特色:
  1. 实现地理位置无关性,可以远距离为用户提供彻底的透明服务
  2. 除了能避免服务器、数据中心等的单点失效,也能避免因为 ISP 专线故障引发的单点失效
  3. 解决网络拥塞问题,提升服务器响应速度,服务就近提供,达到更好的访问质量

 

       负载均衡又分为硬件均衡服务器和软件均衡服务器:网络

  • 硬件服务器:就是直接购买独立的服务器做为负载均衡服务器,硬件负载均衡效率高,可是价格贵,例如,阿里云已经提供。
  • 软件服务器:使用具备代理功能的软件做为转发服务器,好比 Nginx,HAProxy,LVS 等等,软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低。

 

负载均衡的应用(以 IPTV 业务为例)

       华灯初上的时候,打开电视机,点播一个你爱看的电影,电影顷刻间就开演了!你能否想过,和你同样点播电视节目的有千家万户,为何每家每户想看的节目都能及时送到眼前呢?这是怎么作到的呢? 架构

       在电视上点播节目是一种 IPTV 业务,被点播的电影、电视剧等节目咱们称为内容。向众多用户提供内容是由一个专门的网络完成的,这个网络咱们叫它内容分发网络(CDN),咱们将这个分发网络上负责给电视传送内容的服务器叫作 CDN 节点(CDN node)。 负载均衡

       在网络建设之初、IPTV 用户还较少的时候,这个网络并不庞大,可能一台设备就能轻松处理彻底部用户的要求。然而随着业务的发展,用户量和业务量与日俱增,一台设备已经招架不住了。这时咱们就须要给这台设备找些帮手。因而咱们为这台设备“克隆”一些兄弟,而后将用户的要求分摊给全部兄弟,你们一块儿共同面对。对于这个网络来讲,你们要完成的任务便是负载,如此多队员的合做以及团队运做,便是负载均衡。 分布式

       你们合做,处理业务的能力是够了,可是任务来了后究竟由谁来处理呢?队员们会不会都不知道应该作什么?会不会都抢着作而打起来?所以必需要有一个领队(CDN Manager)来管理他们,指挥他们谁应该作什么、要达到什么样的目的。在向各队员发出指示以前,领队须要首先统一接收任务,而后分析并分解任务、挑选合适的队员(CDN node)来执行任务,再将任务安排下去由合适的队员具体来执行。在领队的合理安排下,队员们都有条不紊地执行任务,不会出现有的太闲而有的过忙的现象,“CDN 团队”融洽高效地完成了任务。 性能

       那么领队如何决定把某个任务或子任务分给哪一个队员呢?领队的决定可不是随意作出的,而是至关谨慎且科学的。领队是依据一些策略来作出决定的。这些策略包括用户的网络地址、用户的分组、先到先得规则等。根据这些策略,领队能够把一个大任务分解成多个子任务,让每一个队员执行其中一个小任务,你们完成后由领队汇总,达到完成大任务的目的,这样这个任务就会执行得很快(如分布式计算);领队也能够把一批任务中的每个任务分散到每一个队员去分头执行,由队员直接完成这些任务,这样这批任务也会执行得很快。大规模的 CDN 网络一般是一级一级、一层一层的,咱们叫它分布式网络,相邻的层级之间造成依赖和备份关系。而你点播的节目最终一般由最靠近你的CDN 节点送达你的电视机,这就是为何节目老是那么及时地开演。当最靠近你的 CDN 节点出现故障或者服务能力没法提供服务时,领队可以根据依赖和备份策略选取其余合适的节点提供服务。 阿里云

       说到这里,你们应该明白了,负载均衡就是团队运做。为了一个共同的团队目标,位于不一样位置上“队员”们在领队的统一调度下,协同工做,将大的任务相对平均地分担起来,把任务完成的更快、更好!在整个网络这个大范围内的负载均衡是全局负载均衡,局部的小范围内的负载均衡是本地负载均衡。

 

       单兵做战到团队做战:

       4bed2e738bd4b31c64ba8d0e84d6277f9f2ff885

 

       全局负载均衡分布式架构(网络规模大):

       f2deb48f8c5494ee956d16ac2ef5e0fe99257e33

 

       大规模网络中,局部的本地负载均衡:

       d009b3de9c82d158b57e4004830a19d8bd3e4282