On 12/12/2011 01:17 PM, John R Pierce wrote:
On 12/12/11 6:43 AM, Digimer wrote:
I handle this by setting up two servers running DRBD in active/active with a simple two-node red hat cluster managing a floating IP address. The storage network link uses a simple Active/Passive (mode=1) bond with either link go to separate switches.
DRBD with synchronous writes? doesn't that slow things down considerably? if its asychronous, recently written data will be lost on a failure.
proper storage appliances implement a shared cache between the master and standby storage controllers so that if the master fails, the standby has all data, including cached writes. as far as I know, there's no way to easily implement this with open source, its part of the secret sauce of proper redundant storage.
without this, its not safe to run a transactional database server on your storage
With synchronous writes ("protocol C" in DRBD terms), I've found minimal slow-down. With a little tuning and fast enough networking, it's quite small, given the HA win. Given this, there is no loss in data, even if a node fails mid-write as the caller never gets ack and knows to retry.
Shared cache is, I think, a single-point-of-failure. I'll make no arguments towards transactional DB use and I am not a DBA, but I can restate that a write is not acknowledged until it's been committed to both nodes in DRBD, making it very robust with minimal performance hit.