When deploying on Microsoft Azure, do I use an Availability Set or an Availability Zone?

Hi all - I’ve been looking in deploying on Microsoft Azure (CentOS) and have checked out this site (Azure’s “Regions and availability for virtual machines in Azure” and also, of course, the CockroachDB docco here and here.

From these it is not clear to me whether I should be using an Availability Set (AS) or an Availabiltity Zone (AZ) with Azure? Also, I have to factor in cost into the equation, but I would like to hear what is the “ideal” 3 node deployment on a cluster within a region. Availability Zones are a relatively recent feature but are available near me in the Northern Europe region (in this case Ireland).

Any recommendations, references, URLs and/or ideas welcome.


Hey @Dragam,

If you aren’t fully committed to Azure, all else equal we generally recommend folks use EC2. But assuming that you’re committed, based on that document I’d recommend using availability zones. Availability sets sound like a logical grouping without any guarantee of physical redundancy, whereas availability zones have independent, power, networking and cooling. You’d still be susceptible if the entire region somehow became inaccessible, but it sounds like you’d be less likely to have a single set wipe out two nodes and therefore make the cluster unavailable.

Topology is a big discussion topic and there’s no one-size-fits-all recommendation. Ideal solutions would have to be crafted for specific environment, service availability, cost and latency requirements. But I can say that if you have the choice, I’d recommend placing nodes in separate physical locations. If you span out to multiple DCs, you can use replication zones to ensure that each DC receives enough replicas to maintain quorum (and availability). The performance tutorial I linked in your other thread would be instructive here.

Hope that helps,