Saturday, May 23, 2009

Global Load balancing solutions

As I have received some questions about GLB I will try to answer some of them here.

A load balancer (weight)

What is Global Load Balancing?

Global load balancing is a concept where several data centers answers to a web site.

In its simplest form you can create a GLB by using DNS to point to the IP address of your different web sites. This way you can share the load between your data centers.

But often you want more. Today most modern GLB solution can give you more:

  • Direct you to the closest data center (based on IP addresses). (Speed.)
  • Make sure the data center is up and running before sending clients there. (Always up.)

And probably more as well.

Most load balancers, if not all, uses DNS to direct traffic. The GLB is basically a DNS server that checks the incoming request and makes intelligent decisions before returning an answer.

This page talks about why GLB does not work. I do not agree to everything on this page but you will have to make out your own mind.

What GLB is not

With GLB you only get the solution to distribute traffic between your data centers. You still have to solve database replication, how to maintain your files in sync and so forth.

Who are the players?

I have done some research and found these vendors. I have not tried any of the solutions, only read the product documentation. I am sure there are other players, but they are sometimes hard to find.

Player Comment
F5 Big-IP GTM The most expensive solution I have found. I have used F5 products before and they usually work well. You can only buy this as an appliance. You can choose to buy it as a GTM only or as a local traffic management (load balancer) with GTM on top.
Zeus ZXTM GLB You can buy this as an appliance or as a VMWare image. Promises good performance, supports active-active data centers and you can make rules on how to route traffic.
Coyotepoint Envoy Envoy is an add-on to their local load balancer appliance. That is - you need to buy everything from them. With Envoy you can create policies for traffic management.

Labels: , ,

Thursday, August 23, 2007

Big-IP review

Do you need to put your web server on steroids? Do you find it slow and do not know what to do? If you have the money, I have the solution.

A speeding turtle

Here is one solution for you. The Big-IP is a all-in-one box where you can do lots to tweak your web server performance and reliability. Features includes:

  • Connection pooling from the Big-IP to your backend web server. This offloads connection setup time on your web server.
  • SSL offloading when you encrypt your web pages. With this feature you do not need to spend web server CPU cycles to manage SSL sessions.
  • RAM cache is also possible which offloads static content that is downloaded all the time. You can also cache dynamic content if you want.
  • Compression of content. Most of the content on a web server is compressible. With this feature enabled you can save bandwidth, speed up clients on slow lines and load web pages faster. On a site with much content you can expect 60-70% reduction in bandwidth requirements using this feature.
  • Load balancing with failover. If your solution needs more than one web server you can load balance traffic and as soon as a node fails it will be removed from the pool.
  • Web accelerator combines several technologies to try speed up.
  • HTTP header manipulation. You can manipulate every http header if you want.

What you will use depends on your requirements and wallet. Some of the features above are expensive, but they all work great. You will have to pay about US$20,000 for the entry level platform.

The Big-IP platform

After one week of work on this platform I have to say that I am impressed. It is relatively easy to use and configure. All the basic configuration settings are configured from a web page. Just spend some minutes and read their quick startup guide to get familiar with their naming conventions.

With less than one hour of configuration you should see improvements on your solution.

Big-IP customizations

One think I really like is that if I need something that F5 did not think about I can tweak it myself. Here is the code to cache HTTP 302 replies and redirect my secure site to HTTPS.

when HTTP_RESPONSE {
 if { [HTTP::status] == "302" } {
 CACHE::enable
 }
}
when HTTP_REQUEST {
 if { [HTTP::uri] starts_with "/secure"} {
 HTTP::redirect https://mysite/secure
 }
}

This is called iRules. The language is based on TCL.

RAM cache

Squid is probably the most known cache server in the world. But it is only a cache. Big-IP is lots and lots of more, but probably not the best cache-only solution. It only caches to memory, so if you serve big content like images, videos and so forth and require a big cache this is not the best solution.

But for all other uses it works great in conjunction with compression and load balancing.

Web Accelerator

This module rewrites the web page so it loads faster and tries not to transfer redundant data twice to the client. This is at least what F5 says.

Out of the box the web accelerator have profiles for Microsoft Exchange Server and Sharepoint. (And some others, but I don't remember now.)

On low bandwidth and high latency inline objects (like images, CSS, javascript) are rewritten to be downloaded from other servers. This to overcome the limitation in Internet Explorer to only open open two connections to one server at a time.

Combined with compression this should make some chatty Microsoft web applications more speedy over the Internet.

Conclusion

I love this product. It have lots of features and you can tweak and tune it to fit to most web applications. I spent much time evaluating the RAM cache but see lots of potential in all the other features.

The Big-IP documentation is not impressive. Nor the Wiki on DevCentral. You need to spend some time to figure out how to use it if you need custom features.

PS! The load balancer feature is not only for web traffic. All kind of traffic can be load balanced.

Good luck! If you have any questions do not hesitate to ask me!

Labels: ,