We are currently investigating our ability to remove single points of failure out of our architecture. My end goal would be to able to turn off any individual machine, and the application continues to function.
As a basic example, this is what I would like to be able to do:
Region A : service.example.com -> vm1 -> AppServer -> Database
Region B : service.example.com -> vm2 -> AppServer -> Database
A user could connect to any of those machines based on the network routing rules, load balancers, etc that we place on the front.
The complication, is that I'm looking to get the user to be able write data to whatever environment they are connected to, and have the data be replicated across the other regions. Both technologies that I have read about (OpenEdge Clusters and Replication) rely on a single source of truth for the database itself: Replication is Master->Slave, Clusters seems to share the data files.
Has anyone implemented a setup like this before? Is it even possible using OpenEdge technologies, or is there a supported infrastructure solution available. A roll-your-own solution is theoretically possible, but I would be looking to avoid.
We are running Windows 2008 (soon to be 2012), and 11.3 (soon to be 11.7 when released). Most of our machines will be running inside of VMWare, but there might be one or two running on physical hardware.
Cheers,
Daniel B.
Recognize that there is an inherent difficulty in bi-directional replication. While I have seen it done, it involved the possibility of having to defer certain updates for manual resolution because there are circumstances where one just can't expect it to be done automatically.