Solved

Clustering

Posted on 2007-03-28
14
470 Views
Last Modified: 2013-12-09
When clustering windows server 2003 so that several servers can reply to tcp requests on the same IP, how is that handled? IE does the software that is on the server determine whether to pickup the tcp request or is that done at the Operating system level, leaving the ability for any tcp application to run?
0
Comment
Question by:sk33v3
  • 7
  • 6
14 Comments
 
LVL 30

Accepted Solution

by:
LauraEHunterMVP earned 500 total points
Comment Utility
It sounds as though you're referring to Network Load Balancing, not clustering.  (Mutually-exclusive tecnologies - you can't enable NLB on a server that has clustering installed and vice versa.)  NLB allows multiple servers (typically web servers) to respond in a round-robin fashion to requests on the same IP.  Clustering creates, well, clusters...of resources (such as hard drives, file shares, etc.) such that if one physical device fails, the other cluster nodes can take over iwth varying degrees of seamlessness depending on the application.

NLB is handled at the OS level, details can be found here:

http://technet2.microsoft.com/WindowsServer/en/Library/884c727d-6083-4265-ac1d-b5e66b68281a1033.mspx
http://technet2.microsoft.com/WindowsServer/en/Library/c7da3162-2055-438d-87c1-c1086c694c9f1033.mspx
http://www.isaserver.org/tutorials/Configuring_Network_Load_Balancing.html

Hope this helps.

Laura E. Hunter - Microsoft MVP: Windows Server - Networking
0
 
LVL 9

Author Comment

by:sk33v3
Comment Utility
Ok, with NLB if one of the servers does fail, what happens? does the query fail or does the next server in the chain pick up the request?
0
 
LVL 30

Expert Comment

by:LauraEHunterMVP
Comment Utility
Yes, NLB in Windows Server 2003 will detect failed nodes as well as nodes that are added or removed from the NLB.  (That might not have been the case with Windows 2000, but it's been awhile so I can't remember with certainty.)
0
 
LVL 9

Author Comment

by:sk33v3
Comment Utility
Your post is a little vague, you mentioned that it does detect failed nodes, does it then forward the information to the next node? Also, on a tcp connection, will the connection stay established to an individual server that it started with, or is it possible it will be routed to a second server for a single tcp connection?
0
 
LVL 30

Expert Comment

by:LauraEHunterMVP
Comment Utility
Perhaps I misunderstood your question then, I apologize.  Are you asking what happens if a host fails while a client is in the middle of a connection?  IE, ClientA gets routed to ServerB, and ServerB fails while ClientA is browsing the site/using the application/whatever?  In this case NLB will not initiate any form of failover - ClientA will just receive a "You lost your connection" error of some sort.

The failure detection mechanism is more to do with a convergence process that takes place whenever nodes join or leave an NLB - NLB will detect the added or removed node and update its table of available hosts that will be able to accept new connections.

Your best technical reference for NLB is going to be found here: http://technet2.microsoft.com/WindowsServer/en/library/c1db8c13-da31-4541-81d8-e2b3ebe742fb1033.mspx?mfr=true - this references the actual DLLs and algorithms that are in use.

HTH.
0
 
LVL 9

Author Comment

by:sk33v3
Comment Utility
Let me give you an example.

let's say Servers 1-10 are setup to respond on 10.10.10.5 using NLB

When client application tries to connect to 10.10.10.5 the next server in the list is server 4, however server 4 did not respond to the request, does the NLB take the request and route it to server 5? or does the connection just fail?

Next example
If a client application has established a tcp connection with server 5, will all of the packets for that tcp connection always be routed to server 5? I would assume so but want to verify that.

0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 30

Expert Comment

by:LauraEHunterMVP
Comment Utility
In example 1, if the NLB still thinks that server 4 is "alive", it will continue to route client requests to it until it actually detects the failure - I don't know the exact metrics of the "detect-alive" algorithm (and it would be partially dependent on your hardware and bandwidth usage -anyway-), but there will definitely be some amount of convergence time before NLB realizes that server 4 has failed, during which time client requests are still being routed to server 4 and will be erroring out.

The answer to your example 2 will depend on how stateful the application is, since each new connection request is re-evaluated by NLB and might be sent to a different server in the NLB.  For this reason Microsoft specifically recommends that NLB only be used for predominately stateless applications, as stateful applications will break if NLB decides to route part of the conversation to a different node than the one on which the transaction was begun.  So if I'm browsing to a static web site hosted by an NLB, I might be getting the HTML for the landing page from node 1, the source of a followed HREF from node 2, and perhaps even a jpeg file -within- that page from yet another.
0
 
LVL 9

Author Comment

by:sk33v3
Comment Utility
Ok, Sorry, just one more example I think.

I have an application, lets just say its the firebird database server running on 4 machines. The Firebird server requires you to login, the connection is a TCP connection, Would a Firebird database connection possibly have problems? From my understanding of your explanation of example 2 from above, each packet on a tcp connection could be routed to a different server within the load balancing network. Is this correct?
0
 
LVL 30

Expert Comment

by:LauraEHunterMVP
Comment Utility
Databases as a rule assume a stateful connection between client and server in order to maintain data integrity - remember the ACID principles from your undergrad databases class, where each transaction needs to maintain Atomicity, Consistency, Isolation, & Durability.  (Can't believe I still remember that.)

If you're looking at creating a high-availability solution for a database, then you will probably want to move back to the original solution of clustering, in which you have multiple physical boxes using a shared storage medium (typicall a SAN).  The major difference here is that, while an NLB will have multiple resources all online at once and all answering requests in a round-robin manner, clustering typically relies on an "Active/Passive" model where only one node is actually online and responding to requests, while the other node(s) are in "ready to spring into action" mode to take over responding to requests should the active node fail.  Because there's one consistent resource responding to requests (rather than an unpredictable round-robin list of hosts in an NLB), clustering is better-suited to state-heavy applications like databases, Exchange, etc.  

A good example would be to think NLB for your front-end web servers and clustering for your back-end databases.  See the following for more: http://technet2.microsoft.com/WindowsServer/en/library/c35dd48b-4fbc-4eee-8e5c-2a9a35cf63b21033.mspx?mfr=true
0
 
LVL 9

Author Comment

by:sk33v3
Comment Utility
Ok so for the last example would Component Load balancing be what I need? From my reading of that it sounds like it would handle the above situation perfectly.
0
 
LVL 30

Expert Comment

by:LauraEHunterMVP
Comment Utility
I'm not specifically familiar with CLB, as it used to be an add-on component (it was called Microsoft Application Manager 2000 or something) and I've never had an occasion to implement it.

As I understand it, CLB is used to balance clusters of servers that activate COM+ components; the CLB software is responsible for determining the order in which COM+ cluster members are used for activating those component.  I'm not a developer (and I don't even play one on TV), so I'm not sure if that will be applicable to your situation or not.
0
 
LVL 30

Expert Comment

by:LauraEHunterMVP
Comment Utility
I'd say I answered it rather comprehensively, but that's just me.  :-)
0
 
LVL 9

Author Comment

by:sk33v3
Comment Utility
I would say you answered it perfectly. Thanks and sorry for the delay.
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Recently, I had the need to build a standalone system to run a point-of-sale system. I’m running this on a low-voltage Atom processor, so I wanted a light-weight operating system, but still needed Windows. I chose to use Microsoft Windows Server 200…
ADCs have gained traction within the last decade, largely due to increased demand for legacy load balancing appliances to handle more advanced application delivery requirements and improve application performance.
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now