Making Sense of the SharePoint World


SharePoint Virtualization

Nov-122009

MCj04115480000[1]All of Your Eggs in One Basket?

Every time a new version of a virtualization tool comes out, people get all excited about the possibility of reducing the costs of running their data centers. Most of them are thinking in terms of hardware consolidation, but virtualized environments also allow for new ways of handling resilience and recovery as well.

This is all well and good, but then you run into what I call "the new hammer syndrome". The idea is, after you buy a new hammer, everything starts to look like a nail. You keep thinking of ways to apply this new tool. Some of them are great. Others, not so much.

Virtualization and SharePoint

SharePoint, in particular, frequently seems like a ripe target for virtualization. It has a multitude of roles, which can be (and often are) distributed among many servers. Data center managers see all of this hardware and envision collapsing it onto a single box. And, SharePoint is officially supported in virtualized environments. It seems like a match made in heaven, doesn't it?

But, not so fast! Take a step back and think about what I just said. You are taking all of these SharePoint roles, and spreading them out among multiple servers. Now you want to take all of these servers and virtualize them back onto a single piece of hardware? Where is the sense in that?

Why did you build out that many servers in the first place?

Pausing while people try to gather back the pieces of their exploded heads from that bit of circular logic...

Profound, isn't it? Almost like a Zen koan.

On Over-Engineering a Solution

SharePoint will very happily run all of its roles on a single server (physical or virtual), if you want it to. So, why would you want to split the roles at all? There are really only two reasons (good ones, anyway) - performance, and resilience. (No, I don't consider being able to point at a monitoring station covering a half-dozen or more servers and saying "Look at all of the systems I manage in my SharePoint farm" a good reason.)

From a performance standpoint, some SharePoint roles are real resource hogs. The two big ones would be SQL Server and Search Indexing/Crawling. SQL Server, though not technically part of SharePoint, is hit pretty much constantly by nearly every SharePoint component, and so is almost always set aside on separate hardware. The search crawl process, though intense, is "peaky." In other words, it goes through cycles of short bursts of intense activity, followed by periods of near idleness. In comparison, the web front-end functionality is a cake-walk. A single WFE server can handle potentially many thousands of users without breaking a sweat.

In fact, a big, modern server can probably handle hundreds, if not thousands, of users even with everything except SQL Server running on it. (Naturally, this depends upon just what those users are doing.) So performance is rarely the real reason for splitting off most of SharePoint's functions, except in very large environments.

That leaves resilience. Resilience is the ability of a system to keep on going, even if a piece of it fails. By splitting the SharePoint roles onto several servers, and having multiple instances of the roles that face your users, you can create a system which can tolerate a failure of any one component with minimal short-term impact. It is possible to take this too far, however. It isn't a case of "if two are good, three must be better, and five are better still."

What good is having three or more web front end servers, when they all sit practically idle at singe-digit percent utilization - even during peak periods? Not very good at all. At a minimum, it is not a very efficient use of resources. This is the kind of thing that makes virtualization look really attractive.

Balance

So, is virtualization really the answer? Maybe. Or maybe not. Let's get back to that biggest of little questions - "Why?"

Why did you build out your farm onto multiple servers?

Did you build out this big farm because your usage is so heavy, you were stressing out anything less? Then you are almost certainly not a good candidate for virtualization. In this case, you've got your hardware optimized to its load. Virtualization is just going to add another layer, and if you're already fully loading your systems, you won't get any benefit from host sharing with other virtual servers. The only reason you might justify going virtual is to be able to quickly replicate a failed system from an image, or shift a running image onto another host. But can you handle the extra overhead?

Did you build out your farm for resilience? The minimum "fully" resilient SharePoint farm is a configuration I call "2.1+". That's two servers running as WFE and Query servers (along with Excel Services in Enterprise Edition), one application server running the Index role (of which there can be only one per SSP) and optionally running other duplicated roles as well, "plus" a properly specified SQL cluster. This configuration can handle thousands of users, even with modest (by today's standards) hardware. In fact, from a performance standpoint it is probably still overkill for most organizations. Here, you might find some room to virtualize. But be careful - you split these roles out in the first place to avoid having a single point of failure. Virtualizing them and simply placing all of the VM's on a single host eliminates that benefit.

And What About SQL Server?

I decided to write about virtualization because I've been approached several times in the last week or so with folks asking about virtualizing the SQL Server side of SharePoint. Up until now, even when virtualization has been appropriate for some SharePoint components, I've always advised against making SQL virtual. But VMWare has just introduced a new version for which their marketing message is claiming that SQL virtualization is now a good thing.

Frankly, I'm not convinced. My main concern is that SharePoint is a very heavy user of SQL Server. Again it boils down to your utilization. Are your SQL Servers already CPU or disk I/O bound? If so, virtualization isn't going to help matters. If not, then you might be OK. Even if you decide to virtualize computation, I would still avoid virtualizing the data storage without first doing extensive load testing.

Going Forward

Ultimately, all computer configuration involves trade-offs. Cost, performance, and resilience are three corners of one of those "pick any two" engineering triangle conundrums. Virtualization doesn't eliminate the trade-off, but it can shift the balance toward the lower-cost corner. Whether or not it is appropriate in your case will depend upon your server load and tolerance for risk. In the case of SharePoint, you can achieve many of the same results as virtualization by simply re-consolidating the roles that were originally split off.

Mark Twain once said: "Keep all of your eggs in one basket - then watch that basket!" If you do decide to virtualize, make sure you take appropriate precautions. The Microsoft Consulting Services UK SharePoint Team has written an excellent series of articles on SharePoint virtualization. I suggest checking that out for more technical details.

 
Posted by Woody Windischman | 10 Comments | Trackback Url | Bookmark with:        
Tags: Administration, SharePoint, WSS, Governance, Architecture

Comments

Thursday, 12 Nov 2009 08:13 by Bob Fox
Woodster, I agree with most of your summary but some of the thoughts need futher addressing. One main is to keep in mind that you shouldnt treat or think of your virtual environment when it comes to planning or maintenance any differently than a Physicaly bound node. Its a common mistake to think that "Hey this is virtual lets just spin up a bunch of boxes and see what happens" Proper planning needs to be done here just like you would (or i hope a company would) if they were properly architecting a physical environment. SQL IS supported in a Virtual environment but even though this is true it doesnt make it right and thank you for highlighting this fact. One other thing worth mentioning is that if your a Microsoft Shop and want to manage your environments on a large scale... meaning as you explained it moving boxes onto different physical nodes.. you better have a decent tool to manage this. SCVMM handles this very nicely and you can even have it distribute the load evenly across servers that are being underutilized. Good post Woodman Bob Fox

Thursday, 12 Nov 2009 08:24 by Woody
I agree. I wasn't trying to make this a super technical article. (That's why I pointed them to the MCS UK series.) This was more to get people thinking, rather than just jumping on the bandwagon. Thinking about whether virtualization was appropriate as one factor in their planning, and if so, how?

Thursday, 12 Nov 2009 09:03 by sherod
I think you fail to understand the value of virtualization in the enterprise. Virtualization assists in provisioning systems, in DR (replication of VM is trivial than other approaches), with Backup (snapshoting the whole VM) and hardware utilizations such as Day/Night processing cycles (E.g. Physical hardware used for Sharepoint during day, ETL during night). It also permits scaling out at short notice with features like moving the VM to new hardware (whilst it is still running!). And regarding hardware resilience, I'd say any serious virtualization environments should be running against SAN storage, perhaps in a blade configuration on hardware with multiple levels of redundancy. Just my thoughts...

Thursday, 12 Nov 2009 09:12 by Woody
Sherod, Again, my point isn't that virtualization is bad. I also pointed out that "virtualized environments also allow for new ways of handling resilience and recovery as well." But, if we're honest, that isn't what is on top of most people's minds. The point is that if you are going to virtualize SharePoint, they *have to be* on your mind.

Thursday, 12 Nov 2009 09:27 by Marc D Anderson
Woody: Rarely have I read anything about virtualization (or SharePoint server planning in general) that is as rational as your post here. It's great the way you talk it through with real English words. (I'm serious.) The "new hammer syndrome" is always a problem (right now I seem to want to do everything with Web Services and jQuery because I'm working with them) and I've seen too many clients think that buying lots of expensive hardware or virtualizing things was going to make up for their lack of knowledge of what that hardware actually was going to be doing and how to monitor it. (The monitoring tools are only tools, after all: you need to understand what they are telling you.) M.

Thursday, 12 Nov 2009 09:33 by Mike Oryszak
Great article Woody! While it can work great for utility or legacy systems, extra care needs to be made when planning the move for a high I/O application like SharePoint.

Thursday, 12 Nov 2009 10:38 by Woody
Thanks Marc and Mike!

Thursday, 12 Nov 2009 11:00 by Brian
Do you have experience with the different virtualization stacks out there (Hyper V, VMware, etc)? How much overhead is each one actually creating?

Friday, 13 Nov 2009 06:58 by Woody
Brian, If you are talking about benchmarks, no, I don't have direct comparisons. The point above is that if you are going to virtualize, you need to make sure that (whatever your stack) you take the overhead into account. Not just the overhead of the stack, but the overhead of any hardware sharing that is to be done. Virtualizing a server that is nearly idle is a very different prospect than virtualizing one that is CPU bound.

Friday, 13 Nov 2009 10:02 by Bjørn Furuknap
Woody, I don't agree with your arguments, but rather than flood your comments with a long post, I've written a blog post to explain my point of view: http://furuknap.blogspot.com/2009/11/sharepoint-virtualization-response-to.html .b

Name:
URL:
Email:
Comments: