We've currently got a Windows NLB setup between a couple of 2008 R2 servers. One of them is about to be replaced by new hardware and I'm wondering whether I can safely install Server 2012 on the new box, and have it join the 2008 R2 NLB cluster? Or does NLB require that all machines are running the same OS/NLB version?
Windows – Network load balancing across multiple windows versions
windowswindows-nlb
Related Solutions
What you want is called Microsoft Application Request Routing 2 (ARR). (Maybe the clumsy name is part of why so few people know of its existence?)
Microsoft ARR is a free-of-charge HTTP layer load balancer, implemented as a module for IIS 7+. (ARR itself is gratis, but the Windows Server license is of course required for the underlying OS.)
Since ARR is just a thin shim on top of IIS, it is quite fast and absolutely robust. And administrating ARR will be familiar for you guys, since you're already an IIS shop. ARR just installs itself in the IIS Manager GUI.
For a true high-availability setup, you should combine NLB and ARR, so that NLB keeps the ARR server tier highly available, and ARR keeps the backend web server tier highly available. See Microsoft's docs, and see the long list of documentation at the end of the ARR overview page linked at the top.
The only real downside to ARR is that if you do true high-availability, then you will require at least 2 Windows Server licenses & physical servers. Given that, and given the time it takes to set up, then low-end load balancer appliances like Coyote Point or loadbalancer.org can sometimes be a cost-effective alternative (Or Kemp, Barracuda Networks, or any of the other low-end vendors).
ability to seamlessly take a web server out of the load-balanced mix for maintenance without interrupting users.
That will depend on how session state is handled, i.e. how your backend servers share or not share the "this user is logged in" information.
If the webapp tier is stateless (i.e. placing session state in a shared datastore, fx a shared RAM cache or MSSQL), then you can just pull a server out of the pool. If not, then you can use "sticky sessions" on the load balancer, and remove a backend server from the load balancer pool, and then wait until all users have 'drained off' the server in question.
Willy Tarreau, the author of HAProxy, has a nice overview of load balancing techniques and issues here.
Microsoft says yes and yes. http://support.microsoft.com/kb/556067
Configuring more than one VIP (Virtual IP) is available only in Windows 2003 editions and later.
When using the NLB manager you should notice that "Cluster IP Addresses" is plural. You can add more than one there. I'm pretty sure that the single-subnet rule is still active. All of your cluster and system IPs should be in the same subnet, (only one mask and gateway are allowed, essentially).
Best Answer
You can have servers running server 2008 and up in the same NLB cluster. In fact, the recommended way of upgrading the servers in an NLB cluster is to serially remove each from the cluster, upgrade it, and add it back to the cluster.
That said, if your application works well enough in server 2012 to do that, you should consider upgrading the other server to 2012 also for maintainability and general up-to-dateness (there are some significant exploit mitigation advances under the hood in server 2012).