Availability Zones are not available in all regions in Azure yet.
So, in the absence of this feature what are some HA alternatives adopted by customers ?
usually its combination of built-in geo redundancy with the one you implement on your own (say, Azure SQL replication + VMs in 2 regions) and traffic manager\azure front door on top of that.
That's correct, not all regions have Availability Zones. For VM's, you can use Availability Sets to get pretty close to the SLA for AZ's.
You should not really use multiple regions as an high-availability option if your workload is latency-sensitive. Regions should be considered for DR.
Related
I understood both Azure regions and Availability Zones are meant for fail over. But is there any specific difference between these?
Region pair are two regions nearby that are at least 300 miles away. Availability zones are inside region or can be between two region.
This is covered in documentation: https://learn.microsoft.com/en-us/azure/availability-zones/az-overview.
Azure availability zones are physically separate locations within each Azure region that are tolerant to local failures.
A region can contain multiple availability zones.
They protect against more local failures while the region pairs are further apart and protect from larger failures.
This is very basic / fundamental oriented question.
Fact: "There's a minimum of three zones within a single region"
Fact: "Not every region has support for availability zones."
https://learn.microsoft.com/en-us/learn/modules/azure-architecture-fundamentals/regions-availability-zones
How can a region that has no support for availability zones have a minimum of 3 zone?
It doesn't make any logical sense so I guess I am misreading here. So can someone clarify exactly what am I missing?
I think you are confusing a region and an availability zone-enabled region. A region can have a single zone. Regions with three or more zones are an availability zone-enabled region.
From the official doc:
Azure availability zones are physically separate locations within each
Azure region that are tolerant to local failures.
How can a region that has no support for availability zones have a minimum of 3 zone?
Not all regions support availability zone at this moment. You can find a list of regions that support availability zones in here:
https://learn.microsoft.com/en-us/azure/availability-zones/az-overview#azure-regions-with-availability-zones
I have many resources (App Services, SRV, VMs, Storage, LB, analytics, etc) in Azure and I'm looking to have them in availability zone. But I'm considering limitations.
So far, I have discovered that not all VM sizes are supported and not all regions are supported.
Are there other limitations, even those that are yet to be documented?
About the limit of the Azure Availablility Zone, you can have a look of this doc:
https://learn.microsoft.com/en-us/azure/availability-zones/az-overview#services-support-by-region
Only specfic combinations of Azure services and regions support Availability Zones.
For each service that supports Availability Zones, there are some things to note:
1, For virtual machines, pay attention to whether the virtual machine size is available in the area you need.
2, For virtual machine scale set, you need to be aware that when you deploy a scale set into one or more zones, you have the option to deploy with "max spreading" or "static 5 fault domain spreading". With max spreading, the scale set spreads your VMs across as many fault domains as possible within each zone. This spreading could be across greater or fewer than five fault domains per zone. With "static 5 fault domain spreading", the scale set spreads your VMs across exactly five fault domains per zone. If the scale set cannot find five distinct fault domains per zone to satisfy the allocation request, the request fails.
3, For databases, Zone redundant databases and elastic pools are currently only supported in the Premium and Business Critical service tiers in select regions. When using the Business Critical tier, zone redundant configuration is only available when the Gen5 compute hardware is selected. And This feature is not available in Managed instance.
4, For Azure Event hub, geographic disaster recovery related to Availability Zones is only available for the standard and dedicated SKUs.
5, For Azure Service Bus, this feature is available for Service Bus Premium SKUs and only ensures that metadata (queues, topics, subscriptions, filters) is copied from the primary namespace to the secondary namespace during disaster recovery when pairing.
I am studying about microsoft Azure. Not able to understand difference between availability zones and regions.
Actually azure has the doc to describe the details about what's Availability Zones.
Firstly check: What are Availability Zones in Azure?
Availability Zones is a high-availability offering that protects your applications and data from datacenter failures. Availability Zones are unique physical locations within an Azure region. Each zone is made up of one or more datacenters equipped with independent power, cooling, and networking.
In another doc explains what's regions.
A region is a set of datacenters deployed within a latency-defined
perimeter and connected through a dedicated regional low-latency
network.
Availability Zones are part of regions.
Availability Zones are physically separate locations within an Azure region.
Azure Availability zone
An availability zone is one or more data centers that are independent of another (power, water, natural disasters). An availability zone could have 1, 2, 3, or a million data centers. Usually, 3 is a good number: since data can be replicated to the other 2 in case of failure, you still have more than one data center operating. But you can see Availability zones with any number of data centers. The more data centers, the more resilient against shutdowns. What it can be a little bit confusing, is that an availability zone is not a physical location per se as a datacenter, but a latency-defined perimeter.
Azure Region
Now scale that up. Imagine those datacenter are connected directly from one to the other, by low latency connections. AKA: private cable network.
Each Azure region features datacenters deployed within a latency-defined perimeter. They're connected through a dedicated regional low-latency network. This design ensures that Azure services within any region offer the best possible performance and security.
Look at this graph:
Now, a region that has more availability zones, is more resilient than one with fewer availability zones.
Azure Geography
It is an area with one or more Azure Regions—for example, India, the United States, United Kingdom.
I would like to know the difference between the two. I dont find a specific explanation and also there is no specific documentation pertaining to Placement groups. It is always explained in relation to an Availaibilty set similar to the link belo. It is ecplained that it is similar to placement groups, but when to use one over the other?
https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups
The only closest difference I was able to find was that the Azure Placement group maintains its own fault and update domains. But isnt that what Availability sets also focus on, separate fault and update domains?
In most cases, an availability set and a placement group provide the same availability guarantees (namely, that VMs within each are spread across update domains and fault domains). The difference is in how each may be used. Availability sets are used with VMs and cannot be used with availability zones. On the other hand, placement groups are created implicitly when you create a scale set. Scale sets allow for greater scale by deploying across multiple placement groups and even across multiple availability zones.
So, you may think, why not always use scale sets? Because scale sets require the same configuration for all VMs in the set (same VM size, same extensions on the VM, etc.). To summarize, you should use availability sets when you are ok with smaller scale but want each VM to be unique. On the other hand, you should use scale sets/placement groups when you want larger scale, often across availability zones, and are ok with each VM being the same.
I hope this helps. I've written up a quick blog post as well describing the different high availability strategies on Azure. Check it out if you're interested :): https://negatblog.wordpress.com/2018/06/04/high-availability-on-azure/
Cheers,
Neil
TL;DR: If latency is your first priority, put VMs in a Proximity Placement Group and the entire solution in an availability zone (a single proximity placement group cannot span zones). But, if redundancy and resiliency/high availability is your top priority, put your instances in an Availability Set (this will spread your instances across fault domains; these fault domains do not possess "common power sources and network switches").
Availability sets "[are] a logical grouping of VMs that allows Azure to understand how your application is built to provide for redundancy and availability...In an availability set, VMs are automatically distributed across these fault domains. This approach limits the impact of potential physical hardware failures, network outages, or power interruptions."
Proximity placement groups, on the other hand, "...offer co-location in the same data center. [Therefore] planned maintenance events, like hardware decommissioning at an Azure datacenter, could potentially affect the alignment of resources in proximity placement groups. Resources may be moved to a different data center, disrupting the collocation and latency expectations associated with the proximity placement group."
Resources:
https://learn.microsoft.com/en-us/azure/virtual-machines/availability#availability-sets
https://learn.microsoft.com/en-us/azure/virtual-machines/linux/co-location