Design level patterns for highly available Linux applications
Given toolkits like [Linux-HA][1] and cluster layers on top like [Corosync][2]; file-system replicators like [DRBD][3] and other various bits and pieces there are the components available to developers to build highly available, robust systems.

High-availability architecture-level patterns are often fairly easy to describe, but I'm looking for the level(s) below that.

While each of these toolkit-parts seems to be fairly well documented, and some of them show how to use them in a robust application, they don't show examples of an end-to-end or multi-resource-using application.

So, what are the concrete steps, patterns, recipes, etc. that should be followed in order for developed code to *play nice* in an environment like this?

What books, web-tutorials, etc., should I point a team to in order to refactor a working single-box custom TCP server (for example) and make it run under cluster control, writing to shared file system space, and working in such a way that when it fails over, it has a chance to recover and keep working.


  [1]: http://www.linux-ha.org/wiki/Main_Page
  [2]: http://www.corosync.org/doku.php
  [3]: http://www.drbd.org/
Design level patterns for highly available Linux applications
===

Given toolkits like [Linux-HA][1] and cluster layers on top like [Corosync][2]; file-system replicators like [DRBD][3] and other various bits and pieces there are the components available to developers to build highly available, robust systems.

High-availability architecture-level patterns are often fairly easy to describe, but I'm looking for the level(s) below that.

While each of these toolkit-parts seems to be fairly well documented, and some of them show how to use them in a robust application, they don't show examples of an end-to-end or multi-resource-using application.

So, what are the concrete steps, patterns, recipes, etc. that should be followed in order for developed code to *play nice* in an environment like this?

What books, web-tutorials, etc., should I point a team to in order to refactor a working single-box custom TCP server (for example) and make it run under cluster control, writing to shared file system space, and working in such a way that when it fails over, it has a chance to recover and keep working.


  [1]: http://www.linux-ha.org/wiki/Main_Page
  [2]: http://www.corosync.org/doku.php
  [3]: http://www.drbd.org/