<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Supporto Tecnico Enterprise : Network Load Balancing</title><link>http://blogs.technet.com/itasupport/archive/tags/Network+Load+Balancing/default.aspx</link><description>Tags: Network Load Balancing</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Network Load Balancing – Unicast vs Multicast</title><link>http://blogs.technet.com/itasupport/archive/2008/12/29/network-load-balancing-unicast-vs-multicast.aspx</link><pubDate>Mon, 29 Dec 2008 03:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3174354</guid><dc:creator>itentblg</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3174354.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3174354</wfw:commentRss><description>&lt;p&gt;Nel &lt;a href="http://blogs.technet.com/itasupport/archive/2008/12/22/network-load-balancing-introduzione.aspx" mce_href="http://blogs.technet.com/itasupport/archive/2008/12/22/network-load-balancing-introduzione.aspx"&gt;primo post abbiamo visto le caratteristiche principali del Network Load Balancing (NLB)&lt;/a&gt;, mentre in questo approfondiremo le modalità di funzionamento: Unicast e Multicast.&lt;/p&gt;  &lt;p&gt;Come abbiamo visto nel &lt;a href="http://blogs.technet.com/itasupport/archive/2008/12/22/network-load-balancing-introduzione.aspx" mce_href="http://blogs.technet.com/itasupport/archive/2008/12/22/network-load-balancing-introduzione.aspx"&gt;precedente post&lt;/a&gt;, è fondamentale che tutti i nodi ricevano le richieste dei client destinate al Virtual IP assegnato al cluster. L’algoritmo, su ciascun host, potrà in questo modo processare le richieste e stabilire quale di questi sarà designato a gestire la richiesta, mentre gli altri semplicemente la scarteranno.&lt;/p&gt;  &lt;p&gt;Entrambi i metodi permettono di raggiungere quest’obiettivo, vediamo come funzionano.&lt;/p&gt;  &lt;h3&gt;UNICAST&lt;/h3&gt;  &lt;p&gt;Questa è la configurazione di default ed è quella che la stragrande maggioranza dei nostri clienti adotta.    &lt;br /&gt;Quando questa modalità è abilitata, un MAC Address “virtuale” rimpiazza quello della NIC, per cui sia il Virtual IP (VIP) che l' IP dedicato (DIP) verranno risolti con questo nuovo indirizzo.&lt;/p&gt;  &lt;p&gt;Il nuovo MAC Address avrà questa forma:    &lt;br /&gt;02-bf-WW-XX-YY-ZZ     &lt;br /&gt;dove WW-XX-YY-ZZ è il valore esadecimale del VIP.&lt;/p&gt;  &lt;p&gt;Al fine di distribuire le richieste per il VIP a tutti i nodi, e per evitare che l’utilizzo di un unico MAC Address per tutti gli host del cluster causi un conflitto, NLB “maschera” il MAC di tutti i pacchetti in uscita.&lt;/p&gt;  &lt;p&gt;Ogni nodo appartenente al cluster è identificato da un numero progressivo univoco configurabile da interfaccia grafica: il &amp;quot;masking&amp;quot; avviene sostituendo il secondo byte dell’indirizzo MAC virtuale con l' host ID del nodo, che sarà quindi diverso per ogni interfaccia che partecipa al cluster.&lt;/p&gt;  &lt;p&gt;Ad esempio:&lt;/p&gt;  &lt;p&gt;02-bf-0a-00-00-01 -&amp;gt; 02-09-0a-00-00-01&lt;/p&gt;  &lt;p&gt;Diamo un’occhiata ad una ARP reply di una richiesta per il MAC address del VIP:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/NetworkLoadBalancingUnicastvsMulticast_A012/image_thumb12_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image_thumb12" border="0" alt="image_thumb12" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/NetworkLoadBalancingUnicastvsMulticast_A012/image_thumb12_thumb.png" width="654" height="228" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Come possiamo vedere nella risposta, il frame ethernet riporta il MAC address “mascherato” del nodo 2, 02:&lt;strong&gt;&lt;font color="#ff0000"&gt;02&lt;/font&gt;&lt;/strong&gt;:c0:a8:00:01; da notare invece che l’ ARP header mostra il MAC address del cluster &lt;strong&gt;&lt;font color="#ff0000"&gt;02:bf&lt;/font&gt;&lt;/strong&gt;:c0:a8:00:01; ricordiamo che i router, e i client, controllano il MAC address presente nell' ARP header e non nell’ethernet header, mentre gli switch, per mappare un indirizzo ad una porta utilizzano quello contenuto nell’Ethernet header.&lt;/p&gt;  &lt;p&gt;Quando un client dovrà raggiungere il Virtual IP del cluster, questo sarà risolto correttamente con il MAC virtuale comune a tutti gli host, ma lo switch non lo potrà mappare ad alcuna porta specifica e non avremo alcun conflitto sullo switch stesso.&lt;/p&gt;  &lt;p&gt;Il vantaggio dell'Unicast è che funziona nella quasi totalità delle configurazioni senza particolari interventi sugli switch o i router.&lt;/p&gt;  &lt;p&gt;L’unica accortezza è dovuta al fatto che la condivisione dello stesso indirizzo MAC non permette la comunicazione tra host, per cui occorre avere almeno due NIC; non avendole disposizione è possibile comunque aggirare il problema impostando su ogni nodo la chiave di registro “&lt;i&gt;UnicastInterHostCommSupport&lt;/i&gt;” documentata dall'articolo &lt;a href="http://support.microsoft.com/kb/898867" mce_href="http://support.microsoft.com/kb/898867"&gt;KB898867&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Lo svantaggio principale dell’Unicast riguarda invece il flooding, che è però possibile limitare:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;creando una VLAN dedicata al cluster che comprenda solo le porte a cui i nodi sono collegati; &lt;/li&gt;    &lt;li&gt;collegando tutti i nodi ad un hub in cascata allo switch.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In questo caso il masking deve essere disabilitato da registry in modo che lo switch mappi il MAC address del cluster alla porta su cui è collegato l’hub.&lt;/p&gt;  &lt;p&gt;Il metodo indicato non è sempre praticabile per grandi realtà ma può essere una soluzione con cluster di piccole dimensioni.&lt;/p&gt;  &lt;p&gt;Il parametro da impostare nel registry è &amp;quot;MaskSourceMAC&amp;quot;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows 2000: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WLBS\Parameters &lt;/li&gt;    &lt;li&gt;Windows Server 2003: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WLBS\Parameters\Interface\&amp;lt;GUID&amp;gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;MULTICAST&lt;/h3&gt;  &lt;p&gt;In Multicast&lt;b&gt; &lt;/b&gt;mode&lt;b&gt; &lt;/b&gt;l'indirizzo MAC built-in non è disabilitato ma ne è aggiunto uno Multicast, in questo modo il VIP sarà risolto con il nuovo MAC mentre il DIP continuerà ad essere risolto con il suo MAC originario.&lt;/p&gt;  &lt;p&gt;Il MAC Address generato ha questa forma:&lt;/p&gt;  &lt;p&gt;03-bf-WW-XX-YY-ZZ&lt;/p&gt;  &lt;p&gt;anche in questo caso WW-XX-YY-ZZ è il valore esadecimale del VIP&lt;/p&gt;  &lt;p&gt;Riporto lo screenshot di una ARP reply di una richiesta per il MAC address del VIP:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/NetworkLoadBalancingUnicastvsMulticast_A012/image_thumb11_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image_thumb11" border="0" alt="image_thumb11" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/NetworkLoadBalancingUnicastvsMulticast_A012/image_thumb11_thumb.png" width="654" height="228" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nell'ARP header notiamo il MAC del cluster con la forma &lt;strong&gt;&lt;font color="#ff0000"&gt;03:bf&lt;/font&gt;&lt;/strong&gt;:c0:a8:00:01; l'indirizzo 00:15:5d:b0:d2:0a è in questo caso il MAC reale della NIC.&lt;/p&gt;  &lt;p&gt;Il traffico Multicast è generalmente di default trattato come quello broadcast e quindi inoltrato su tutte le porte dello switch a meno di configurare manualmente lo switch. In Windows 2003, abbiamo però la possibilità di abilitare il protocollo IGMP (Internet Group Management Protocol), per cui basterà abilitare &lt;a href="http://support.microsoft.com/kb/283028" mce_href="http://support.microsoft.com/kb/283028"&gt;IGMP Snooping&lt;/a&gt; sullo switch e il traffico verrà instradato correttamente in automatico, eliminando il flooding. &lt;/p&gt;  &lt;p&gt;Un ulteriore vantaggio di questa modalità risiede nel fatto che il MAC address reale viene ritenuto, permettendo di fatto il traffico tra host senza necessità di aggiungere una seconda scheda di rete.&lt;/p&gt;  &lt;p&gt;Il principale svantaggio riguarda invece l’incompatibilità con alcuni device dovuta all’associazione Unicast IP address-Multicast MAC Address. Ad esempio i router Cisco non accettano tale mappatura e per far si che tutto funzioni è necessario aggiungere delle entry statiche a mano. Sul sito di Cisco è possibile reperire alcune indicazioni, ad esempio per quanto riguarda gli switch Catalyst: &lt;a href="http://www.cisco.com/en/US/products/hw/switches/ps708/products_configuration_example09186a0080a07203.shtml" mce_href="http://www.cisco.com/en/US/products/hw/switches/ps708/products_configuration_example09186a0080a07203.shtml"&gt;Catalyst Switches for Microsoft Network Load Balancing Configuration Example&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In conclusione, entrambe le modalità presentano vantaggi e svantaggi, ma la modalità di default Unicast è quella probabilmente più immediata da implementare. Chi volesse invece sfruttare IGMP per eliminare il flooding dovrà scegliere Multicast, tenendo a mente che alcuni apparati non accettano ARP reply per Unicast IP address che contengano un Multicast Mac Address e necessitano una configurazione manuale.&lt;/p&gt;  &lt;p&gt;&lt;a class="class" href="http://blogs.technet.com/itasupport/pages/alessandro-pasero.aspx" mce_href="http://blogs.technet.com/itasupport/pages/alessandro-pasero.aspx"&gt;Alessandro Pasero&lt;/a&gt;    &lt;br /&gt;Senior Support Engineer    &lt;br /&gt;Microsoft Enterprise Platforms Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3174354" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/Windows+Team/default.aspx">Windows Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Alessandro+Pasero/default.aspx">Alessandro Pasero</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Network+Load+Balancing/default.aspx">Network Load Balancing</category></item><item><title>Network Load Balancing – Introduzione</title><link>http://blogs.technet.com/itasupport/archive/2008/12/22/network-load-balancing-introduzione.aspx</link><pubDate>Mon, 22 Dec 2008 03:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3171273</guid><dc:creator>itentblg</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3171273.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3171273</wfw:commentRss><description>&lt;P&gt;Questo è il primo di una serie di post in cui parleremo di NLB: Network Load Balancing.&lt;/P&gt;
&lt;P&gt;Nella prima parte faremo un’introduzione delle caratteristiche principali di questa tecnologia, mentre nelle successive ci focalizzeremo più in dettaglio su alcuni aspetti tecnici.&lt;/P&gt;
&lt;H3&gt;Panoramica generale&lt;/H3&gt;
&lt;P&gt;NLB è una tecnologia cluster implementata a livello di sistema operativo e disponibile in Windows Server 2000, 2003 e 2008.&lt;/P&gt;
&lt;P&gt;Lo scopo principale è fornire scalabilità e alta disponibilità a servizi e applicazioni basati su TCP/IP come Internet Information Services (IIS), Virtual Private Networking (VPN), Internet Security and Acceleration (ISA) e Terminal Services (TS).&lt;/P&gt;
&lt;P&gt;I servizi da bilanciare dovranno essere configurati in maniera identica su ogni host che partecipa al cluster NLB, e le richieste da parte dei client saranno gestite dai singoli server in base all’algoritmo di bilanciamento.&lt;/P&gt;
&lt;P&gt;Le principali caratteristiche dell’NLB in Windows Server 2003 sono:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;High availability&lt;/LI&gt;
&lt;LI&gt;Efficiency&lt;/LI&gt;
&lt;LI&gt;Scalability&lt;/LI&gt;
&lt;LI&gt;Ease of maintenance&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In Windows Server 2008 sono state &lt;A href="http://technet.microsoft.com/en-us/library/cc770983.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc770983.aspx"&gt;introdotte e migliorate molte funzionalità&lt;/A&gt; tra cui le principali sono:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Supporto a IPv6 &lt;/LI&gt;
&lt;LI&gt;Supporto a NDIS 6.0 &lt;/LI&gt;
&lt;LI&gt;Migliore integrazione con ISA Server &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;La tecnologia NLB è in grado di fornire una soluzione economica e alternativa ai bilanciatori hardware e per le sue caratteristiche, l’utilizzo ottimale avviene in presenza di scenari con un grande numero di client e servizi stateless.&lt;/P&gt;
&lt;H3&gt;Architettura&lt;/H3&gt;
&lt;P&gt;NLB è un &lt;A href="http://msdn.microsoft.com/en-us/library/aa938138.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa938138.aspx"&gt;NDIS intermediate filter driver&lt;/A&gt; inserito tra la scheda di rete fisica (NIC) e i protocolli dello stack TCP/IP come illustrato nella seguente immagine: &lt;/P&gt;
&lt;P&gt;&lt;IMG style="DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; MARGIN-RIGHT: auto" alt="Typical Configuration of a NLB Host" src="http://i.technet.microsoft.com/cc756878.ef6e48df-77de-4e4e-bb8d-9c3e1c8e58c7(en-us).gif" mce_src="http://i.technet.microsoft.com/cc756878.ef6e48df-77de-4e4e-bb8d-9c3e1c8e58c7(en-us).gif"&gt;&lt;/P&gt;
&lt;P&gt;In Windows Server 2008 il driver è stato totalmente riscritto adottando il nuovo &lt;A href="http://msdn.microsoft.com/en-us/library/ms795218.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms795218.aspx"&gt;Lightweight Filters Driver model&lt;/A&gt; (LWF) che ha portato a miglioramenti nelle performance del driver stesso, mantenendo la retro compatibilità con le versioni NDIS precedenti.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Il driver deve essere installato su ogni server che partecipa al cluster, e agirà effettivamente come un rule-based filter per il traffico in ingresso verso l’host.&lt;/P&gt;
&lt;P&gt;L'architettura così distribuita elimina la necessità di indirizzare le richieste verso un host specifico, il processo è quindi più veloce rispetto a ricevere, analizzare, riscrivere e rispedire le richieste; inoltre permette di massimizzare la disponibilità delle risorse: N host forniscono N-1 possibilità di failover mentre un classico dispacher deve essere ridondato per non creare un single point of failure.&lt;/P&gt;
&lt;P&gt;Network Load Balancing automaticamente rileva e ricompone il cluster se un server ha un malfunzionamento o è disconnesso dalla rete, ma non è consapevole dello strato software che ha sopra, per cui i servizi e le applicazioni non vengono monitorate dal driver che continuerà a fare il suo lavoro anche se una di queste ha un qualsiasi problema. Per avere un monitoring delle applicazioni e dei servizi bilanciati bisogna ricorrere a dei software di management quali il Systems Center Operations Manager.&lt;/P&gt;
&lt;H3&gt;Algoritmo&lt;/H3&gt;
&lt;P&gt;L'algoritmo mappa le richieste dei client ad uno specifico host in base ad alcuni parametri, tutti gli host eseguono quest'operazione contemporaneamente per determinare quale di loro sarà designato a gestire la richiesta mentre gli altri la scarteranno.&lt;/P&gt;
&lt;P&gt;L'algoritmo utilizzato da NLB è proprietario e quindi non è disponibile della documentazione pubblica che ne illustri il funzionamento, ma ci sono alcuni parametri che possono essere modificati per influenzare la distribuzione delle richieste:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Host priorities &lt;/LI&gt;
&lt;LI&gt;Multicast o Unicast mode &lt;/LI&gt;
&lt;LI&gt;Port rules &lt;/LI&gt;
&lt;LI&gt;Affinity &lt;/LI&gt;
&lt;LI&gt;Load percentage distribution &lt;/LI&gt;
&lt;LI&gt;Client IP address &lt;/LI&gt;
&lt;LI&gt;Client port number &lt;/LI&gt;
&lt;LI&gt;Other internal load information &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Il mapping rimarrà valido fino ad un eventuale cambiamento del numero di nodi o delle regole impostate.&lt;/P&gt;
&lt;P&gt;Una nota importante per un corretto funzionamento dell’algoritmo: è essenziale che tutti i nodi ricevano le richieste in ingresso in quanto il processo decisionale per servire i client avviene separatamente su ogni singolo host.&lt;/P&gt;
&lt;P&gt;Nei prossimi post vedremo le modalità di funzionamento Unicast e Multicast.&lt;/P&gt;
&lt;P&gt;Maggiori informazioni e approfondimenti:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc770983.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc770983.aspx"&gt;Network Load Balancing Improvements in Windows Server 2008&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc756878.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc756878.aspx"&gt;How Network Load Balancing Technology Works in Windows Server 2003&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/bb742455.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/bb742455.aspx"&gt;Network Load Balancing Technical Overview in Windows Server 2000&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.microsoft.com/downloads/details.aspx?FamilyId=37788C0D-916C-4AC7-9BB9-6A4F6862EC17&amp;amp;displaylang=en" target=_blank mce_href="https://www.microsoft.com/downloads/details.aspx?FamilyId=37788C0D-916C-4AC7-9BB9-6A4F6862EC17&amp;amp;displaylang=en"&gt;Using Clustering for a Highly Available Web Site: An Example&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc738224.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc738224.aspx"&gt;Designing Network Load Balancing&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc787524.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc787524.aspx"&gt;Deploying Network Load Balancing&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.technet.com/itasupport/pages/alessandro-pasero.aspx" mce_href="http://blogs.technet.com/itasupport/pages/alessandro-pasero.aspx"&gt;Alessandro Pasero&lt;/A&gt;&lt;BR&gt;Senior Support Engineer&lt;BR&gt;Microsoft Enterprise Platforms Support&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3171273" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/Windows+Team/default.aspx">Windows Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Alessandro+Pasero/default.aspx">Alessandro Pasero</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Network+Load+Balancing/default.aspx">Network Load Balancing</category></item></channel></rss>