High Availability

The AuricVault® data centers are deployed in both the eastern and western US. Data is replicated within each facility and between both facilities in near real-time (typically within a few seconds). Load balancers manage multiple Internet-facing servers.

When you go into production, you will receive two production URLs. One for the eastern US servers and one for the western. Your configuration is active on both of them and you can choose to default to whichever of them is geographically closer to you.

In the case of communication failure, or the receipt of an HTTP 50x error, your application should switch over to the alternate facility.

Dynamic DNS Failover?

We’ve explored using automated dynamic DNS fail-over to automatically switch from one facility to another. Our research uncovered various shortcomings with this approach.

It can take up to five minutes for the DNS to switch over. This is the amount of time it takes to:

  • detect the site is down

  • update the central DNS

  • propagate through the distributed DNS servers

  • wait for the Time To Live for DNS Queries to expire.

Five minutes is a long time to wait during the holiday rush.

The majority of our clients are running PCI-compliant environments. Many of them have disabled DNS lookup on their servers in order to more easily meet PCI requirements. Dynamic DNS is of no use to these servers because they are not looking up the address in the first place.

Coding your application to handle the manual fail-over between the two facilities is the most robust way to handle the fail-over in the event of catastrophic failure (or simply the inability to reach) one of the facilities.

NOTE: Although we do not use dynamic DNS, we do occasionally route all our traffic into one facility during maintenance tasks.

Test URL

If you want to test your fail-over code, you can send a test transaction to the AuricVault® sandbox implementation. Instead of using the standard/proper URL, send your transaction to:

or

either one of those URLs will return a 50x error you can use for testing.