Network Load Balancing Question

Asgorath

[H]ard|Gawd
Joined
Jul 12, 2004
Messages
1,253
Here at work we have a custom web site with a SQL back end. We have seperate servers for the web site and the sql back end. We are upgrading right now and are moving towards...

sql server + sql server = Active/ Passive Cluster (2003 x64 enterprise)
web server + web server = Network Load balancing (2003 x32 standard)
AX-150i SAN to store the data

Our current web software makes use of variables that follow the user around the website and are used pretty actively. What I'm afraid of is if I put our web server on two servers with network load balancing, will a particular user be shuffled off to the other server randomly in his visit to our site? If so, will his variables follow him around?

How can I lock a user onto a particular server once he's there? We are rewriting our web site to be stateless, but as of right now each user has a state.

Any tips? I'm pretty new to network load balancing.

Thanks,

Greg
 
Big name (F5 BigIP's etc) load balancers will probably handle Layer 7 data, making persistence pretty easy. If you are looking for a really cheap solution, you can pick up two older cheaper systems and use Linux Virtual Server (LVS) with Keepalived/Heartbeat/Ultramonkey or one of those other wrapper scripts. They use timed persistence, so until the timeout occurs they will always be pointed to the same server.

Without knowing more about what you are currently using to load balance, I can't help a whole lot more beyond that and telling you to google some.
 
what is your web server front end? If its IIS Microsoft's NLB does it on a per connection basis.
 
i believe most load balancers have a 'sticky' option within the balancing algorithm so that once someone is in on one server, they stay there.
 
Cool. This makes me feel much better. And to answer the previous question, I am using IIS to do this.

I am more schooled on regular windows enterprise style clustering, so please humor me here...

Should I have a dedicated heartbeat network between the NLB servers and another network for regular network traffic?

Where should my website sit? Should I have two iSCSI LUNs, giving each server its own LUN to see? Should I have a single iSCSI LUN and have them both see the same? Should I put the data on a iSCSI LUN in read only mode and have the web server keep a local copy of it and run it from its local hard drive? .... How should I store the content in this situation?

If our web developer finishes his new, tested updates and wants to push them...what's the best way to push the updates with the least downtime on the site?

I've been reading on microsoft's site everything I can about NLB. Any extra advice is very much appreciated.

Thanks again.

-Greg
 
Are you using server 2003? If so, NLB is even easier and does not require the use of a heartbeat network. Just set affinity to single and the client will stay on the same server the whole time. This is based on source IP, so make sure your firewall/nat/proxy is forwarding the original client ip.
 
I am going to get me, my head network IT guy, and the web dev team together for a meeting soon to discuss the options...

Are there web situations that I should bring up that are not easily NLB'd?
 
Honestly if you have a big network or a growing one NLB that server is built in isnt all that robust. You would be muc better off using Enterprise edition and clustering. This is a true balacing solution that uses multiple machines in the cluster to do the same job.
NLB just sends packet 1 to server one packet 2 to server 2 in a round robin fashion.
A few programs dont like to play nice with this solution, whereas clustering doesnt depend on sending packets to different machines, all the machines in the cluster act as one.
 
Honestly if you have a big network or a growing one NLB that server is built in isnt all that robust. You would be much better off using Enterprise edition and clustering. This is a true balacing solution that uses multiple machines in the cluster to do the same job.
NLB just sends packet 1 to server one packet 2 to server 2 in a round robin fashion.
A few programs dont like to play nice with this solution, whereas clustering doesnt depend on sending packets to different machines, all the machines in the cluster act as one.


I don't think that's true. The best article I've found on this so far is at http://www.west-wind.com/presentations/loadbalancing/NetworkLoadBalancingWindows2003.asp . He mentioned that I can lock a session to a particular box. Also, the 2003 version of NLB does not do round robin... you send your web request to the virtual IP address of the NLB 'cluster' and it is shuffled off to the proper server.

I don't think anything in your statement is true...at least on windows 2003. It may have been true in previous versions of NLB.
 
I looked into it with 2003. It definately does lock the session as you stated but again IMO its not as robust as a cluster.
 
I looked into it with 2003. It definately does lock the session as you stated but again IMO its not as robust as a cluster.

I agree completely. Can't go cluster though. My boss won't let us buy any more enterprise licenses. We hired consultants to plan and impliment this and they totally botched it and ran our budget into the ground. Now me and our IT admin are cleaning things up. We can only go 2003 std for the web boxes. The SQL boxes already got the real cluster.

I agree...but this is my limitation. Now I need to learn how to make the best of it.
 
I agree completely. Can't go cluster though. My boss won't let us buy any more enterprise licenses. We hired consultants to plan and impliment this and they totally botched it and ran our budget into the ground. Now me and our IT admin are cleaning things up. We can only go 2003 std for the web boxes. The SQL boxes already got the real cluster.

I agree...but this is my limitation. Now I need to learn how to make the best of it.

You have it right. NLB front end connected to a MSCS SQL backend. NLB comes on all version of 2003 Enterrpise is required for MSCS.
 
Not to toss a wrench into your planning meeting, but you probably should be considering linux options for load balancing and web serving as well, assuming your web developer can handle an Apache configuration.

We run two pairs of failover load balancers using LVS (the Linux Virtual Server project) and keepalived, configured for multiple pools in our multi-tiered architecture: A) 5 linux web servers; B) 5 windows and 1 linux app servers; C) 3 linux logging servers; D) 2 linux image servers; E) 3 linux storage front-ends pulling files from 5 linux storage back-ends; F) 8 linux memcached servers; and a load-balanced test network.

We do use SQL Server enterprise in a master-slave setup for our data tier. But we saved a ton of money by using linux rather than buying Windows OS's and/or hardware load balancers.
 
Not to toss a wrench into your planning meeting, but you probably should be considering linux options for load balancing and web serving as well, assuming your web developer can handle an Apache configuration.

We run two pairs of failover load balancers using LVS (the Linux Virtual Server project) and keepalived, configured for multiple pools in our multi-tiered architecture: A) 5 linux web servers; B) 5 windows and 1 linux app servers; C) 3 linux logging servers; D) 2 linux image servers; E) 3 linux storage front-ends pulling files from 5 linux storage back-ends; F) 8 linux memcached servers; and a load-balanced test network.

We do use SQL Server enterprise in a master-slave setup for our data tier. But we saved a ton of money by using linux rather than buying Windows OS's and/or hardware load balancers.

I proposed linux and was shot down pretty quick. We are a Microsoft shop and my boss is willing to pay the price to stay a microsoft shop. He believes that Microsoft has the money and thus makes the rules and the world has to follow the guys who make the rules. So however nice a linux solution would be, we can't do it. Plus, we'd need to find some good linux guys to help us on short notice as my network admin is pretty rusty on his nix and I'm just above a newb on nix.
 
Back
Top