Re: A n00b's Load Balancer Questions

Kenneth Salchow <[email protected]> Fri, 20 Nov 2009 13:49:19 -0800
Newsgroups gmane.comp.programming.load-balancing.general
Message-ID <4B18A8F75A6384449755BC7784073E9360DC96D8BB@exch11.olympus.f5net.com>
Gary,

Let me take a quick crack at a first response.   And, if you don't see
it--full disclosure--I work for F5 Networks, but I'll try and be as unbiased
as I can.  See below:

KJ (Ken) Salchow, Jr. | Manager, Technical Marketing
D 651.423.1133
M 612.868.1258
P 206.272.5555
F 206.272.5555
www.f5.com




Here goes:

First, I assume these basic services are handled easily by most LB 
solutions:
- DNS

[[KJSJ]] DNS shouldn't be that difficult--just remember both TCP and UDP.

- NTP (not super critical, since nothing immediately stops if this goes 
off-line)

[[KJSJ]] Never done NTP, but I don't see why not.

- SMTP

[[KJSJ]] In a pure 'fail-over' this is pretty straight forward too.
Load-balancing is a little more tricky as most devices can only load balance
per TCP connection.  Plus, you still have backend message store
synchronization issues either way.

Then, the expected HTTP/HTTPS.
- Users of internal web apps are sensitive to latency, just because the 
desktops are running real-time. They need to stay snappy.

[[KJSJ]] a lot of the products provide HTTP caching and compression options
which should improve performance.  One of the nice things about terminating
SSL on the ADC is that you can still do caching and compression prior to
encrypting the outbound traffic.  It's a nice solution.

- Of course, these are web *applications*, so persistent connections are 
important, though it seems most everything supports methods for that now.

[[KJSJ]] Remember to be careful using SSL session ID persistence as it
renegotiates frequently.  In your case though, with all internal users,
simple source IP persistence will probably do just fine.  If not, look for a
device that can maintain persistence on payload and/or header information.
That's another good reason to terminate SSL at the ADC.

- I'd like to do some reasonably sophisticated health checks. Basically 
query the web server a few different ways and see that I'm getting 
answers that verify the web service is up, that it has database 
connectivity, etc.

[[KJSJ]] The level of sophistication of the health checks is one thing that
I think is still pretty much across the board for commercial devices.  Some
provide very basic functionality and some provide complete
self-determination.  Even among devices that have sophisticated
capabilities, see which ones offer a decent starting point with templates or
built-in health checks that can get you up and running quickly.  Also--what
happens when a node fails a health check is important.  With basic HTTP,
however, I'm sure most devices can give you pretty decent capability.

One comment--as soon as you said 'sophisticated'.  Remember that health
checks add overhead to the ADC, the back-end network AND the server.  BE
CAREFUL.  I've seen a customer completely seize their network because they
had a health check that took 45 seconds to complete and they scheduled it to
run every 15 seconds.  ;-)


- SIP telephony. As mentioned above, we use Asterisk servers running 
SIP, IP soft phones on the (Mac) desktops, Cisco AS5400 gateways, and 
Polycom IP phones. What I'm trying to provide for here is a failover 
from the primary Asterisk server to a standby system. There's a few 
obvious ways to do this, but simply I envision a case where the LB would 
be in the loop during call setup, re-directing a (new) call to the 
active system. The Asterisk server and endpoint are then in the call,
and the LB has no more part in it. If the Asterisk server dies, any 
calls connected through it are dropped (that's acceptable), but new 
calls are then routed by the LB to the standby box. In a "graceful 
shutdown" mode, the LB would be notified to send all new calls to the 
standby system. We can then down the primary system after clearing its 
calls.

[[KJSJ]] SIP is similar to SMTP in the fact that it streams multiple
'messages' over a single connection.  I'm certainly not an expert with the
AS5400 or Asterisk, but, in a pure "fail-over" mode this should run much
like SMTP and provide the functionality you desire.  There are devices that
will also "de-mux" SIP, i.e. instead of load balancing a single connection
between the gateway and the server, they can pull out and separate the
multiple messages and load balance them across multiple servers.  Some of
these devices are additional boxes to the ADC, some are additional modules
and some are simply part of the standard fair.  While you might only want
fail-over today, having this functionality might be good down the road.
(BTW, if you can handle the message store synchronization, some of these
products can do the same message-based load balancing for SMTP as well as
other protocols like Diameter).


- Directory and Authentication. We're running a Win 2008 AD mainly for 
user management across the back-end servers. This is kind of like DNS. 
There are methods for availability and redundancy, but the Mac clients 
(particularly) don't always behave nicely when the primary fails. 
"Timeout and try the secondary" just causes uncomfortable hiccups in 
operations.

[[KJSJ]] This one worries me a tad.  I don't remember the traffic flow, but
if I remember correctly, AD has a tendency to insert real IP addresses of
the server into the payload and cause some problems.  BUT--it's been too
long for me to provide any real guidance.  Maybe someone else with more
recent experience can chime in.  I don't believe it's insurmountable, but
might be a little trickier than the others. Sorry I can't remember.

- SMB/CIFS. We do have a file store on a plain old Win 2003/2008 file 
server. It's accessed by the Macs, of course, and Linux and Windows 
clients too; and it always needs to be there. Keep in mind that the real 
"load balancer" purpose is to merely serve clients from a standby system 
in case of a primary failure here. (I'm not expecting that the LB would 
have any role in synchronizing or monitoring sync of the real servers.) 
Basically, can any LBs proxy a file server?

[[KJSJ]] I know that we have a product that is totally built for doing
pretty much what you want (and then some), but again, I seem to recall
several gotchas with maintaining connections and embedded IP addresses using
a straight load balancer.  Again, I don't believe it is completely
insurmountable and you'll still have to deal with file synchronization, It's
just been too long for me to say anything more with any certainty.


- SQL Server (2005). I've seen a number of references to LB/ADC fronting 
databases, though usually with Oracle for some reason. Our current plan 
is to run SQL's Mirroring to provide a H/A db server pair. The only 
catch is that this requires specific MS-native drivers that support the
mirroring. There are no native drivers for some client systems (mainly, 
but not exclusively, the Macs), so we end up writing a (Java/JDBC) 
middleware layer to bridge the gap. So, I'm wondering if any LB can 
proxy SQL by talking ODBC or some such to our various client systems, 
while talking "native" back to SQL Server. There would only be one 
"real" SQL server in this case, even though it's really a virtual system.

[[KJSJ]] There are many documented solutions out there (as you mentioned) as
to how to make this work.  Usually the problem is the synchronization of the
db on the back side, not load balancing a simple connection to a server.
And, most devices aren't going to "proxy" SQL in the manner I think you're
talking about. The typical deployment I'm familiar with is to use SQL
mirroring to synchronize the back end system, but use the load balancer to
send traffic to the physical servers instead of using the "virtual" provided
by the mirror. I'm probably stretching my memory and current skills here
again--so, someone else is welcome to chime in. :)

- All of these functions are met performance-wise by two or three real 
servers behind the LB. But, I count up to 8 different functions served 
by the LB, with possibly 3 - 4 web server groups, for perhaps a dozen 
different "virtual" LB applications. Some of these real server groups 
operate on different subnets.

[[KJSJ]] shouldn't be an issue and there are multiple solutions from
multiple physical interfaces to VLAN segmentation.

- One possibility, if all were simple functions, would be to simply get 
several old Alteon 180 boxes. People seem to have a lot of regard for 
that line. If our more complex needs (wishes) can't be accomplished, 
then this may be a practical route. This brings up the idea of several 
cheap boxes vs. one higher-end box (two really, since we would obviously 
need an H/A pair of load balancers). We often deploy servers with very 
limited functionality - not so "green", I know, but it reduces the
impact of errors/failures (yes, while increasing the chances of having 
one). I would be concerned about a single high-end box (pair) becoming a 
single point of failure for multiple services. If we have one box, then 
it needs to partition well so we don't screw up one thing and kill 
several at the same time.

[[KJSJ]] Whether "high-end" or not, an H/A pair is, by definition, not a
single point of failure if you run them in active/stand-by; that's classic
N+1 redundancy. You mentioned management (in the next point) as an issue, so
why would you want to manage multiple configurations and multiple boxes as
well as multiple points of trouble-shooting when you don't have to?  In
addition, most boxes provide various forms of partitioning to help
'separate' various components.  Of course, if that's what you prefer to
do--that's what you prefer.

- Ease of administration is important (of course!). I saw a note here 
some weeks ago that an F5 LLB requires a knowledgeable consultant and a 
week to setup. That doesn't sound very appealing. And yes, I expect some 
of the more complex functions, if they're doable, to require a more 
complex machine; and I also don't want to learn more than one. So, we'll 
just have to evaluate the trade-off between complexity and the value it 
delivers.

[[KJSJ]] No offense intended to anyone, but one person's experience is NOT
necessarily indicative of an entire product line. I would submit that EVERY
device has had its share of nightmare installs where things just don't go
the way they normally do.  I've personally done installs that took 15
minutes and installs that have taken a week.  Much like the performance
conversation in a different thread on the list, I'd suggest you get a chance
to 'play' with the management interface of the devices and get a feel for
the overall management.  Talk to the SE's about what the install for your
environment would look like.  MOST OF ALL, the more prepared you are and the
more upfront planning, the better ANY install will go.  Most products
provide some form of installation as part of the purchase--if you're
prepared and plan, it should go pretty well in most cases.

- Application development. We do have the advantage of developing most 
applications that we use in-house, so we can be flexible when it comes 
to interfaces with the LB.

[[KJSJ]] That's very cool--and many devices provide programmatic interfaces
into the device.  This is something that can alleviate some of the overhead
of things like health monitoring and maintenance.

- Cost. Obviously it depends to an extent on the value delivered. We're 
a small company, so we're cost-conscious (still have 10 year-old servers 
running some jobs). It also means that I don't have fixed budgets or 
bureaucratic processes to deal with either. My understanding is that 
some of the entry-level "high-line" boxes are now in the $15-20K range. 
We could do that if delivers all we're looking for. If, however, a 
couple $2K boxes do the trick with some sacrifices (or not?!?), we can
work with that too.

[[KJSJ]] I can't tell you what to spend (can I? :) ) so you've hit the nail
on the head--it's a tradeoff between actual cost and value derived.
Especially when times are tight, many organizations settle for 'good
enough'.  I, personally, try to imagine my needs 3-5 years out and make sure
that my solutions can adapt and maintain value.  Again--that's your call.

- Finally, I have seen references to newer system incorporating 
security/firewall/ips functions. How robust are these? This box will 
necessarily be in the loop for most externally accessible systems, so I 
wonder to what extent it can function as a secure router, in effect? 
That would theoretically let me move some firewall dollars towards the 
LB project? Sound plausible, or am I asking too much?

[[KJSJ]] Some would argue that most ADC or LB solutions have always been
secure routers/firewalls.  If you look at how VIPs are created, they are
essentially IP:port combinations defining allowed traffic, not much
different than a firewall rules list.  BUT, I don't want to start that
debate again and almost NO ONE that I know of sells an ADC as a complete
network firewall replacement.  However, yes, many devices provide additional
levels of security from IP Chains through Web Application Firewalls and just
about anything in between.  You'll have to evaluate what you can/can't do or
feel comfortable with based on your circumstances.


I hope this helps some.

_______________________________________________
lb-l mailing list
[email protected]
http://vegan.net/mailman/listinfo/lb-l
Searchable Archive: http://vegan.net/lb/archive
http://lbdigest.com Load Balancing Digest
http://lbwiki.com Load Balancing Wiki
smime.p7s (application/x-pkcs7-signature, 3 KB) - not displayed