Friday, January 4, 2013

Installing / Upgrading Windows Server 2012 KMS Host

This guide is to install Volume Activation Services on Windows Server 2012 and then point clients to the new host.  I used KMS and have not looked into Active Directory-Based Activation (which requires Windows Server 2012 AD DS schema).

First, you should read this to better understand how the process works:

  1. Once you have your new Windows Server 2012 setup you'll need to install the new role and it's required features for Volume Activation Services.
  2. Once this is installed you'll find a new "VA Services" option on the Server Manage
  3. Right click on the server in the open Servers field and select "Volume Activation Tools".
  4. Click Next
  5. Ensure KMS is selected and the proper server is listed.  You will need to be logged in as an Enterprise Administrator.  Click Next
  6. Retrieve your KMS key from the MS VLCS login, you can find it under the relationship summary or under downloads and then clicking Keys next to Windows Server 2012.  Make sure you get the one listed as KMS (not MAK) and from the proper agreement.
  7. Input your KMS key
  8. Click Yes, this uninstalls the GVLK
  9. Activate the product.  Can be done Online or by phone.
  10. Click Yes to confirm
  11. This will return with your configuration options.  Notice Licensing Status returned "Licensed"
  12. You are now presented with the options to for firewall exceptions and DNS (srv record).
  13. Click Yes to confirm
  14. Click Close
  15. You should now see in the servers window that it shows Windows Activation as "Activated"
  16. Right click the server again and choose the option "start performance counters"

Confirming settings and DNS

To start with I checked my DNS to see what my VLMCS records where pointing at and found that nothing had changed yet (I had statically created them with my 2008 R2 KMS host).
This can be found under Forward Lookup Zones\your domain\_tcp  it's the _VLMCS record (you may not have one depending on your past setup)
Open command prompt and navigate to C:\Windows\System32
cscript slmgr.vbs /dlv

From here we can see:
  • It's licensed and activated
  • The partial license key
  • Current count of clients (zero atm)

Let's add the new VLMCS record so that we can activate another 2012 Server
in the _tcp location:
  1. Other New Record
  2. Service Location (SRV)
  3. Service = _VLMCS
  4. Protocol = _tcp
  5. Port Number = 1688
  6. Host = fqdn of server

I then deleted the old _VLMCS key and waited for replication.
From here on another 2012 server I issued cscript slmgr.vbs /ato which errored. 
Looking in the eventvwr I could see that it was still attempting to hit the old KMS server.  (event id 12288, server name is in the details).
After and ipconfig /flushdns (plus I had went to get coffee, so the time wait may have been sufficient) I ran the cscript slmgr.vbs /ato again.  Now I could see it hitting the new server properly. 
Now the server responds with:
Error: 0xC004F038 The software licensing service reported that the computer could not be activated. The count reported by your Key Management Service (KMS) is insufficient.
Once the KMS server hits it's 5 server count you'll be all set and it will begin giving out licenses.

Note:  I found that even though the KMS server showed activated a majority of my servers where 2008 R2, but only 2 servers where 2012.  The 2012 servers where giving the following:

Error: 0xC004F038 The software Licensing Service reported that the computer could not be activated. The count reported by your Key Management Service (KMS) is insufficient. Please contact your system administrator

This indicates that the KMS server hasn't hit the 5 count and activated.

2008R2 servers where activating against it without issue.

It would appear that the activation count for 2008R2 and Windows 2012 are seperate when hosted on Server 2012.  After I brought up another 3 Windows 2012 servers the KMS no longer reported the count insufficient for 2012 and the 2012 servers no longer reported the 0xC004F038 error, but rather activated as expected.