<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Building NLB Exchange 2010 RTM CAS / HT Servers (Hyper-V) – Part 1</title>
	<atom:link href="http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/</link>
	<description>Notes from the lab and the field</description>
	<lastBuildDate>Tue, 13 Dec 2011 17:02:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: boxing_surfer</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-48</link>
		<dc:creator><![CDATA[boxing_surfer]]></dc:creator>
		<pubDate>Sun, 10 Jul 2011 18:33:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-48</guid>
		<description><![CDATA[Hi Wilhelm

i made the same mistake in my interpretation. When i did my first NLB in production I learned some things. Its worth considering the following points:

First - and most importantly - there is not really an idea of a heartbeat NIC in NLB the way you are thinking of it. What you have in your head is something that exists in &#039;Windows Failover Clustering&#039; not NLB, and its in a Failover Clustering setup where we would typically create a seperate hearbeat network.

I think that its an easy mistake to make. when we see NLB hosts configured with multiple NICs we naturally assume that one of them is like a heartbeat NIC. But actually thats not the case.  The reason we have multiple NICs is not for any &#039;heartbeat&#039; reason


Here&#039;s the rub: 

In an NLB host with 2 NIC&#039;s we usually have the NLB Service bound to only 1 NIC. Its only this NIC that the NLB driver is bound. Its only this NIC that participates in NLB.  All of the NLB related function happens on this NIC. No NLB related communication happens on the other NIC to which the NLB driver is NOT bound 

The NLB NIC is also the NIC where the &#039;cluster&#039; Virtual IP is bound. So this is the NIC that receives our application traffic. This is the NIC we chose when we first create an NLB cluster in the NLB Manager.

Any other NIC&#039;s in the machine are not participating in NLB at all. They are there just like normal NIC&#039;s
A NIC that doesnt have the NLB service bound to it is not aware of NLB, 
A NIC that doesnt have the NLB service bound to it doesnt  &#039;converge&#039; with any other NIC, and does not send any &#039;heartbeat&#039; traffic

This is confirmed in MS documentation



So - you ask why do we have a second NIC?

The reason why we have 2 NIC&#039;s is usually to seperate &#039;application&#039; traffic (traffic we want to load balance) from &#039;host&#039; or &#039;administration&#039; traffic or other traffice that we know we dont want to load balance. This includes traffic where the 2 hosts need to talk to each other,or talk to anything else on the LAN - like regular individual windows hosts. 

You see, there is a big processing overhead associated with receiving data on an NLB NIC  Any packet received on an NLB enabled NIC has to be processed by the NLB driver. So if we receive anything on an NLB NIC the driver will have to process it and figure out if its something that NLB interested in or not. 

Typically we dont want anything other than the application we are trying to load balance to come in on an NLB NIC. We certainly dont want &#039;AD Domain&#039; traffic or maybe &#039;SQL&#039; traffic or &#039;RDP&#039; or anything like that going on to an NLB address. We dont want any of the regular windows chit chat coming in through this NIC either. This bad for 2 reasons

1) becuase - depending on if we are running unicast of multicast mode - the hosts might not be distinguishable from each other at Layer 2 (MAC address) on the NLB NIC - so we may not be able to know which host we are reaching.   and....
2) because every single one of those packets will have to be processed by the NLB driver on either or both of the hosts.



In my environment we only use NLB for INTRANET applications. Both NICs are connected to the the same switch, but NLB and non NLB NICS are on different VLANs. There are so many difrerent ways you can set this up. There is not 1 correct way. It depends what you are trying to do.

I do this: 

-&gt; NLB NICS are connected to switchports that are set on a dedicated VLAN (example. 10.0.20.0 /28)
-&gt; non NLB NICS are connected to switchports that are set on a seperate VLAN (example 10.0.50.0 /25)
-&gt; Cluster IP address setup on the NLB NICs in the NLB IP subnet and NOT the regular &#039;subnet&#039; 
     (ivorb&#039;s great guide above is very misleading in this step (see my comment above)
-&gt; NLB NIC&#039;s are NOT configured with any default gateway or DNS servers
-&gt; non NLB NIC&#039;s have the Default Gateway and DNS (example - core router on 10.0.50.1)
-&gt; The DNS name of the application i want load balanced is manually registered in DNS with the NLB cluster IP address only.
-&gt; DNS dynamic registration is turned off on the NLB NICS 
-&gt; enable IP forwarding from the NLB NIC&#039;s to the non NLB NIC with &#039;netsh interface ipv4 set int &quot;&quot; forwarding=enabled&#039; so that replies to NLB traffic can be sent out on a different NIC to that which it was received on.

With the above setup, my NLB NICS are effectively &#039;receive only&#039; NIC&#039;s and they only receive application traffic that i want to load balance. Any and all traffic thats sent from any NLB host is sent via the other non NLB NIC. Likewise the hostnames are registered on the non NLB NICs, so anything thats intended for the host name (rather than the application) comes in to a refular NIC.

This works pretty well for me.


I quote from this blog post which explains it quite well:

http://blogs.technet.com/b/clint_huffman/archive/2007/10/08/an-optimal-network-load-balancing-nlb-configuration.aspx

&quot;[Windows Failover Clustering].. uses a backend &quot;heartbeat&quot; network used to determine if their partner server is alive or down. NLB also has a &quot;heartbeat&quot;, but it&#039;s heartbeat is really just broadcast TCP/IP packets on the NLB enabled network... let me repeat... on the NLB enabled network.....&quot;]]></description>
		<content:encoded><![CDATA[<p>Hi Wilhelm</p>
<p>i made the same mistake in my interpretation. When i did my first NLB in production I learned some things. Its worth considering the following points:</p>
<p>First &#8211; and most importantly &#8211; there is not really an idea of a heartbeat NIC in NLB the way you are thinking of it. What you have in your head is something that exists in &#8216;Windows Failover Clustering&#8217; not NLB, and its in a Failover Clustering setup where we would typically create a seperate hearbeat network.</p>
<p>I think that its an easy mistake to make. when we see NLB hosts configured with multiple NICs we naturally assume that one of them is like a heartbeat NIC. But actually thats not the case.  The reason we have multiple NICs is not for any &#8216;heartbeat&#8217; reason</p>
<p>Here&#8217;s the rub: </p>
<p>In an NLB host with 2 NIC&#8217;s we usually have the NLB Service bound to only 1 NIC. Its only this NIC that the NLB driver is bound. Its only this NIC that participates in NLB.  All of the NLB related function happens on this NIC. No NLB related communication happens on the other NIC to which the NLB driver is NOT bound </p>
<p>The NLB NIC is also the NIC where the &#8216;cluster&#8217; Virtual IP is bound. So this is the NIC that receives our application traffic. This is the NIC we chose when we first create an NLB cluster in the NLB Manager.</p>
<p>Any other NIC&#8217;s in the machine are not participating in NLB at all. They are there just like normal NIC&#8217;s<br />
A NIC that doesnt have the NLB service bound to it is not aware of NLB,<br />
A NIC that doesnt have the NLB service bound to it doesnt  &#8216;converge&#8217; with any other NIC, and does not send any &#8216;heartbeat&#8217; traffic</p>
<p>This is confirmed in MS documentation</p>
<p>So &#8211; you ask why do we have a second NIC?</p>
<p>The reason why we have 2 NIC&#8217;s is usually to seperate &#8216;application&#8217; traffic (traffic we want to load balance) from &#8216;host&#8217; or &#8216;administration&#8217; traffic or other traffice that we know we dont want to load balance. This includes traffic where the 2 hosts need to talk to each other,or talk to anything else on the LAN &#8211; like regular individual windows hosts. </p>
<p>You see, there is a big processing overhead associated with receiving data on an NLB NIC  Any packet received on an NLB enabled NIC has to be processed by the NLB driver. So if we receive anything on an NLB NIC the driver will have to process it and figure out if its something that NLB interested in or not. </p>
<p>Typically we dont want anything other than the application we are trying to load balance to come in on an NLB NIC. We certainly dont want &#8216;AD Domain&#8217; traffic or maybe &#8216;SQL&#8217; traffic or &#8216;RDP&#8217; or anything like that going on to an NLB address. We dont want any of the regular windows chit chat coming in through this NIC either. This bad for 2 reasons</p>
<p>1) becuase &#8211; depending on if we are running unicast of multicast mode &#8211; the hosts might not be distinguishable from each other at Layer 2 (MAC address) on the NLB NIC &#8211; so we may not be able to know which host we are reaching.   and&#8230;.<br />
2) because every single one of those packets will have to be processed by the NLB driver on either or both of the hosts.</p>
<p>In my environment we only use NLB for INTRANET applications. Both NICs are connected to the the same switch, but NLB and non NLB NICS are on different VLANs. There are so many difrerent ways you can set this up. There is not 1 correct way. It depends what you are trying to do.</p>
<p>I do this: </p>
<p>-&gt; NLB NICS are connected to switchports that are set on a dedicated VLAN (example. 10.0.20.0 /28)<br />
-&gt; non NLB NICS are connected to switchports that are set on a seperate VLAN (example 10.0.50.0 /25)<br />
-&gt; Cluster IP address setup on the NLB NICs in the NLB IP subnet and NOT the regular &#8216;subnet&#8217;<br />
     (ivorb&#8217;s great guide above is very misleading in this step (see my comment above)<br />
-&gt; NLB NIC&#8217;s are NOT configured with any default gateway or DNS servers<br />
-&gt; non NLB NIC&#8217;s have the Default Gateway and DNS (example &#8211; core router on 10.0.50.1)<br />
-&gt; The DNS name of the application i want load balanced is manually registered in DNS with the NLB cluster IP address only.<br />
-&gt; DNS dynamic registration is turned off on the NLB NICS<br />
-&gt; enable IP forwarding from the NLB NIC&#8217;s to the non NLB NIC with &#8216;netsh interface ipv4 set int &#8220;&#8221; forwarding=enabled&#8217; so that replies to NLB traffic can be sent out on a different NIC to that which it was received on.</p>
<p>With the above setup, my NLB NICS are effectively &#8216;receive only&#8217; NIC&#8217;s and they only receive application traffic that i want to load balance. Any and all traffic thats sent from any NLB host is sent via the other non NLB NIC. Likewise the hostnames are registered on the non NLB NICs, so anything thats intended for the host name (rather than the application) comes in to a refular NIC.</p>
<p>This works pretty well for me.</p>
<p>I quote from this blog post which explains it quite well:</p>
<p><a href="http://blogs.technet.com/b/clint_huffman/archive/2007/10/08/an-optimal-network-load-balancing-nlb-configuration.aspx" rel="nofollow">http://blogs.technet.com/b/clint_huffman/archive/2007/10/08/an-optimal-network-load-balancing-nlb-configuration.aspx</a></p>
<p>&#8220;[Windows Failover Clustering].. uses a backend &#8220;heartbeat&#8221; network used to determine if their partner server is alive or down. NLB also has a &#8220;heartbeat&#8221;, but it&#8217;s heartbeat is really just broadcast TCP/IP packets on the NLB enabled network&#8230; let me repeat&#8230; on the NLB enabled network&#8230;..&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wilem Donziger</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-46</link>
		<dc:creator><![CDATA[Wilem Donziger]]></dc:creator>
		<pubDate>Tue, 22 Mar 2011 14:38:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-46</guid>
		<description><![CDATA[This a good tutorial. It seems to me, however, that we need to make just a few changes to get it to work. We should name the &quot;Cluster Only LAN&quot; to &quot;Heartbeat NIC.&quot; Then rename the &quot;Client LAN&quot; to &quot;Cluster NIC.&quot; Next, we need to add the two 192.....x VM hosts to the cluster and point them to their 192....x VIP. In this way the cluster nodes should converge.

Does anyone disagree with this? If so, help us understand. Also, can someone comment on how the physical hosts should be wired to the switch? For example Can you place a crossover cable between the physical heartbear NICs and then connect the physical Client NICs to the switch?]]></description>
		<content:encoded><![CDATA[<p>This a good tutorial. It seems to me, however, that we need to make just a few changes to get it to work. We should name the &#8220;Cluster Only LAN&#8221; to &#8220;Heartbeat NIC.&#8221; Then rename the &#8220;Client LAN&#8221; to &#8220;Cluster NIC.&#8221; Next, we need to add the two 192&#8230;..x VM hosts to the cluster and point them to their 192&#8230;.x VIP. In this way the cluster nodes should converge.</p>
<p>Does anyone disagree with this? If so, help us understand. Also, can someone comment on how the physical hosts should be wired to the switch? For example Can you place a crossover cable between the physical heartbear NICs and then connect the physical Client NICs to the switch?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave Parent</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-43</link>
		<dc:creator><![CDATA[Dave Parent]]></dc:creator>
		<pubDate>Wed, 29 Dec 2010 14:54:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-43</guid>
		<description><![CDATA[Thanks much for your reply. Your article is very helpful.]]></description>
		<content:encoded><![CDATA[<p>Thanks much for your reply. Your article is very helpful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ivorb</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-42</link>
		<dc:creator><![CDATA[ivorb]]></dc:creator>
		<pubDate>Wed, 29 Dec 2010 03:30:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-42</guid>
		<description><![CDATA[Correct. I&#039;ve sliced and diced this configuration and this seems to be the only way it works. Why, that I can&#039;t answer. If anyone else can shed light on that, I would like to know.]]></description>
		<content:encoded><![CDATA[<p>Correct. I&#8217;ve sliced and diced this configuration and this seems to be the only way it works. Why, that I can&#8217;t answer. If anyone else can shed light on that, I would like to know.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Parent</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-41</link>
		<dc:creator><![CDATA[David Parent]]></dc:creator>
		<pubDate>Tue, 28 Dec 2010 20:00:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-41</guid>
		<description><![CDATA[Is it the case, then, that we should configure our systems like this:

Guest Machine 1
LAN NIC: 192.168.1.100
NLB NIC: 10.0.0.1

Guest Machine 2
LAN NIC: 192.168.1.101
NLB NIC: 10.0.0.2

NLB VIP 10.0.0.3

I have done this and it is the only way I can get the vip to be pingable. If I make the VIP 192.168.1.113, I cannot ping it.]]></description>
		<content:encoded><![CDATA[<p>Is it the case, then, that we should configure our systems like this:</p>
<p>Guest Machine 1<br />
LAN NIC: 192.168.1.100<br />
NLB NIC: 10.0.0.1</p>
<p>Guest Machine 2<br />
LAN NIC: 192.168.1.101<br />
NLB NIC: 10.0.0.2</p>
<p>NLB VIP 10.0.0.3</p>
<p>I have done this and it is the only way I can get the vip to be pingable. If I make the VIP 192.168.1.113, I cannot ping it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ivorb</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-36</link>
		<dc:creator><![CDATA[ivorb]]></dc:creator>
		<pubDate>Tue, 07 Dec 2010 04:29:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-36</guid>
		<description><![CDATA[Boxing Surfer, you are correct. This is a lab configuration. Fortunately, I&#039;ve managed to steer clear of NLB&#039;s in production. NLB is a failover technology and NOT a true load balancing technology. If a client has a small budget, I usually recommend something like Kemp Technologies load balancers to get them going.

There are no VLANS in this lab configuration and I&#039;ve been super lucky that almost all the clients I&#039;ve worked with so far with Exchange 2010 either had hardware load balancers in place or purchased them for the Exchange project.]]></description>
		<content:encoded><![CDATA[<p>Boxing Surfer, you are correct. This is a lab configuration. Fortunately, I&#8217;ve managed to steer clear of NLB&#8217;s in production. NLB is a failover technology and NOT a true load balancing technology. If a client has a small budget, I usually recommend something like Kemp Technologies load balancers to get them going.</p>
<p>There are no VLANS in this lab configuration and I&#8217;ve been super lucky that almost all the clients I&#8217;ve worked with so far with Exchange 2010 either had hardware load balancers in place or purchased them for the Exchange project.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: boxing surfer</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-35</link>
		<dc:creator><![CDATA[boxing surfer]]></dc:creator>
		<pubDate>Sun, 05 Dec 2010 23:46:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-35</guid>
		<description><![CDATA[I have to ask point out theres that appears to be fundamentally wrong with your config here.

your diagram shows your NLB cluster with public and private NICs. They are on different IP subnets.

It looks like you want your private nics (10.0.0.x) to be heartbeat only, with the public NICs (192.168.0.x) to be used for application IO.

But in your NLB cluster you are binding the cluster IP (192.168.0.113) to the private NIC&#039;s (10.0.0.x)

If this is a real world configuration then i can only assume that you are not using VLANs. For this to work as you have it, both your clients and all the NLBS NICs would have to be on the same broadcase domain.

Otherwise, traffic to the FQDN of your cluster (192.168.0.113) is never going to be reach the NIC where the Cluster IP is bound (10.0.0.x). 

Put simply - if theres a router in there, traffic to 192.168.0.x will not get routed to the 10.0.0.x subnet. 

Are you sure this works anywhere except in the Lab?

Also - apologies if i misunderstood your setup. but it really looks that way to me.]]></description>
		<content:encoded><![CDATA[<p>I have to ask point out theres that appears to be fundamentally wrong with your config here.</p>
<p>your diagram shows your NLB cluster with public and private NICs. They are on different IP subnets.</p>
<p>It looks like you want your private nics (10.0.0.x) to be heartbeat only, with the public NICs (192.168.0.x) to be used for application IO.</p>
<p>But in your NLB cluster you are binding the cluster IP (192.168.0.113) to the private NIC&#8217;s (10.0.0.x)</p>
<p>If this is a real world configuration then i can only assume that you are not using VLANs. For this to work as you have it, both your clients and all the NLBS NICs would have to be on the same broadcase domain.</p>
<p>Otherwise, traffic to the FQDN of your cluster (192.168.0.113) is never going to be reach the NIC where the Cluster IP is bound (10.0.0.x). </p>
<p>Put simply &#8211; if theres a router in there, traffic to 192.168.0.x will not get routed to the 10.0.0.x subnet. </p>
<p>Are you sure this works anywhere except in the Lab?</p>
<p>Also &#8211; apologies if i misunderstood your setup. but it really looks that way to me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-15</link>
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Fri, 16 Apr 2010 14:44:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-15</guid>
		<description><![CDATA[When you set the static MAC address on the Heartbeat virtual NIC in Hyper-V for the second VM, did you set it to the same MAC address as for the first VM, or to a different value?]]></description>
		<content:encoded><![CDATA[<p>When you set the static MAC address on the Heartbeat virtual NIC in Hyper-V for the second VM, did you set it to the same MAC address as for the first VM, or to a different value?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ivorb</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-13</link>
		<dc:creator><![CDATA[ivorb]]></dc:creator>
		<pubDate>Wed, 24 Mar 2010 16:27:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-13</guid>
		<description><![CDATA[Thanks Joe. Just deployed an NLB setup on VMWare at a customer site and found that we had to configure static MACs in VMWare before the NLB cluster would converge.]]></description>
		<content:encoded><![CDATA[<p>Thanks Joe. Just deployed an NLB setup on VMWare at a customer site and found that we had to configure static MACs in VMWare before the NLB cluster would converge.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Hoegler</title>
		<link>http://blog.morecoffeeany1.com/2010/03/19/building-nlb-exchange-2010-rtm-cas-ht-servers-hyper-v-%e2%80%93-part-1/#comment-12</link>
		<dc:creator><![CDATA[Joe Hoegler]]></dc:creator>
		<pubDate>Wed, 24 Mar 2010 13:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.morecoffeeany1.com/?p=137#comment-12</guid>
		<description><![CDATA[Great post!  Very relevant with the Hyper-V details.  Thanks for the reference.]]></description>
		<content:encoded><![CDATA[<p>Great post!  Very relevant with the Hyper-V details.  Thanks for the reference.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

