本文也發表在自己的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部門在公司的高級設備中進行配置,所以不建議使用。
參考文檔:
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