rss订阅 | 匿名投稿
您的位置:网站国际电子游戏首页 > 国际电子游戏的服务支持 > 正文

网络基本功(六):链聚合-国际电子游戏

作者:habao 来源: 日期:2018/3/25 21:51:51 人气: 标签:

  链聚合是在两个设备间使用多个物理链创建一个逻辑链的功能。这种方式允许物理链间共享负载。交换机网络中使用的一种链聚合的方法是etherchannel。etherchannel可以通过思科的端口聚合协议(port aggregation protocol, pagp)或链聚合协议(link aggregation protocol, lacp)来配置或协商。

  通过etherchannel,一个逻辑链的速度等于所有物理链的总和。例如,如果你用4个100 mbps的以太网链创建1个etherchannel,则etherchannel的速度是400 mbps。但是也会有一些问题,并不是在所有情况下增加的容量都确实等于物理链的速度之和。例如,四个1 gbps链组成的etherchannel,默认每一个会线 gbps。

  默认情况下etherchannel按照报文的目的mac地址,给它指定一个物理链接。这也意味着etherchannel上一个工作站与另一个服务器通信,只会使用到一条物理链。实际上,etherchannel上所有目的地为该服务器的数据流都只会走这一条物理链。也就是说,一个用户同一时刻只会得到1 gbps。这种模式也可以更改为每一个报文在不同的物理链上发送,当有多个不同的目的地址时,每一条径都可以得到利用。

  etherchannel创建的是一对一的关系,即一个etherchannel连接两个设备。可在两台交换机之间,或在一个激活了etherchannel的服务器和一台交换机之间创建一个etherchannel连接。但是,同一个etherchannel连接无法将数据流发送到两台交换机。

  如前所述,etherchannel默认情况下并不真的为各链速度之和,只是在特定的链发送特定的报文,给人的速度为所有链的速度总和。etherchannel 帧分发使用 cisco 专有的hash算法。 该算法是确定性算法; 如果使用相同的地址和会话信息,则总是散列到通道中的同一端口。 此方法可避免无序传送数据包。这一算法中很重要的一点是,并不物理链之间完全地均衡。

  该算法将目的mac地址值hash成0-7的范围。无论etherchannel中有多少链都是同样的值。每一条物理链都指定这八个值中的一个或多个,取决于etherchannel有几条链。

  有八条物理链的etherchannel,每条链指定单一值。有六条链的etherchannel,两条链指定两个值,剩下四条链指定四个值。这意味着两条链(理论上均衡分布)会收到比剩余四条链多一倍的数据流。从这张图很明显的看出,要使流量在各链间均衡的分布(理想情况下),应当设置1,2,4,或8条物理链。无论决定链的信息是什么,算法都会将链值hash为0-7。

  用户可根据需求对算法进行更改。默认行为是使用目的mac地址,但是,按照软硬件版本的不同,还可以有如下选项:

  一组用户连接到交换机a,通过etherchannel连接到交换机b。默认按照每一个报文的目的mac地址做负载均衡。但是,比较常见的情况是一台服务器的流量显著高于其他服务器。

  让我们假设该网络中email服务器接收到多于1 gbps流量,而其他服务器大约为50mbps。使用基于目的mac地址的方导致在etherchannel丢包,因为目的地为email 服务器 mac地址的报文会走同一条物理链。一条链发生过载时报文不会分散到其他链,只会丢弃。在这种一台服务器接收流量超大的情况下,目的mac地址负载均衡就不合理了。而根据源mac地址负载均衡更为合适。

  另一点需要记住的是,负载均衡算法只适用于etherchannel上发送的报文。它并没有双向功能。在交换机a上使用基于源mac地址的算法可能比较合适,但对于交换机b不一定合适,因为email服务器是使用最多的服务器。当报文从email服务器返回,源mac地址就是它自己本身。因此,如果我们在交换机b上使用基于源mac地址的负载均衡算法,就会碰到一开始同样的问题。

  这种情况下,解决方法是在交换机a使用基于源mac地址的负载均衡算法,而在交换机b使用目的mac地址的算法。如果所有服务器在一台交换机而所有用户在另一台,这一国际电子游戏的解决方案是有效的。但现实中更常见的情况是所有这些设备都连接在一台交换机上,这时就没那么走运了。

  下图显示了一个比较有趣的问题。一台服务器通过etherchannel连接到交换机a,一台nas也通过etherchannel连接到交换机a。服务器的所有文件系统都挂在到nas设备上,服务器作为一台服务超过5000人的数据库服务器负载很大。服务器和nas之间的带宽需求超过2gbps。

  目前没有解决这一问题的简单的方法。不能使用源mac地址或目的mac地址做负载均衡,因为每种情况都只有一个地址。同样的理由,也不能用源和目的mac地址结合,源和目的ip地址结合的方法。也不能基于源或目的端口号,因为一旦协商结束后,它们就不会改变。一种可能的方法是,驱动支持的情况下,改变服务器和/或nas设备,每一个link都有自己的mac地址,但是报文还是会从其中一个地址发出另一个地址接收。

  唯一的解决方法是手动负载均衡或采用更快的链接。将链分为4个1gbps,每一个有自己的ip网络,每个连接mount挂载不同的文件系统可以解决这一问题。有点太过复杂的话,直接使用更快的物理连接,如10 gbps。

  

读完这篇文章后,您心情如何?
0
0
0
0
0
0
0
0
本文网址:
网友评论