1. Home
  2. Training Library
  3. Microsoft Azure
  4. Courses
  5. Create and Manage Virtual Machines for Azure 70-532 Certification

Scaling Virtual Machines

Contents

keyboard_tab
Introduction
1
Overview4m 31s
play-arrow
Start course
Overview
DifficultyIntermediate
Duration1h
Students238

Description

Course Description

This course will show you how to create and manage virtual machines in the Azure ecosystem. 

Course Objectives

By the end of this course, you'll have gained a firm understanding of the key components that comprise the Azure virtual machine ecosystem. Ideally, you will achieve the following learning objectives:

  • How to create and manage virtual machines in the Azure environment. 
  • How to create and manage VM images, workloads, and more. 
  • How to monitor your Azure virtual machines. 

Intended Audience

This course is intended for individuals who wish to pursue the Azure 70-532 certification.

Prerequisites

You should have work experience with Azure and general cloud computing knowledge.

This Course Includes

  • 59 minutes of high-definition video.
  • Expert-led instruction and exploration of important concepts surrounding Azure virtual machines.

What You Will Learn

  • The concepts behind VM workloads.
  • How to create and manage Azure VM images.
  • Azure VM configuration management.
  • Azure VM networking.
  • How to scale Azure virtual machines.
  • How to design and implement Azure VM storage.
  • How to monitor your Azure virtual machines.  

Transcript

Hello and welcome back. In this section we'll cover how to scale virtual machines.

The scaling section deals with two broad areas. Firstly, how to configure throughput of a virtual machine based on a number of factors such as the IO, CPU and RAM, for example. Secondly, how to ensure maximum availability of your virtual machines through a feature known as availability sets.

One of the key features of virtual machines in Azure is the ability to scale up or down the size of a virtual machine. You may need to do this, for example, to cope with an increased demand on a virtual machine or because of the pay as you go nature of Azure. It allows us to quickly scale, and easily ramp up or down our usage based on requirements. This is known as "scale up" or "vertical scaling". We increase the size of a single node.

Scaling up or down a virtual machine can effect many aspects of a VM's performance characteristics. Such as the CPU, RAM, Network bandwidth, Disk capacity and performance. There are several classes of VM in Azure, you have the "A Series", which is a general purpose VM, or you have the "D Series", which are backed by SSD hard drives. And finally we have the "G Series", which are high memory, and CPU machines for maximum performance. You can vertically scale though Powershell using set Azure VM size command as per this example.

In addition to manually scaling a VM up and down, you can use Azures auto-scaler to scale out the VM as needed. This means increasing or decreasing the number of active instances in a service, which is also known as Horizontal Scaling. For example, between one and 10 instances. One restriction, is that the VM's in the auto-scale pool, must all be the same size. For example, A1, B2, etc.

You can auto scale in a number of ways. Firstly, you can scale based on the date and time range. For example, you may know that your application comes under heavy load every morning between eight and 10 AM. And so want to ensure that you have more capacity to deal with that demand. Secondly, you can dynamically scale based on CPU load on a virtual machine. You can set limits based on CPU load, to map to instance counts. You can also do the same thing based on the number of messages on an Azure storage queue.

Availability Sets have two functions. Firstly, there are prerequisites for the auto-scaler to function, note that only virtual machines that are standard, not the basic, can join an availability set. Which means that basic VM's cannot work with the auto-scaler. Secondly, availability sets are a way of helping ensure maximum uptime in your replicated virtual machines. Lets assume you have seven instances of a single application running behind a load bouncer, one thing that you'll want to ensure is that if any updates happen to the VM's, for example, operating system updates, that do not happen simultaneously to all machines, this is known as an "Update Domain".

You can have up to five separate update domains per servers. In other words, at best you can guarantee that no more than 20% of the virtual machine instances in a service will ever be updated at once. Assuming you have at least five virtual machines.

Similarly, if there's a hardware failure in Azure, for example, a rack fails, your virtual machines are not located on the same rack to reduce the chances of all of them failing simultaneously. This is known as a "Fault Domain". You can have two fault domains per service. In other words, at best you can guarantee that no more than 50% of the VM instances in a service will ever fail at once.

In this demo, we'll see how to scale up and down a virtual machine, as well as look at the auto-scaler. You'll see the size option in the settings blade, down the bottom here. Clicking that will open a set of VM sizes that are available. As you can see there's a wide variety of sizes and their associated costs. From the A1's, which have a single core, and less than two gigs of RAM, to the D11 version two, which have 14 gigs of RAM, and are backed by a physical SSD storage drive. Note that depending on your region and subscription, some VM sizes may not be available.

Stay tuned for the next section, where we will discuss how to design and implement storage in the context of a virtual machine.

About the Author

Isaac has been using Microsoft Azure for several years now, working across the various aspects of the service for a variety of customers and systems. He’s a Microsoft MVP and a Microsoft Azure Insider, as well as a proponent of functional programming, in particular F#. As a software developer by trade, he’s a big fan of platform services that allow developers to focus on delivering business value.