Pages

Tuesday, January 15, 2013

Deploying a Lync Server 2013 Standard Pool on Windows Server 2012

I’ve been recently reminded by an ex-colleague that I have only written a blog post demonstrating the deployment of a Lync Server 2013 Enterprise pool:

Deploying Lync Server 2013 Enterprise Pool to coexist with Lync Server 2010
http://terenceluk.blogspot.com/2012/11/deploying-lync-server-2013-enterprise.html

… but not the deployment of a Lync Server 2013 Standard pool and since I had to deploy one over this weekend, I thought I’d do a couple of screenshots so I can write one.  Note that I won’t go into the depth for the prerequisites for the deployment as I had for the enterprise pool but the same requirements apply.  Also note that I will be using Windows Server 2012 as the base operating system instead of Windows Server 2008 R2.

Install Prerequisites

Unlike Windows Server 2008 R2, you won’t need to download extra components such as .NET Framework 4.5 or PowerShell 3.0 because everything can be installed via the Add-WindowsFeature cmdlet in PowerShell.  What you’ll need to have access to is the Windows Server 2012 installation binaries because the Add-WindowsFeature cmdlet will include a switch that specifies the \sources\sxs folder.  Execute the following cmdlet from Windows PowerShell to install the prerequisites:

Add-WindowsFeature RSAT-ADDS,NET-Framework-45-Core, NET-WCF-HTTP-Activation45,Windows-Identity-Foundation,Web-Static-Content,Web-Default-Doc,Web-Http-Errors,Web-ASP-NET,Web-ASP-NET45,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Http-Logging,Web-Log-Libraries,Web-Http-Tracing,Web-Windows-Auth,Web-Filtering,Web-Stat-Compression,Web-Dyn-Compression,Web-Mgmt-Console,Web-Scripting-Tools,Web-Client-Auth,server-media-foundation,MSMQ-Server,MSMQ-Directory -Source D:\sources\sxs

image

Restart the server when the features have been installed.

Install Lync Server 2013 Core Components

Launching the Setup.exe executable for the Lync Server 2013 binaries will automatically install Microsoft Visual C++ 2012 x64 Minimum Runtime – 11.0.50727 Package so don’t bother downloading it:

image

Install the Microsoft Visual C++ 2012 x64 Minimum Runtime – 11.0.50727 Package:

image

The setup wizard will be presented to you once the Microsoft Visual C++ 2012 x64 Minimum Runtime – 11.0.50727 Package is installed:

image

Proceed by through through the installation wizard:

image

image

image

Preparing Active Directory

Other than the 2013 text, everything looks pretty much the same as the 2010 install so proceed with clicking on the Prepare Active Directory link:

image

Prepare Schema:

Continue by clicking on the Run button under Prepare Schema to extend the Active Directory schema for Lync Server 2013:

image

image

image

image

Prepare Forest:

Once the schema has been prepped verify that the schema has been replicated and then proceed with preparing the forest:

image

image

image

image

Prepare Domain:

Once the forest has been prepped verify the global catalog has been replicated and then proceed with preparing the domain:

image

image

image

image

With the domain prep completed, you can proceed with adding users or groups to the Lync administrative groups:

image

Prepare Standard Edition Sever

Prior to defining your Standard Edition Server in the Lync Server 2013 topology, you should prepare the server for the role by clicking on Prepare first Standard Edition server:

image

Proceed through the steps presented by the wizard:

image

image

image

image

Create the Lync 2013 Share

Prior to proceeding to launching the Topology Builder, decide on where you would like the Lync share to be hosted.  For the purpose of this example, we’ll be hosting it on the Standard Edition server with a folder named LyncShare:

image

Notice how the share has been created with Everyone set to read/write for the share permissions:

imageimage

Build new Lync Server 2013 Topology

Install Lync Server 2013 Administrative Tools (Topology Builder):

imageimage

Launch the Topology Builder and download the existing topology if you have an existing Lync Server 2010 deployment:

image

image

Save the downloaded topology as you usually do in Lync Server 2010:

image

Once the Topology Builder is launched, proceed with expanding the nodes on the left and you will notice the familiar layout of Lync Server 2010:

image

Right click Standard Edition Front End Servers node under Lync Server 2013 to deploy a standard server:

image

image

Enter the FQDN for your new Lync Server 2013 standard server (make sure it’s in the FQDN format):

image

Select the features you would like to enable:

imageimage

Enable collocating the mediation server role if that’s the design:

image

Decide on whether you want to enable your Edge pool to be used by this server:

image

User information is stored locally on SQL Server Express for Standard Edition servers so proceed by clicking on Next:

image

Specify the file server FQDN for the file share we created earlier:

image

Fill in the External Base URL if you know it now or you can leave it as the default then change it later:

image

I haven’t actually created a Office Web Apps Server yet so we’ll proceed without associating this standard server with one:

imageimage

Clicking on the Finish button will complete the creation of the new server:

image

Proceed with publishing the new topology:

image

image

image

image

image

Deploying the Standard Edition Server

Install Local Configuration Store:

With the Central Management Store populated with the new topology, proceed by launching the Lync Server 2013 – Deployment Wizard on the front end server, click on the Install or Update Lync Server System link:

image

image

image

image

image

Setup Lync Server Components:

Once the local configuration store has been installed, proceed with installing the Lync Server Components:

image

image

image

image

image

Request, Install and Assign Certificates:

Once the Lync Server components have been installed, proceed with requesting, installing and assigning certificates for the:

Default certificate:

  • Server default
  • Web services internal
  • Web services external

OAuthTokenIssuer

  • OAuthTokenIssuer

image

image

image

image

image

image

image

image

**Note that you can either create the certificate as exportable or not. I prefer to have an exportable certificate so I could back it up.

image

image

image

image

image

image

image

image

image

image

image

image

Complete the same procedure for OAuthTokenIssuer.

image

Start Services:

With the certificates issued and assigned, proceed with starting the services:

image

image

image

image

Check Service Status:

Every though the last step Service Status is listed as option, it’s always best to perform it anyways to ensure that all the services are listed as Started:

image

image

Launch Lync Server 2013 Control Panel:

image

Continue by associating your new Lync Server 2013 pool with the legacy Edge server (or else federation won’t work), then migrate a user over and being testing the pool’s functionalities ensuring that a migrated users can log in with their Lync Server 2010 client from the internal network or from external through the Edge server.

Monday, January 14, 2013

Lync Server 2013 Prepare Forest fails with “Prepare Forest Active Directory settings execution failed on an unrecoverable error. ForestPrepareTask execution failed on an unrecoverable error.”

Problem

You attempt to prepare the forest of your Active Directory for Lync Server 2013:

image

image

image

… but the step fails with:

Prepare Forest Active Directory settings execution failed on an unrecoverable error. ForestPrepareTask execution failed on an unrecoverable error.

image

Reviewing the logs show the following error:

TaskFailed: Task executation failed.

Error: Existing universal groups were found in "CN=Users,DC=domainName,DC=internal". Specify where to create new Lync Server universal groups explicitly at the command line with the GroupDomain parameter.

image

Solution

There are probably more than one reason that could cause this issue but the top searches via Google suggest that this happens when the Lync Server universal groups get moved out of the default Users container:

http://777notes.wordpress.com/2012/11/22/lync-2013-prepare-current-forest-task-failed/

http://social.technet.microsoft.com/Forums/zh/ocsplanningdeployment/thread/f3ab494b-fc9e-43ae-8268-411ead5e7317

After validating that all of the groups were never moved from the default Users container, I went ahead and re-ran the forest prep wizard but this time entered the domain FQDN:

image

… which lead to the preparation successfully completing without any errors:

image

The environment I was working with has only 1 domain in 1 forest so I’m unsure as to why I had to specify the domain but since I was in a rush to move forward, I’ll see if I can come back to this at a later time to determine the cause.

Sunday, January 13, 2013

Searching in Exchange Server 2010 OWA returns: “The action couldn’t be completed. Please try again.”

Problem

You attempt to search the inbox of a mailbox on Exchange Server 2010 with SP2 Outlook Web App (OWA) but receive the following message:

The action couldn’t be completed. Please try again.

image

Logging onto the Exchange server and reviewing the Task Manager shows that the Microsoft.Exchange.Search.ExSearch.exe process is consuming high amounts of the CPU:

image

Reviewing the Application logs show the following event ID 9842 logged:

image

Function CISearch::EcGetRowsetAndAccessor detected that content indexing was disabled for database ‘MailboxStoreName’ because of error '0x80041820' from MSSearch.

image

You’ve tried executing the Repair-ExchangeSearchSymlinks.ps1 script from http://gallery.technet.microsoft.com/scriptcenter/16afe88b-6c6d-49a3-8b03-2a2ece27f61a and then running Test-ExchangeSearch but still receive errors:

image

You’ve also tried using the ResetSearchIndex.ps1 (http://technet.microsoft.com/en-us/library/aa995966(EXCHG.80).aspx) script but still receive errors:

image

image

Solution

After trying the common solutions suggested by forum posts without any luck, what ended up fixing this issue for me was rerunning the prepareAD and prepareSchema from the Exchange Server 2010 Service Pack 2 setup.exe:

setup /preparead

image

setup /prepareSchema

image

Then restarting the Microsoft Exchange Search Indexer service:

image

… and the Microsoft Exchange Information Store:

image