Many organizations have used virtualization to help reduce server sprawl: an overabundance of servers in their environments. Deploying virtual machines (VMs) willy-nilly, however, can lead to VM sprawl, defeating the purpose of virtualizating the servers. In this tip, I present some best practices for managing VMs to prevent VM sprawl.
Server sprawl is caused, in most cases, by systems administrators deploying a new computer just to support a lightweight Web application or a simple workload that could easily have been placed on another server. In other cases, the proliferation was unavoidable, as some applications and services don't play nicely with others on the same machine.
What causes virtual machine sprawl?
Virtualization technology can help resolve the latter problem by allowing multiple independent workloads to run on the same computer at the same time. The process of deploying a new VM can be performed in a matter of minutes, thereby reducing costs and administrative effort. That ease of deployment also makes it easy to end up with more VMs than you can manage, otherwise known as VM sprawl. IT organizations often find themselves tasked with keeping track of dozens or hundreds of new VMs seemingly overnight. When considering security, performance, reliability, and adhering to IT standards, the task of managing virtual systems can quickly become overwhelming. Here are some ways to reduce some of the headaches.
Virtual machine deployment
The first step in managing VM sprawl is related to reigning in the deployment of new VMs. Just because end-users and systems administrators have the ability to deploy new virtual machines does not mean that they should. IT departments should define a process for the deployment of a new VM. Figure 1 (below) provides a basic example of some typical steps. Often, the suggestion of a process conjures up an image of a small army of pointy-haired bosses creating a new bureaucracy. In reality, it's certainly possible to perform all of the steps in a process such as this in a matter of minutes.
Figure 1: Possible steps in a VM deployment process.
Best Practice: IT departments should remain involved in all virtual machine deployments.
Another problem related to the widespread deployment of VMs is a lack of configuration consistency. Since users can choose from a wide array of operating systems and applications to run within a VM, the number of variations can grow exponentially. Additionally, the VMs that are deployed may not adhere to IT standards and guidelines for security and other settings.
One way to minimize these effects is for IT organizations to create a standardized set of base images in what is often referred to as a VM library. Users should be required to begin the creation of a new VM using one of these images. Figure 2 (below) provides some examples of types of VM images that might be created.
Figure 2: Examples of virtual machine images that might be available in a VM library.
While developing a list of standard configurations can help reduce the number of configurations that are supported, IT staff should still remember the need to verify configurations before deployment into a production environment.
Best Practice: All users and systems administrators should base their deployments on IT-approved base images and supported configurations.
Keeping virtual machines up-to-date
An important concern for all deployments – both physical and virtual – is keeping systems up-to-date. Security patches and application upgrades can help minimize the risk of reliability and data loss. The good news is that IT organizations can depend on their standard patch and update deployment tools for managing virtual machines. Of course, this will only be possible if the guest OS (operating system) is supported by those tools (another good reason for implementing configuration management).
Best Practice: Treat productions VMs as if they were physical machines, and ensure that they are monitored and updated regularly.
Contain yourself (and your virtual machines)!
If you're responsible for limiting VM sprawl in your environment, you know that it's important to give users what they want. Reducing deployment times and providing access to virtualization functionality can positively impact productivity while minimizing data center impacts. By keeping IT departments involved in deployment decisions, and making sure that VMs are properly managed, organizations can enjoy these benefits without suffering from unmitigated VM sprawl.
About the author: Anil Desai is an independent consultant based in Austin, Tex. He specializes in evaluating, implementing and managing solutions based on Microsoft technologies. He has worked extensively with Microsoft's Server products and the .NET development platform and has managed datacenter environments that support thousands of virtual machines. Anil is an MCSE, MCSD, MCDBA and a Microsoft MVP (Windows Server -- Management Infrastructure).