Monday, June 11, 2012

Reintroducing Windows Azure, Part 4: Linux Virtual Machines

In this series we’re taking a fresh look at Windows Azure, which was re-launched on June 7 with a highly-publicized Meet Windows Azure event. In Part 3 we looked at the new Virtual Machines feature from a Windows perspective, and here in Part 4 we’ll do it from a Linux perspective.

The Linux Experience
We’ve already seen how Virtual Machines work generally, but Windows Azure now also supports Linux. What is the Linux experience? We’ll perform the same tasks we did in Part 3, this time using Linux. You’ll see that the procedures are similar though not identical for working with Linux VMs. Well cover creating a Linux VM, remote connecting to a cloud VM, creating an image from a VM, and creating instances from an image.

Creating a Linux VM
We can create a Linux VM by selecting CREATE A NEW VIRTUAL MACHINE in the Virtual Machines area of the portal, or by clicking + New at the bottom left. Select FROM GALLERY, and a list of images will be displayed that includes several flavors of Linux such as OpenLogic CentOS, SUSE Linux Enterprise Server, Ubuntu Server, and openSUSE. We’ll choose openSUSE here.

As we complete the wizard, we’re prompted to provide the following information:
· A name and DNS name for our Virtual Machine (we’re going with “susie” in our example)
· Administrator credentials for remote connections
· VM size
· Region (the data center to provision in)

You’re also accepting the license terms of the Linux distribution as you do this.

With the wizard complete, provisioning begins. You’ll initially see a Starting (provisioning) status.

When you see a status of Running, which will take a few minutes, provisioning is complete and the VM can be used.

Windows Azure Virtual Machines are persistent, meaning the disk is backed by triple-redundant storage, so we don’t have to worry about losing changes to local disk files.
Soon, we’ll be able to see the usage metrics of our VM in the portal. Metrics include CPU performance, data in/out, and disk read/write throughput.

Remote Connecting to a Linux VM
There are several ways to connect to a Linux VM, such as ssh, vnc, and putty. To connect from a Windows PC, ssh or putty can be used. Here, we’ll be connecting from a Windows PC using putty.exe.

By clicking through to the detail page on the portal, we can see the information we need to make a remote connection.

Clicking Open makes a connection….

Now we’re connected. We enter the administrator credentials we specified when we created the VM to log in.

After performing whatever work we want, we can log out and end the session.

At this point you might just start using your VM, but sometimes you'll want to  derive a reusable image from it. That's what we'll do in the next step.

Creating a Reusable Image from a Linux VM
After setting up a Linux VM the way we want it, we may want to use this configuration again in the future without having to set it up manually again. We do this by creating an image. This involves three steps:

1.       Prep the VM for capture.
2.       Shut down the VM.
3.       Capture the VM’s disk and create an image from it.

Step 1: We invoke the Windows Azure Linux Agent with the command waagent -deprovision. Note, the exact path for this command may vary from one Linux distro to the next.

Step 2: With the image deprovisioned, we shut it down, using the portal’s SHUTDOWNcommand. Wait until the status changes to Stopped.

Step 3: With the VM stopped, we capture its VHD into an image using the portal’s CAPTURE command. We name our image and confirm that we have de-provisioned the VM.

With completion of the capture, our original VM is decommissioned but we now have an image named MySuse listed in the Images section:

Now we can create instances from this image. Let’s create a new virtual machine from our gallery. Our newly created MySuse image is listed in the gallery along with the default images from Microsoft:

We complete the wizard, and soon our VM instance is provisioned.

We can proceed to create additional instances from the same image. Let’s create another, named MySuse-02, and link it to the first image (MySuse-01) so they can work together (for example, to share a load-balanced endpoint).

Lastly, we can put these two machines in the same availability set. That means they will be distributed across different fault domains in the data center, so that even a large failure (such as a power supply or a rack switch) will not take out all servers.

When provisioning completes, we have two VM instances created from our gallery image.

If our VMs were set up to handle web traffic, we would next add a load-balanced HTTP endpoint just as we did in Part 3. The procedure is identical, so we won’t repeat it here.

Windows Azure Virtual Machines provides an exciting IaaS counterpart to the platform’s traditional PaaS offering. The new portal and ability to do in-cloud VM composition make this feature very accessible. In this post we showed that the capabilities and level of experience for Linux match that provided for Windows. The support for both operating systems is top notch.

No comments: