CARP-Like Solution With Machines On Different Networks?

Chuck Swiger cswiger at
Mon Nov 17 11:22:30 PST 2008

On Nov 17, 2008, at 7:57 AM, Alex Kirk wrote:
> After doing some research on the matter, it looks like CARP would be  
> a winning solution - but only if the backup system was on the same  
> network segment as the primary box. Given that there's no money to  
> colocate a second backup system at the same facility as the main  
> machine (and protection against failure at the colo facility is one  
> of the primary drivers for the failover setup), however, it looks  
> like CARP wouldn't be useful.

If you can't or aren't willing to pay for a second machine, I doubt  
that any clustering solution is going to be workable for you, frankly.

Most of the high-availability clusters I know about depend either on a  
multipath SAN or NAS setup to provide a common filestorage point for  
cluster members to synchronize with (the "quorum" drive for M$  
clustered SQL server, similar for Sybase ASE cluster or Oracle  
Parallel Server [now Oracle RAC]), or require something like a  
hardware loadbalancer (Foundry ServerIron, NetScaler, etc) which acts  
to distribute transactions only onto the parts of the cluster which  
are up and working.

> That said, are there any solutions which behave similarly to CARP  
> that I could use for a pair of machines connected solely via the  
> Internet? For now, I'd even be happy if there was some way to simply  
> do TCP port-level proxying, so to speak (i.e. connections come in to  
> a given machine, and are proxied to the main system if it's up, but  
> go to the backup box if not)?
> Thanks in advance for any advice you can provide.

TCP level proxying is suitable for shared read-only distribution of  
traffic (ie, such as static web content going against a pool of  
webservers, all of which can serve any of the traffic coming their  
way).  IPFW + natd can do this much via:

      -redirect_address localIP[,localIP[,...]] publicIP
                  These forms of -redirect_port and -redirect_address  
are used
                  to transparently offload network load on a single  
server and
                  distribute the load across a pool of servers.  This  
                  is known as LSNAT (RFC 2391).  For example, the  

                        tcp www1:http,www2:http,www3:http www:http

                  means that incoming HTTP requests for host www will  
be trans-
                  parently redirected to one of the www1, www2 or  
www3, where a
                  host is selected simply on a round-robin basis,  
                  regard to load on the net.

...but this paradigm simply won't work for content-aware traffic (ie,  
anything which has a per-user "session") and it definitely won't work  
for a database.  MySQL clustering is a less expensive possibility than  
most of the vendors listed above (M$ SQLServer EE is $25K per CPU,  
Oracle RAC is $60K per CPU), but even so Sun wants to bill at $2500  
per day for a week of consulting to set it up for you.


More information about the freebsd-questions mailing list