大鱼游戏网页


 

大鱼游戏网页服务器集群负载均衡原理?

日期:2021-08-03 13:37:29 浏览次数:12 分类:负载均衡 来源:大鱼游戏官网 作者:大鱼游戏公司官网

  在散布式集群环境中,怎么把很多并发恳求散布到不同的服务器上的呢?是经过DNS手法仍是经过其他软件手法呢(比方web服务器软件nginx、apache)…

  当体系面对很多用户拜访,负载过高的时分,通常会运用增加服务器数量来进行横向扩展,运用集群和负载均衡进步整个体系的处理才能。

  运用DNS完成负载均衡,便是在DNS服务器装备多个A记载,不同的DNS恳求会解析到不同的IP地址。大型网站一般运用DNS作为榜首级负载均衡。

  依据IP的负载均衡,前期比较有代表性而且被很多运用的的便是LVS了。原理是LVS在Linux内核态获取到IP报文后,依据特定的负载均衡算法将IP报文转发到整个集群的某台服务器中去。

  缺陷是LVS的功用依靠Linux内核的网络功用,但Linux内核的网络途径过长导致了很多开支,使得LVS单机功用较低。

  Maglev是谷歌为自己的数据中心研制的解决计划,并于2008开端用于出产环境。在第十三届网络体系规划与完成USENIX研讨会(NSDI ‘16)上, 来自谷歌、加州大学洛杉矶分校、SpaceX公司的工程师们共享了这一商用服务器负载均衡器Maglev的详细信息。Maglev装置后不需求预热5秒内就能敷衍每秒100万次恳求令人惊叹不已。在谷歌的功用基准测验中,Maglev实例运行在一个8核CPU下,网络吞吐率上限为12M PPS(数据包每秒),假如Maglev运用Linux内核网络仓库则速度会小于4M PPS。

  无独有偶,国内云服务商UCloud进一步迭代了负载均衡产品——Vortex,成功地提高了单机功用。在技能完成上,UCloud Vortex与Google Maglev较为类似。以一台一般性价比的x86 1U服务器为例,Vortex能够完成吞吐量达14M PPS(10G, 64字节线k CPS以上,并发衔接数抵达3000万、10G线速的转发。

  从Goolge Maglev说起,怎么造一个牛逼的负载均衡? - UCloud云核算的文章 - 知乎专栏

  硬件层的比较牛逼,将4-7层负载均衡功用做到一个硬件里边,如F5,梭子鱼,听说yahoo我国!早些时分只用了两台F5做双活.

  LVS归于四层负载均衡,作业在tcp/ip协议栈上,经过修正网络包的ip地址和端口来转发, 由于功率比七层高,一般放在架构的前端.

  七层的负载均衡有nginx, haproxy, apache等, 作业在运用层,因而能够将HTTP恳求等运用数据发送到详细的运用服务器,如将图片恳求转发到特定的服务器上,总归能够做到更智能的负载均衡,这些功用在四层负载均衡上欠好完成,一般放在架构的后边方位,安置在运用服务器前面.

  从网络层看,根本是四层(TCP,UDP),和七层(HTTP,HTTPS等),根本便是解析到对应的网络层,然后依据不同特征分发。比方四层的,根本便是依据衔接信息(TCP)或许自身的特征(源IP,方针IP)等做。七层的,就能够用域名(HTTP头里的Host),URL,Cookie,Header这些来做。

  软负载均衡不会过中心署理,网络rt,功用会较好,可是一般欠好做精密的流量操控,有的计划还有延时问题。完成有DNS完成,iptables完成的计划。

  反向署理,故名思意便是经过署理来做。由于流量都会过LB,因而能够做到比较精密的流量分发(比方各种权重,七层的各种转发规矩)。害处便是署理自身或许成为瓶颈,以及过了一层署理形成网络延时的增加。而署理自身也会有必定本钱,因而完本钱钱较高。

  软件负载均衡的详细软件完成有Nginx,Haproxy,LVS,以及比较陈旧的Apache等。现在比较新的做法是用dpdk这种内核bypass计划做的负载均衡,由于绕过了linux内核比较复杂的

  网络协议栈(人家自身就不是做负载均衡的。。。),因而功用会有显着的提高(轻松跑满万兆网卡)。

  硬件负载均衡有大名鼎鼎的F5之类,这种不差钱的企业会草创。可是现在互联网公司用的越来越少。现在硬件运用较多的是运用支撑OSPF协议的交换机(根本都支撑了),经过ECMP做的负载均衡集群。这个查查云核算厂商的负载均衡文档,大部分都是用这个作为分发集群的。功用非常好(随意几十G器),稳定性也很高。便是贵,建立费事(需求机房支撑),所以不是一般用户搞的起的。不过这个也能够用软件路由器(比方quagga这种)自己建立一套软件的OSPF集群,不过稳定性和功用比较硬件的要大打折扣。

  每个云服务都会供给负载均衡服务(负载均衡服务_流量分发服务-网易云),拿来直接用就好啦,省时又省力,能够将更多精力放在中心事务上面。

  Web服务器可经过Http呼应头信息中的Location符号来回来一个新的URL,浏览器主动去拜访这个新的URL。

  完成:能够经过Web运用程序代码完成你想到的调度战略,如可依据恳求的URL的不同来进行合理的过滤和搬运。

  DNS担任将用户恳求的域名映射为实践的IP地址,这种映射能够是一对多的( DNS的A记载,用来指定域名对应的IP地址),这样DNS服务器便充任负载均衡调度器。

  DNS节省了所谓的主站点,DNS服务器现已充任了主站点的功能。常见的战略是对多个A记载进行RR(轮询)

  反向署理服务器的中心作业是转发HTTP,它作业在HTTP层面,因而,依据反向署理的负载均衡也称为七层负载均衡。

  任何关于实践服务器的HTTP恳求都有必要经过调度器;调度器有必要等候实践服务器的HTTP呼应,并将它反馈给用户。

  网络地址转化(NAT)负载均衡作业在传输层,对数据包中的IP地址和端口进行修正,然后抵达转发的意图,称为四层负载均衡。

  NAT服务器(前端服务器)有必要作为实践服务器(后端服务器)的网关,不然数据包被转发后将一去不返。

  这种方法作业在数据链路层。它修正数据包的方针MAC地址,并没有修正方针IP(由于这种转发作业在数据链路层,它对上层端口力不从心),然后发给实践的服务器,实践服务器的呼应数据直接发回给用户,而不必经过调度器。但实践服务器有必要接入外网,而且不能将调度器作为默许网关,要给实践服务器增加和调度器IP地址相同的IP别号。

  依据IP地道的负载均衡体系也能够运用LVS来完成,称为LVS-TUN。与LVS-DR不同的是,实践服务器和调度器能够不在同一个WAN网段,调度器经过IP地道技能来转发恳求到实践服务器,所以实践服务器有必要有合法的IP地址。

  依据IP地道的恳求转发机制,是将调度器收到的IP数据包封装在一个新的IP数据包中,转交给实践服务器,然后实践服务器的呼应数据包能够直接抵达用户端。

  依据IP地道的共同方法,能够将实践服务器布置在不同的地域并依据就近准则搬运恳求,比方一些CDN服务器便是依据IP地道技能完成的。

  简单说有global server load balance和local server load balance;global slb一般是跨机房跨区域的,主要在查询DNS的时分依据就近准则回来间隔client最近的机房的ip;local slb一般是布置在同一个机房或许区域内进行,能够经过修正IP,port,http header or body等方法来把流量分给多个server。

  关于SLB理论的《Load Balancing Servers, Firewalls, and Caches》

  看带宽,一般来说nginx做负载比较简单,但单台服务器的带宽究竟有限,1g了不得了,假如超越这个,就得用dns了,分片解析到一堆nginx,然后后边再挂负载均衡。在nginx盛行之前,dns解析用的较多,主要是apache太弱了,曾经相当于1级负载,现在中心加了一层nginx,2层结构,扩展更便利。别的事务也能够横向区别的,比方淘宝的图片服务器,除了负载均衡,还有cdn。

  负载均衡一般分为两种,一种是依据DNS,另一种依据IP报文。运用DNS完成负载均衡,便是在DNS服务器装备多个A记载,不同的DNS恳求会解析到不同的IP地址。大型网站一般运用DNS作为榜首级负载均衡。依据IP的负载均衡,前期比较有代表性而且被很多运用的的便是LVS了。原理是LVS在Linux内核态获取到IP报文后,依据特定的负载均衡算法将IP报文转发到整个集群的某台服务器中去。

  外网智能路由是dns依据,用户所在地解析最快dns,一般结合cdn。内网一般nginx,apache反向署理,tomat动态恳求完成负载均衡,负载均衡算法有,轮训nginx,apache轮训tomcat节点,恳求转发曩昔,tocmat核算完后,在回来给nginx、apache。url一致性hash,依据url hash值将固定url打到固定节点核算。加权轮训,功用强机器权严重,流量大些,功用弱权中小,流量小些。

  比较常用的还有 4 层负载均衡和 7 层负载均衡, 4 层开源的有 haproxy, 7 层便是 nginx 了, 它们两的原理简单说便是单点接纳流量, 然后负载均衡到多个事务服务器


大鱼游戏网页