免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1024 | 回复: 0
打印 上一主题 下一主题

Linux Ethernet Bonding Driver HOWTO (四) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-12 16:59 |只看该作者 |倒序浏览

11. 配置Bonding用于高可靠性(High Availability,缩写为HA)
==========================================================
  High Availability指提供最大网络可靠性的配置,通过在主机和其他设备间的冗余或备份设备、链路或交换机,目标是提供最大的网络链接可靠性(要求网络一直可用),尽管其它的配置可能提供更高的吞吐量(性能)。
11.1 单交换机拓扑下的HA
---------------------------------
  如果两个主机(或一个主机和一个交换机)通过多个物理链路直连,想要优化最大带宽就不具有可行性。在这种情况下,只有一个交换机(或对端),如果它坏了,那没有替代的链接来接替。此外,bonding负载均衡模式支持成员的链路监控,因此如果单个链路坏了,负载将会被均衡到剩余的设备。
  参看第12节“配置Bonding用于最大吞吐量”,如果你想配置只有一个对端设备的bonding。
11.2 多交换机拓扑下的HA
---------------------------------
  如果有多个交换机,bonding和网络的配置戏剧性的发生了变化。在多交换机拓扑下,在网络可靠性和可用贷款间存在着平衡。
  如下是一个简单的网络,配置用于最大化网络可靠性:
                |                                     |
                |port3                           port3|
          +-----+----+                          +-----+----+
          |          |port2       ISL      port2|          |
          | switch A +--------------------------+ switch B |
          |          |                          |          |
          +-----+----+                          +-----++---+
                |port1                           port1|
                |             +-------+               |
                +-------------+ host1 +---------------+
                         eth0 +-------+ eth1
  在该配置中,两个交换机间存在着一个链路(交换机间链路,ISL,Inter Switch Link),并存在多个连到外部的端口(每个交换机上的"port3"),从技术角度看,把它扩充到3个或更多交换机没有任何问题。
11.2.1 多交换机拓扑下的HA模式选择
---------------------------------
  在如上例所示的拓扑中,可用于优化可靠性的bonding模式只有active-backup和broadcast模式,其他的模式要求在同一个对端断开的所有链路能够有特定的行为。
active-backup: 通常是推荐的模式,尤其是如果交换机间存在ISL并能一起很好的工作。如果一个交换机被配置为备份交换机(比如,有更低的处理能力,更高的费用等等),则可以使用primary选项来保证期望的链路在它可用时总是用它。
broadcast:该模式是一种特定目的的模式,只在特定的需求下才需要。比如,如果两个交换机没有互联(没有ISL),而且它们连接的网络是完全独立的,在这种情况下,如果需要某些特定的单向流量能够都到达这两个独立的网络,那可能需要broadcast模式。
11.2.2 多交换机拓扑下的HA链路监控选择
---------------------------------
  链路监控的选择根本上是依赖于你的交换机,如果交换机可以在发生异常时可靠地断开端口,则MII或ARP监控都是可以的。比如,在上例中,如果"port3"在远端的链路异常,由于MII监控没有直连所以无法监测到,而ARP监控如果想监测到必须要配置为port3的远端的目标地址,这样如果没有路由器的支持,要想监测这一类错误时不可能的。
  一般来说,在多交换机拓扑下,ARP监控可以在监测端到端连接错误(可能由任何独立部件在传输流量方面的异常导致)方面提供更高层的可靠性。此外,ARP监控应该被配置为多个目标(至少网络里的每个交换机都有一个),这可以保证不管哪个交换机可用,ARP监控总是有个合适的目标来查询。
12. 配置Bonding用于最大吞吐量(Maximizing Throughput,缩写为MT)
===============================================================
12.1 单交换机拓扑下的最大吞吐量
---------------------------------
  在单交换机配置情况下,最好的最大化吞吐量的方法依赖于应用程序和网络环境,不同的环境下,不同的负载均衡模式由不同的优点和缺点,如下文所述。
  对这些讨论,我们将把拓扑分为两类,根据大部分流量的目的地,我们把拓扑分为“网关”(gatewayed)和“本地”(local)配置。
  在网关型配置下,“交换机”主要时担当一个路由的功能,主要的网络流浪通过这个路由器到达其他网络,如下图所示:
     +----------+                     +----------+
     |          |eth0            port1|          | to other networks
     | Host A   +---------------------+ router   +------------------->
     |          +---------------------+          | Hosts B and C are out
     |          |eth1            port2|          | here somewhere
     +----------+                     +----------+
  路由器可能是一个专用的路由器设备,也可能是其它充当网关的主机。对我们的讨论,重要的一点是:从Host A来的大部分网络流量将会在到达目的地前先通过路由器到其它的网络。
  在路由器网络配置情况下,尽管Host A可能和很多其它系统通信,但所有流量将通过本地网络中的一个对端(路由器)来发送和接收。
  要说明的是:配置bonding的目的,对于两个系统通过多个物理链接直连,和网关型配置其实是一样的,在这种情况下,碰巧所有流量都通向“网关”自身,而不是网关外的其它网络。
  在本地型配置情况下,“交换机”主要充当交换的功能,主要的流量通过这个交换机到达同一个网络上的其它工作站,下图是一个示例:
    +----------+            +----------+       +--------+
    |          |eth0   port1|          +-------+ Host B |
    |  Host A  +------------+  switch  |port3  +--------+
    |          +------------+          |                  +--------+
    |          |eth1   port2|          +------------------+ Host C |
    +----------+            +----------+port4             +--------+
  同样的,交换机可以是一个专用的交换机设备,也可以是其它充当网关的主机。对我们的讨论,重要的一点是:从Host A来的大部分流量将会到达同一本地网络的其它主机(本例中的Host B和Host C)。
  总结一下,在网关型配置下,来自和发自bond设备的流量将会到网络上的同一个对端MAC地址(网关本身,比如路由器),而不管它的最终目的地是什么。在本地型配置下,流量直接来自或发往最终目的地,这样,每个目的地(Host B,Host C)将会通过它们独立的MAC地址被指定。
  网关型和本地型网络配置的差别很重要,是因为很多负载均衡模式使用本地网络源和目的地的MAC地址来做处负载均衡的决定。每种模式的具体行为在下文描述:
12.1.1 单交换机拓扑下的MT Bonding模式选择
-----------------------------------------
  这个配置是最容易配置和理解的,尽管你不得不决定哪种bonding模式对于你的需求最适合。每种模式的折衷如下所示:
balance-rr: 该模式可以允许某个单一的TCP/IP连接在多个接口上分割(stripe)流量,而且该模式是唯一支持该功能的模式。因此它也是唯一的允许单个TCP/IP流利用多于一个的接口来提高吞吐量的模式。然而这导致一定的开销,分割通常导致对端系统接收数据时乱序,从而导致TCP/IP拥堵控制机制发生作用,通常通过重发分段。
  当然也可以调整TCP/IP的拥塞限制,通过修改sysctl的net.ipv4.tcp_reordering参数即可。通常的
缺省值时3,最大可用值为127。对于一个四个接口的balance-rr模式的bond,单个TCP/IP流不应期望使用超过大概2.3个接口来提高吞吐量,即使调整过tcp_reording的值。
  请注意,这里乱序传递只在发送方和接收方都利用多个接口bond时发生。考虑这样的配置,balance-rr模式bond流入单个高容量网络通道(比如,多个100Mb/sec以太网通过具备etherchannel功能的路由器流入一个千兆以太网),这时,来自多个100Mb设备的流量发往连接着千兆设备的目的地时,将意识不到数据包的乱序。然而,来自千兆设备发往多个100Mb设备的流量,可能看到也可能看不到流量乱序,这依赖于交换机的均衡策略。很多交换机不支持分割流量的模式(而是基于IP或MAC级地址来选择一个端口),对于这些设备,从千兆设备流向多个100Mb设备时只会利用一个接口。
  如果你想使用TCP/IP以外的协议,比如UDP,而且你的应用能够容忍乱序投递,那么这种模式可以为单个流数据包提供线性性能增长,随着加入到bond里的接口数量。
  该模式要求交换机有适当的端口配置为“etherchannel”或“trunking”。
active-backup: 对于active-backup模式,在这种网络拓扑下使用并没有什么特别的好处,因为所有的未激活备份设备都作为primary连接到同样的对端。这种情况下,一种负载均衡模式(利用链路监控)将提供同样的网络可靠性,但增加了可用带宽。此外,active-backup模式不要求交换机的任何配置,因此如果当前硬件不支持任何负载均衡模式时,该模式就很有用了。
balance-xor: 该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置(上文曾提及)下可以工作得很好。如果所有流量是通过单个路由器(比如上文提及的“网关”型网络配置),那该模式就不是最好的选择。和balance-rr一样,交换机端口需要能配置为“etherchannel”或“trunking”。
broadcast: 和active-backup类似,在这种网络拓扑下该模式没有什么特别的优点。
802.3ad: 对于这种网络拓扑,该模式是一个很好的选择。802.3ad模式是IEEE标准,因此所有实现了802.3ad的对端都可以很好的互操作。802.3ad协议包括聚合的自动配置,因此只需要很少的对交换机的手动配置(要指出的是,只有某些设备才能使用802.3ad)。802.3ad标准也要求帧按顺序(一定程度上)传递,因此通常单个连接不会看到包的乱序。802.3ad也有些缺点:标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。
  此外,linux bonding的802.3ad实现通过对端来分发流量(通过MAC地址的XOR值),因此在“网关”型配置下,所有外出(Outgoing)流量将使用同一个设备。进入(Incoming)的流量也可能在同一个设备上终止,这依赖于对端802.3ad实现里的均衡策略。在“本地”型配置下,路两将通过bond里的设备进行分发。
  最后,802.3ad模式要求使用MII监控,因此,ARP监控在该模式下不可用。
balance-tlb: balance-tlb模式通过对端均衡外出(outgoing)流量。既然它是根据MAC地址进行均衡,在“网关”型配置(如上文所述)下,该模式会通过单个设备来发送所有流量,然而,在“本地”型网络配置下,该模式以相对智能的方式(不是balance-xor或802.3ad模式里提及的XOR方式)来均衡多个本地网络对端,因此那些数字不幸的MAC地址(比如XOR得到同样值)不会聚集到同一个接口上。
  不像802.3ad,该模式的接口可以有不同的速率,而且不需要特别的交换机配置。不利的一面在于,该模式下所有进入的(incoming)流量会到达同一个接口;该模式要求slave接口的网络设备驱动有某种ethtool支持;而且ARP监控不可用。
balance-alb: 该模式有着所有balance-tlb有的功能(以及局限性),同时,它还会均衡从本地网络对端进入的(incoming)流量(如上文的Bonding模块选项一节所述)。
  该模式唯一额外的不利在于,网络设备驱动必须支持在设备启动时改变硬件地址。
12.1.2 单交换机拓扑下的MT链路监控
---------------------------------
  链路监控的选择很大程度上依赖于你选择的bond模式。最先进的负载均衡模式不支持ARP监控,因此就只能使用MII监控(而这不能提供如ARP监控那样的高阶端到端确认)。
12.2 多交换机拓扑下的最大吞吐量
---------------------------------
  可能利用多个交换机来优化吞吐量,当它们并行地配置为两个或更多系统中间的一个独立的网络,
例如:
                       +-----------+
                       |  Host A   |
                       +-+---+---+-+
                         |   |   |
                +--------+   |   +---------+
                |            |             |
         +------+---+  +-----+----+  +-----+----+
         | Switch A |  | Switch B |  | Switch C |
         +------+---+  +-----+----+  +-----+----+
                |            |             |
                +--------+   |   +---------+
                         |   |   |
                       +-+---+---+-+
                       |  Host B   |
                       +-----------+
  在这种配置情况下,交换机间相互隔离。应用这种拓扑的原因可能是,对于一个有很多主机的独立网络(比如配置为高性能的Cluster系统),使用多个小型交换机可以比使用一个大型交换机要节省费用,比如,在有24个主机的网路里,三个24口交换机会比一个72口交换机的便宜得多。
  如果要访问到这个网络外面,可以使用一个独立的主机,它有一个附加的网路设备连接到外部网络,这个主机可以充当一个网关的作用。
12.2.1 多交换机拓扑下的MT Bonding模式选择
-----------------------------------------
  实际操作时,典型的应用于这种类型的bonding模式时balance-rr。历史上,在这种网络配置下,通
常的关于投递数据包乱序的警告可以通过使用某些网络适配器解决,这些适配器不进行任何包组合(通过使用NAPI,或者因为设备本身只在某些数量的包到达后才产生中断)。当使用这个功能时,balance-rr模式允许两个主机间的独立连接有效地利用多于一个接口的带宽。
12.1.2 多交换机拓扑下的MT链路监控
---------------------------------
  同样的,在实际操作中,对于这种配置最常使用MII监控,由于效率相对于可用性更优先。ARP监控在这种拓扑下也可以工作,但由于它的侦测数量随着引入系统的数量而增长(记得网络里的每个主机都需要配置),因此它相对于MII监控的优点就不值一提了。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19489/showart_1860538.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP