本文也发表在自己的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)无法通过cluster adapter进行。
用于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地址被分配给cluster adapters,但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负责解析cluster IP地址成它关联的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进行测试,那么跨网段的情况下,默认是不能访问到NLB cluster资源的,需要IT部门在公司的高级设备中进行配置,所以不建议使用。
参考文档:
Limit switch port flooding:
NLB requirement:
NLB Best practice: