This article covers the “Create and configure a VM for Windows and Linux” section of the AZ-100 and AZ-103 Exams and is part of my AZ-100 Study Notes series.
Configure high availability
There are a few concepts to note when considering high availability of Virtual Machines in Azure, these are the primary region a machine is hosted in and its “Region Pair” which is a region within the same geographic area but distant to reduce chance of disruptions caused by localised disaster and the “Availability options” selected when creating a VM.
It is possible to ensure availability of Windows and Linux VM’s when configuring a new VM by selecting the “Availability options” and selecting either “Availability zone” or “Availability set”.
Availability sets is a logical grouping of various VM’s within a single datacenter that is broken down into “Fault domains” and “Update domains”.
A fault domain group is a group of VM’s that share a common power source and network switch which would be equivalent to a rack in a physical setup. This limits the potential impact of hardware failures, network outages and power interruptions. This has the benefit as it reduces the chance of all VM’s in the group from going offline at the same time due to a physical failure.
Whereas an Update domain ensures that VM’s are grouped in a manner that ensures that only a subset of those VM’s will ever undergo maintenance and be unavailable at a time allowing you to spread the load across the group and ensure high availability.
Availability Zones is the more protective option when compared to an Availability set as it groups VM’s in such a manner that they are located within the same region but in different zones and data centers. This protects against hardware faults, data-center or zone-wide disasters that could otherwise effect all of your VM’s
More information may be found at – https://docs.microsoft.com/en-gb/azure/virtual-machines/windows/regions-and-availability
I’ve covered configuring monitoring in the “Analyze Resource Utilization and Consumption” post
Networking, storage, and virtual machine size
It’s worth reading through the various Azure Virtual machines series to figure out what the names actually mean, the names range from A which is the entry-level and most economical vm designed for dev or testing instances all the way up to N series VM’s which are GPU enabled and allow for intensive graphical and compute workloads – more information on this can be found at https://azure.microsoft.com/en-gb/pricing/details/virtual-machines/series/
Networking is configured in the “Networking” tab when creating a VM and allows you to attach to or create a new Virtual network, to define a Public IP for the VM and to configure various options. By default if a VM is configured with a public IP, ports for standard traffic such as 80 (HTTP), 443 (HTTPS), 22 (SSH) and 3389 (RDP) are closed and must be specifically opened to allow traffic through. More information can be found at – https://docs.microsoft.com/en-us/azure/virtual-machines/windows/network-overview
The types of storage available to a VM depends on the configured Size of the VM. The types of disks available for use by VM’s are Premium SSD, Standard SSD and Standard HDD. Whereas a HDD is the cheaper option, an SSD offers significantly high performance and lower latency ideal for IO intensive operations. The Premium option does provide an SLA for 99.9% connectivity which the others do not.
Deploy and configure scale sets
Scale sets are used to configure multiple VMs that are load-balanced and can automatically scale based on a schedule or current load. Scale sets support the use of the Azure Load Balancer and the Azure Application Gateway and also allow for Availability Zone configuration as covered in the “Configure high availability” section above.
The Microsoft documentation has an excellent overview on Scale Sets and the differences between utilizing a scale set compared to manually managing multiple VMs – https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/overview
To create a Scale Set –
- Select “Create a resource” then search for and select the “Virtual machine scale set” and then click “Create”.
- Define a name for the set, select an Operating System image (Can use your own) and define the Subscription and Resource Group to be part of.
- Then select the Location the scale set will be based in and optionally an Availability Zone to use.
- You then configure the instances that will be part of the scale set. Set an Instance count which is the number of VMs to configure initially and the instance size to use.
- Then choose whether to deploy the set using low priority VMs which although cheaper does mean that individual instances can be removed at any time, not to be used on stateful production systems.
- If you will need more than 100 instances at any one time then it’s important to click “Show advanced settings” and enable scaling past 100 instances. This does have various effects and limitations however which need to be considered – https://docs.microsoft.com/en-gb/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups
- Then you need to decide whether to allow auto-scaling of the number of instances. If enabled you will then configure the minimum and maximum number of instances and when to scale based on CPU usage.
- You can then optionally configure the set to be part of an Application Gateway, Load Balancer or nothing at all.
- Finally configure the Virtual Network that the VMs will be part of and the subnet.
More information on scale sets may be found at – https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/overview