administration mode

The Not-So-Rapid Blog

Article: Clustering is hard »

PHILIP STORRY - MAY 8, 2007 (01:54:43 PM)

(Note for experienced folks: this is going to be a bit basic to start with, but please bear with me.)

Clustering, for those that don't know, is the practice of making two computers do the job of one.

Why would you want to do that? Isn't one computer doing the job of one computer enough?

Well, yes. But if you have two computers doing the job of one, then - if you set it up correctly - one of them can take over from the other if the other computer fails.

This is called failover. It's good because instead of waiting hours for an engineer, then waiting more hours because she's not gotten the right parts with her, you wait minutes - or even seconds - for the other computer to become available. Your colleagues can continue to use the computer's services, and you can fix the broken computer without having your management scream at you that this is costing them money.

If you're really good, and you've got really good software, then you may even be able to set up two computers to do the work of one computer AT THE SAME TIME! This is called load balancing, and it means that everyone goes to the first computer until it finally says "I'm too busy, go elsewhere!" and then the second computer will say "I'm elsewhere! Come here!" and do the work for the first computer. Which is nice of it. We call this load balancing.

And if you're nearly a genius, then you can get two computers to do both of the above - failover AND load balancing! That will make you very popular with your colleagues, as it gives very high availability of computing services.

Clustering is very popular because of these capabilities. It's also popular with hardware vendors, as it sells more hardware. They especially like solutions that require expensive, custom hardware that can only be used for clustering and not much else. That's called a profit margin.


Anyway, that's the basics of clustering. We can explain it as if you're five years old. But unfortunately, actually implementing clustering takes real talent and knowledge. A cluster doesn't just build itself.

It's one of those technologies that's just a soup of acronyms, strange-sounding technologies that were obviously named by developers, and assumptions that were obviously made without anyone consulting you about how YOU wanted clustering to work.

But it can be made simple.

As proof, I submit the following entry from the Microsoft Exchange Team Blog. It's a corker, which really takes a complicated subject and drives it down to the point where a five year old can understand it. Before continuing reading this blog entry, please go there and read it.

So, your five-year-old could set up an Exchange Cluster. But then again, your five-year-old is also the only one in the house that can program the VCR. So my goal today is to take you on a whirlwind trip through Domino clustering that - I hope - will simplify the complexity for you, and get you confident enough to implement your own cluster sometime in the future.


The prerequisites of of Domino Clustering

Domino Clustering requires special hardware, like any other clustering solution in the industry. Specifically, it requires another network card - ideally, one connected to a dedicated network or a VLAN for the cluster network traffic.

To create a Domino Cluster, you also need more than one Domino server - up to six can be in one cluster. They all need to be on network that's at least 10Mbits/s fast, with connectivity to each other. They don't have to be running the same version of Domino, but they must be using TCP/IP as their network protocol. (Sorry, all you Banyan Vines users...)

The components of Domino Clustering

Domino has many components to its clustering. Here's a brief overview of them...

The Domino Cluster Manager

The Domino Cluster Manager keeps track of which servers are in the cluster, what their current state is, and redirecting users when performing failover or load balancing. It runs on all servers in the cluster.

The Cluster Database Directory

The Cluster Database Directory keeps a directory of all databases in the cluster, and their current status. This allows the Cluster Manager to know which databases are where, ensuring that users aren't redirected to a serer that doesn't actually host a replica of the database they're using.

The Cluster Replicator

The Cluster Replicator is the task that replicates data across the cluster. When you add, delete or modify a document in a database, the Cluster Replicator puts that database into a queue - called the Cluster Replication Queue. Databases in that queue get replicated to each other server in the cluster by the Cluster Replicator, on a first-in-first-out schedule.

The Cluster Administrator

Did you think that the Cluster Manager did all the management of the cluster? Hah! Fooled you!

I said that clusters were complicated, and I meant it! The Cluster Manager does all the day-to-day work, but the Cluster Administrator does the adding and removing of a server to the cluster. It keeps things neat and trim, making sure that the cluster members run all the other components of the clustering technology.

Putting it all together

Do you have two servers, running Domino, each with two network cards? Can they talk to each other on both networks, using TCP/IP, at a speed of 10Mbits/s or more? Then let's go!

  1. With both servers running, go to your Domino Administrator client and find the Configuration tab.
  2. On the left-hand list of items, expand Server and select All Server Documents
  3. Select all the servers you want to add to a cluster
  4. Click on "Add to Cluster" above the list of servers
  5. Select Yes to add the servers immediately (you must have access to them from this client!), or No to let the Administration Process do it all for you in the background (slower, but helps it the servers aren't accessible to you)
  6. Congratulations, you will shortly have a cluster!

Summary

As you can see, clustering is a difficult, fraught and complex process. It's full of incomprehensible jargon and weird terms, and requires special dedicated hardware and lengthy additional configuration. And Lotus Domino Server is no different, as my brief overview above has shown.

If only someone could come up with software that clustered in a reliable, easy and simple manner. Software which was incredibly resilient, and hid all of the complexity and detail from you. They'd probably make a fortune from it.

Then again, all the hardware vendors and consultants would probably want that to be the best kept secret in the industry, wouldn't they? ...

BOOKMARK THIS CONTENT
del.icio.us technorati digg Furl YahooMyWeb Reddit NewsVine

Comments: 4

COMMENT: NATHAN T. FREEMAN emailhomepage

MAY 30, 02:41:12 PM

comment » I'm not sure why you list multiple IPs as a REQUIREMENT. Sure, it's far and away a best practice, but Domino clustering will run just fine, even when using a single NIC to reach both users and other servers. «

COMMENT: NATHAN T. FREEMAN emailhomepage

JUN 1, 04:41:57 AM

comment » By the way, since I realized I didn't say it, NICE ARTICLE. ;-) «

COMMENT: PHILIP STORRY emailhomepage

JUN 3, 21:39:21

comment » Thanks, Nathan!

You're absolutely correct, of course - no second network card is required - you could use the same network card.

However, in my experience, if you phone IBM Support with a configuration like that, they give you very funny looks that you can just feel down the phone.

However, for small test and development clusters, using the same network card would be just fine. I plan to do it in a short while for a project I have, for instance.

But the moment I need a production cluster, I want dedicated networking for it!

More on this in a moment... «

COMMENT: PHILIP STORRY emailhomepage

JUN 4, 14:41:38

comment » A quick update has been placed here:

http://www.not-so-rapid.com/philipstorry/s3blog/not-so-rapid.nsf/archive/MDOZ-73UJ2T

It just talks about the need for a second network card, and how to configure it... «

CREATE A NEW COMMENT
required field
required field HTML is not allowed. Hyperlinks will automatically be converted.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30