Tuesday, August 30, 2011

New TechNet forums!

New forums atTechNet
Do you have any questions about cloud computing?
Do you want to know more about the technology and processes that defines the magic?
Ever wonder about the differences between IaaS, PaaS, and SaaS?
And what about the deployment models? What is a private cloud, and what is a public cloud?

You can now ask questions to the community, Microsoft, and MVP`s at http://social.technet.microsoft.com/Forums/en-US/category/cloudcomputing

I guess I`ll see you over there in the near future.


Saturday, August 27, 2011

Microsoft Private Cloud

Journalists, decisions makers, IT-pro`s, developers, farmers, users, consumers, and my mother.

What? What do these peoples have in common?

-          They all have their very own definition of the cloud

First of all, many people believe that a cloud computing is an all-or-nothing “thing”, and that you either have it, or you don`t.
And this is – of course not true.

It`s not a secret that I work a lot with Microsoft technology. Both the products that embraces the public cloud, but most of the time, the private cloud.
Most of the people I speak with have some sort of understanding that Windows Azure is located in the public cloud – somewhere, and somehow. That is great, or at least a beginning. But if the talk moves toward the thing called “private cloud”, people seem to tune out.

Who should know what a Private Cloud is, and why should they care?

Recently, I got the honor to be made as a moderator In the SCVMM forum, and I`m now able to underline the important foundation of a private cloud for the persons who asks the questions. It may be an IT-pro, it may be a developer, it may also be a farmer – I don`t know, but they get their answers.
The most common misunderstanding is as follows:

“We got server virtualization, so yes, we have a Private Cloud”

Microsoft`s approach to a private cloud is much more than “just” server virtualization.

So far, this article may sound a bit disorderly, so once again I will try to start at the beginning.

Cloud computing is far more than server virtualization.
A highly virtualized infrastructure is not cloud computing, but an important stepping stone towards cloud computing. You can even do cloud computing without virtualization. But who has the money for that, and who does not want to use virtualization in the first place, even if they discard the entire cloud-extension?
For that`s what it is. A private cloud is an extension to your already highly virtualized datacenter. It brings in some important and useful mechanism into your organization.
We`re talking about being able to scale out and in, the users can provisioning their own resources – when they need it. Things are fault tolerant at many layers and most important – your business saves money because a cloud is optimizing the resources, and gives the organization a chance to respond to peaks, new business requirements, and new markets. And add automation to all the processes, and you`ll see that it`s far more than just server virtualization.

I always use NIST`s definition of cloud computing as my reference: http://csrc.nist.gov/publications/drafts/800-145/Draft-SP-800-145_cloud-definition.pdf

To work with cloud computing, and private cloud in general, it`s important to know the following.

·         What is cloud computing
·         What is the composition of a private cloud with Microsoft products
·         What business am I in

You have to know these factors to be able to work with a private cloud, and you have to become an expert in using this technology.
Cloud computing is a major paradigm shift, and there are so many new opportunities for entire industry, whether you are an IT-pro or a developer.
Know the difference between the deployment models (public, private, hybrid), and know the different service models (IaaS, PaaS, SaaS) and what Microsoft offers.
A private cloud is mostly about Infrastructure – as a Service.
The products that summarize the composition of a private cloud is:

·         Windows Server 2008 R2 SP1 with Hyper-V
·         Active Directory
·         DNS
·         ADFS
·         System Center Virtual Machine Manager
·         System Center Operations Manager
·         System Center Configuration Manager
·         System Center Data Protection Manager
·         System Center Self Service Portal
·         System Center Orchestrator
·         System Center Service Manager
·         System Center App Controller

As you can see, a cloud is more than the virtual layer, which Hyper-V stands for. You`ll also need management, automation, operations, security, and support.  

So, to take advantage of this, train your skills on the additional layers that composite a cloud, and not only the infrastructure and the virtualization-part.

Tuesday, August 9, 2011

Capability Profiles in SCVMM 2012

As I have stated before, SCVMM 2012 had some major improvements all over the place, and also in the Library.

Another interesting feature that I have found quite useful, is the possibility to create “Capability Profiles”.
For example; you have a Hyper-V Cluster that also plays a part in one of your defined clouds. You want to make sure that everything that is put onto that cloud, are configured as Highly Available.
There are many reasons for that, especially if you are dealing with Dynamic Optimization and Power Optimization – you want your resources to be available, and not directly attached to a physical server.

The configurable options in a Capability Profile:

·         Fabric Compatibility (Hyper-V virtualization host, VMware virtualization host, and Xen virtualization host)
·         Processor Range (This may vary from hypervisor to hypervisor. Hyper-V is currently limited to max 4 vCPU, while VMWare and Xen supports so much as 8 vCPU)
·         Memory Range (This one also vary from hypervisor to hypervisor)
·         Microsoft Synthetic Video Adapter (For Hyper-V only)
·         DVD Drive Range (Number of DVD drivers)
·         Shared Image Mode (For Hyper-V only)
·         Bus Configuration (Contains configuration of the virtual disks, meaning if the profile should allow Fixed Disk Mode, Dynamic Disk Mode etc. You may for example not want your user to create VMs with differential disks on your cloud, so you can specify that it is not allowed)
·         Network Adapters (Minimum and maximum vNICs)
·         Network Optimization (For Hyper-V only)
·         Advanced (Here you can configure the profile to enforce Highly Available VM Mode, and define it as required)

Create a Capability Profile for a Hyper-V Cloud, that requires VMs and services to be configured as Highly Available.

1.       Navigate to the Library
2.       Extend “Profiles”
3.       Right-click on Capability Profiles and select “Create Capability Profile”
4.       Name the profile with whatever you want, and remember to type a realese. Click “Next”
5.       In the next window, select “Hyper-V virtualization host” in the “Fabric Compatibility”.
6.       Scroll down to the last option located under the “Advanced” section, and mark the Highly available VM mode field as “Required”.

Now, you have created a Capability Profile that requires the resources to be Highly Available. But this profile needs to take place somewhere. To put it into action, we navigate further to one of our clouds.
In the “VMs and Services” pane, right click your cloud, and select “Properties”.
If you take a closer look, you will recognize the “Capability Profiles” option down to the left.
Click here, and mark the newly created Capability Profile you just created.
Once this is done, click “ok” and you have made the change.

What next?
You will need to modify your resources in the Library, to match this Capability Profile – as long as they should be placed on this cloud.  This includes Hardware Profiles and VM/Service Templates.

I will provide you with a PowerShell script to update your resources one day, when I have a little more time to spend on this one.


Thursday, August 4, 2011

Troubleshooting SCVMM crashes (collect traces)

I am currently testing the SCVMM 2012 BETA, and I want to share how you collect SCVMM traces.
(This applies to both SCVMM 2008 R2 and SCVMM 2012)

I had an issue that when I added a WSUS server to the Fabric, the VMMservice crashed. It only crashed when it was properly configured. That means, if I configured the wrong TCP-port for the WSUS connection, I got a correct error message. But when I hit the high notes, it crashed with no mercy.

The recipe that Carmen Summers (the Program Manager of SCVMM) has made available:

From what computer should I collect the traces:

If it`s a console crash issue.

·         Please collect the traces from both the computer where you run admin console, and your VMM Server.

If it’s an “Add Hosts” issue,
·         Please collect the traces from the VMM server;
If it’s a host status (Needs Attention) or VM issue,
·         Please collect the traces from both the VMM server and the host in question.
If it's self-service portal issue,
·         Please collect the traces from the Web server and the VMM server
What are the steps to collect traces?

Install DebugView from http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx on your VMM server, your host in question and your Web server (if it's a self-service portal issue).
Save the following code into a text file and name it as "odsflags.cmd":

@echo off
echo ODS control flags - only trace with set flags will go to ODS
if (%1)==() goto :HELP
if (%1)==(-?) goto :HELP
if (%1)==(/?) goto :HELP
echo Setting flag to %1...
reg ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Tracing\Microsoft\Carmine" /v ODSFLAGS /t REG_DWORD /d %1 /f
echo Done.
goto :EXIT

echo Usage: odsflags [flag], where flag is
echo TRACE_ERROR = 0x2,
echo TRACE_DBG_NORMAL = 0x4,
echo TRACE_PERF = 0x10,
echo TRACE_TEST_INFO = 0x20,
echo TRACE_TEST_ERROR = 0x80,


·         Save the following code into a text file and name it as "odson.reg":

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Tracing\Microsoft\Carmine]

·         Save the following code into a text file and name it as "odsoff.reg":

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Tracing\Microsoft\Carmine]

·         Copy the above three files onto your VMM server, your host in question and your Web server (if it's a self-service portal issue).
·         In a command window on the machine that you want to capture VMM tracing, run “odson.reg” and “odsflags.cmd 255”. (If you need to collect traces for both VMM Server and the host or the Web server, make sure to run these commands on all computers.)
·         Open DebugView and run it as administrator, make sure that in its Capture menu, you have both "Capture Win32" and "Capture Global Win32" checked. You should be able to see tracing from the VMM components showing up in the DebugView. (If you need to collect traces for both VMM Server and the host, make sure to do these steps on all computers.)
·         Restart vmmservice on VMM server with “net stop vmmservice” and “net start vmmservice”.
·         Restart the agent service on the host with “net stop vmmagent” and “net start vmmagent”.
·         Restart the IIS service on the Web server with "iisreset".
·         Reproduce the issue that you found.
·         Save the output from the DebugView to a text file and email it to the people who can help you diagnose the issue.
·         Don't forget to turn off the tracing after you are done collecting by running "odsoff.reg" on the machine


In my case, where the VMMservice crashed when I added the WSUS server, I was able to locate the following in the VMM.LOG afterwards:

00004729             77.38172150       [5092] 13E4.0868::07/27-21:26:31.413#04:UpdateServer.cs(265): Adding Update Server to Pangaea, ServerName - VMM.lab.local, Port - 8530, SSLEnabled - False             
00004730             77.38208008       [3668] 0E54.0AD4::07/27-21:26:31.411#21:Callback.cs(53): Client uuid:a3258eb4-18cf-4f58-811f-0692c049677e;id=1 - events processed       
00004731             77.48566437       [3668] 0E54.0AD0::07/27-21:26:31.523#24:ConsoleViewModel.cs(294): UI Load: ConsoleViewModel completed AddPage for Jobs - 00:00:00.1359864    
00004732             77.48571014       [3668] 0E54.0AD0::07/27-21:26:31.523#24:ConsoleViewModel.cs(303): ConsoleViewModel begin OnClientCacheInitialized
00004733             77.66319275       [3668] 0E54.0AD0::07/27-21:26:31.700#24:ConsoleViewModel.cs(329): UI Load: ConsoleViewModel completed OnClientCacheInitialized - 00:00:00.1769823      
00004734             77.94854736       [432]    
00004735             77.94854736       [432] *** HR originated: -2147024774  
00004736             77.94854736       [432] ***   Source File: d:\iso_whid\amd64fre\base\isolation\com\copyout.cpp, line 1302               
00004737             77.94854736       [432]    
00004738             77.94861603       [432]    
00004739             77.94861603       [432] *** HR propagated: -2147024774              
00004740             77.94861603       [432] ***   Source File: d:\iso_whid\amd64fre\base\isolation\com\enumidentityattribute.cpp, line 144           
00004741             77.94861603       [432]    
00004742             77.94880676       [432]    
00004743             77.94880676       [432] *** HR originated: -2147024774  
00004744             77.94880676       [432] ***   Source File: d:\iso_whid\amd64fre\base\isolation\com\copyout.cpp, line 1302               
00004745             77.94880676       [432]    
00004746             77.94882202       [432]    
00004747             77.94882202       [432] *** HR propagated: -2147024774              
00004748             77.94882202       [432] ***   Source File: d:\iso_whid\amd64fre\base\isolation\com\enumidentityattribute.cpp, line 144           
00004749             77.94882202       [432]    
00004750             77.94924927       [432]    
00004751             77.94924927       [432] *** HR originated: -2147024774  
00004752             77.94924927       [432] ***   Source File: d:\iso_whid\amd64fre\base\isolation\com\copyout.cpp, line 1302               
00004753             77.94924927       [432]    
00004754             77.94928741       [432]    
00004755             77.94928741       [432] *** HR propagated: -2147024774              
00004756             77.94928741       [432] ***   Source File: d:\iso_whid\amd64fre\base\isolation\com\enumidentityattribute.cpp, line 144           
00004757             77.94928741       [432]    
00004758             82.27567291       [5092] 13E4.0868::07/27-21:26:36.311#04:WatsonExceptionReport.cs(756): Unhandled exception caught.          
00004759             82.27619934       [5092] 13E4.0868::07/27-21:26:36.312#04:WatsonExceptionReport.cs(757): Unhandled exception.         
00004760             82.27857208       [5092] 13E4.0868::07/27-21:26:36.314#04:WatsonExceptionReport.cs(757): System.ArgumentOutOfRangeException: An attempt was made to access an invalid or unsupported language.                

The last line indicates that this is an issue caused by my regional settings on my servers. Since this is a Beta, there is no support for non US regional settings.

Monday, August 1, 2011

SCVMM 2012 - the main tool for you infrastructure and clouds

SCVMM 2008 R2 had a lack of features when it came to managing your cluster, and you would normally rely on the information you got from Failover Cluster Manager, and not the SCVMM 2008 R2 console.
It would be moderate to say that this has changed a bit with SCVMM 2012.

You are not only able to manage your Hyper-V Cluster with SCVMM 2012, you can also create Hyper-V Clusters.

A Hyper-V Cluster is a major part of the private cloud, and is combination of the physical resources configured in the Fabric. As I have written several times before, SCVMM 2012 gives you the possibility to manage your entire virtual datacenter with a single console. This includes deep storage integration through the SMI-S protocol, out of band management so that you can deploy bare metal Hyper-V servers, and to use them in conjunction with Power Optimization and Dynamic Optimization (Dynamic Optimization does not require out of band management).

In a nutshell, you are able to do the following to get your private cloud ready:

1)      Deploy SCVMM 2012
2)      Deploy bare metal Hyper-V servers
3)      Deploy Hyper-V Clusters
4)      Assign LUN`s, CSV, and networking
5)      Take portions of the physical resources in the Fabric, and assign it to a private cloud that you define
6)      Assign the cloud to your users. (Normally after you have configured some available and usuable resources in the library)

Another thing to note, is that SCVMM 2008 R2 did not let you create stand-alone VM`s on the cluster, but you`re able to do this in SCVMM 2012. This is ideal when it comes to the domain controller-dilemma  - since you should not locate your DC`s on a CSV only, but have them outside the cluster, so that the cluster would come online again after a complete shutdown. In other words, you can put them on dedicated LUN`s, or on DAS. For more information, see the Failover Clustering and Domain Requirements (by example) article.

Another feature that is worth mentioning, is the ability to patch your cluster with a dedicated WSUS server. This one will save you some serious amount of time, since there is no need for manual input.

Again, in a nutshell, this is what you would do:

1)      Define a baseline of patches that WSUS should deploy
2)      All the servers in the Fabric would be scanned to determine which hosts are not compliant
3)      The non-compliant hosts are identified
4)      An orchestrated patching workload will place a node into “maintenance mode”, live migrate the VMs to the other nodes in the cluster, patch the node, remote it from “maintenance mode”, and move the VM`s back

So, with SCVMM 2012 on its way, we can look forward to a more simplified day-to-day job.
From now on, this will be the tool, not just to manage your virtual infrastructure and clouds, but also the starting point when you are dealing with deployment of the various servers, storage, and networks you are in control of.