If you've read this column with any regularity, you know that I'm a proponent of virtualization. I'm a proponent of the Cloud. I'm a proponent of virtualizing every workload that can possibly be virtualized. I'm also a big proponent of being smart about computing. You can take virtualization too far. You can virtualize workloads that don't need virtualization. We're addicted to virtualization. It's just too easy to perform a physical to virtual (P2V) conversion, to create a new VM from a template or to spin up a new VM from a standard request. It's just too easy, and now, we're addicted and it's hurting our business.
Does it sound like I'm backing away from an earlier post stating that you should virtualize any and all workloads? Or does it sound like I've allowed myself to be influenced by a small faction of Ken Hess "haters" who'd rather argue than listen?
It could be that I've caved in and relented. It could be that I've simply revised history.
Or, it could be that I have something else in mind?
What I have in mind isn't leaving those workloads on physical systems. No, we've past that milestone long ago. My remedy for VM addiction is simple: Consolidate low overhead services onto single VMs.
There, I said it. Create a few high-end Utility VMs on which to host some of your services.
There's no need to create a separate VM for each and every service that you run. Doing so causes what's known as server sprawl and that's not a good thing. You don't need an individual VM to run DNS services. That's a waste of resources. And, if you're using a Windows-based VM, it's a shameful waste of a license too.
Learn to couple your services. After all, server consolidation and more efficient system use are two of the big reasons why you chose virtualization in the first place. Isn't it? Sure, it is.
So, why go into virtualization with your stern consolidation, efficient computing and money-saving collar on, when you're really just going back to business as usual? And, "business as usual" is a term which here means, wasteful.
Think about what you're doing with a new VM before you create it. In addition to DNS services, what else can you run on that system? Active Directory? MySQL? A CMS? SharePoint?
It isn't a big stretch of the imagination to believe that you can run multiple services on a single VM. You can and should.
Here are ways that you can test multiple workload compatibility on a single VM:
- What kind of load do the services place on a system (CPU, Memory, Disk, Network)?
- Do the services share any TCP ports?
- Do the workloads require multiple CPUs?
- Should the workloads have their network traffic separated by VLAN?
- Do the services require user interaction through local accounts?
Answering these questions will start you on the right track toward placing multiple services on a single VM.
Don't be afraid to mix and match those workloads. You can place a CPU-intensive service on the same system with one that uses a large memory share. You can also place a service on the VM that requires a decent amount of disk I/O. Now, you wouldn't want two services that are CPU hungry or memory hogs on the same VM. They would contend for resources and you don't need that headache.
So, the key takeaway here is to consolidate dissimilar services onto utility VMs. Separate similar services onto different ones.
Addiction is hard to shake for everyone and virtual environments are not immune to its negative effects. It's just too easy to allow the creation of another VM rather than to execute restraint. Save yourself from VM sprawl, save license fees and save money by saying "No" to VM addiction.