Simplest way to do this with Consul is to run a single "global" datacenter.
This means the timing for the LAN
gossip need to be tuned to be WAN appropriate.
In consul/config.go
(https://github.com/hashicorp/consul/blob/master/consul/config.go#L267)
Do something like:
// Make the 'LAN' more forgiving for latency spikes
conf.SerfLANConfig.MemberlistConfig = memberlist.DefaultWANConfig()
Then we need to tune the Raft layer to be extremely forgiving.