q528 发表于 2018-6-21 12:48:45

关于Windows Network Load Balance

  本文也发表在自己的blog网站:http://itguide.cc
  
  
  单网卡单播:Cluster的MAC地址被分配给主机的网卡,主机网卡本身的MAC地址无法被使用;
  特点:

[*]  网卡自己的MAC地址被禁用。cluster的MAC地址自动替换了网卡本身的MAC地址;
[*]  网卡变成了cluster业务专用网卡;
[*]  主机本身的网卡的IP地址和cluster的IP地址都被解析成cluster的MAC地址;
[*]  由于所有cluster主机都使用同一个MAC地址(cluster的MAC地址),所以cluster主机之间无法通信。但这些主机都可以处理来自子网外的通信请求,也能处理同子网的携带其他不同MAC地址的报文。
  单网卡组播:cluster的MAC地址被分配给主机的网卡,单主机本身网卡的内置MAC也被保留使用,两个MAC地址都再用。

[*]  网卡本身的MAC地址也被保留;
[*]  cluster的IP地址解析成cluster的MAC地址;
[*]  网卡本身的IP地址解析成网卡本身的MAC地址;
  重点:

[*]  NLB不支持unicast/multicast混合在同一个cluster中。同一个cluster中的网卡只能全都工作在同一个模式下,不论哪种cluster,对网卡的数量都没有限制;
[*]  unicast是默认的NLB形式;
[*]  如果启用了multicast,单网卡可以处理client-to-cluster traffic和机器本身的traffic。
[*]  multicast支持,不论有几个网卡,它都没有单网卡的那几个限制。
  多网卡单播:unicast模式下cluster的MAC地址被分配给用于cluster的NIC适配器,cluster适配器的本身的MAC地址不被使用。因为这个原因,主机之间的通信(并不是说NLB的心跳traffic)无法通过clusteradapter进行。
  用于cluster adapter的NIC:

[*]  cluster的IP地址解析成adapter的Cluster MAC地址(NLB自动生成);
[*]  如果cluster adapter的专用IP地址被使用了,这个IP地址也会解析成Cluster MAC;
[*]  Cluster adapter使用virtual IP地址处理client-to-cluster的流量。同一个cluster的host-to-host流量无法通过这个adapter,因为每个主机的MAC地址在cluster中是相同的。参考ARP https://technet.microsoft.com/en-us/library/cc758357(v=ws.10).aspx
  用于管理的NIC:

[*]  NLB不使用这个adapter;
[*]  这个adapter的IP地址解析成adapter本身(built-in)的MAC地址;
[*]  这个adapter处理本机业务的traffic,包括子网内部和外部的流量;
  多网卡组播:Cluster的MAC地址被分配给clusteradapters,但cluster adapter本身(built-in)地址被保留,因此两个地址都被使用,cluster MAC地址用于处理cluster数据,本身的MAC地址用于处理本机业务数据,这就是和unicast的区别。
特性:

[*]  Adapters used as cluster adapters

[*]  Cluster IP地址解析成cluster的MAC地址(NLB自动生成);
[*]  如果cluster adapter的专用IP地址在使用,这个IP地址解析成adapter的本身的(built-in)MAC地址;
[*]  multicast模式下,cluster adapter可以处理client-to-cluster的流量,也可以处理主机本身的流量,包括所有流入流出本子网的traffic;

[*]  用于管理的adapter:

[*]  NLB不使用这个adapter;
[*]  adapter的IP地址解析成adapter本身的MAC地址;
[*]  这个adapter可以被用于处理本机业务流量,包括流入流出该子网的流量。

注意事项:

[*]  NLB不支持在同一个cluster混合unicast/multicast。在各自的cluster里,所有的adapters必须只能工作在unicast或者是multicast;
[*]  不管unicast或者是multicast,对网卡的数量没有限制,不同的主机可以有不同数量的网卡;
[*]  NLB负责解析clusterIP地址成它关联的multicast cluster的MAC地址,这是在路由器的ARP完成的。在少数情况下,一些路由器可能不支持使用multicast MAC地址。在这种情况下,cluster无法被从本地子网外访问到。为了纠正这个问题,你必须在router上建立一个静态的ARP。着需要参考你的路由器的文档,看看如何配置;
[*]  如果你禁用了multicast支持(导致了主机变成unicast模式),NLB自动instructs驱动,属于cluster adapter来覆盖adapter的自身的,内置的network address,改变它的MAC地址成cluster的MAC地址。这就是用于所有cluster主机的地址。你不需要手动配置network adapter来识别这个地址。(注意一些网卡不支持更改MAC地址,如果遇到这种情况,你得换个支持更改MAC地址的网卡才行)
[*]  Multicast支持默认是不启用的。如果你不想使用多播支持,建议你考虑使用至少2个网卡(1个专门用来处理cluster,一个专门用于本机的数据流量)以达到优化性能及网卡的能力被充分利用
  单网卡在Unicast情况下的限制:
  本来要去往某个节点的流量被发送给所有cluster的主机节点,造成很大浪费;
  更重要的是,如果你的主机只有一个网卡,并且在unicast模式下,你无法使用NLB manager来管理和配置其他的主机;(实际测试过城中发现,单网卡形况下,使用NLB manager会有警告提示。)
  这些限制可能对很多情况下不太重要。如果cluster主机只能从outside访问到(因为两个主机之间无法通信),非cluster的流量又不是很频繁(例如,某节点的网站夜间更新通常很少,)这种情况下,使用单网卡也足够了。另外,单网卡肯定好用。

如何鉴别Cluster的mode?

[*]  通过检查ARP:Ping cluster的IP地址,Ping cluster的网卡的IP地址,检查本机的ARP信息,看看cluster的IP的MAC地址和网卡的MAC地址是否相同,相同则为unicast。
[*]  使用 "nlb" 或 "wlbs"命令:如果MulticastSupportEnable的状态为enabled就是multicast,否则就是unicast;
  总结:

[*]  不管单播还是组播,对网卡数量都没有要求,1个就够了;
[*]  如果可以的话,每个机器使用多个网卡还是好的,主要用途是将cluster业务用专门的网卡,本机数据业务用本机专门的网卡走;
[*]  组播的优势比单播的多一些;
[*]  单播单网卡情况下,cluster的主机之间是无法进行数据通信的,所以不要测试A机器ping B机器的IP,通还是不通,意义都不大;
[*]  如果你的cluster主机之间没啥必要的通信,就推荐你用单网卡unicast;
[*]  如果你想用multicast,那么最好用IGMP multicast,这能降低广播风暴;
[*]  如果你喜欢NLB最佳实战,那么多网卡是首选,unicast或者multicast都可以,但是不管你怎么搭配,请你自己一定理解什么是unicast/multicast,他们优缺点都是什么。
[*]  如果要使用multicast进行测试,那么跨网段的情况下,默认是不能访问到NLBcluster资源的,需要IT部门在公司的高级设备中进行配置,所以不建议使用。
  
  参考文档:

[*]  https://technet.microsoft.com/en-us/library/cc785431(v=ws.10).aspx
[*]  https://technet.microsoft.com/en-us/library/cc784524(v=ws.10).aspx
[*]  Limit switch port flooding: https://technet.microsoft.com/en-us/library/cc737869(v=ws.10).aspx
[*]  NLB requirement: https://technet.microsoft.com/en-us/library/cc785431(v=ws.10).aspx
[*]  NLB Best practice: https://technet.microsoft.com/en-us/library/cc740265%28v=ws.10%29.aspx
页: [1]
查看完整版本: 关于Windows Network Load Balance