During a Lync 2013 deployment, a Lync 2013 Front End service could fail for a number of different reasons. I've noticed that there's quite a bit of confusion as to why this failure occurs and what to do when it happens. So, I'll first share some common failure scenarios so that you can avoid them. I'll then discuss what you need to know and what you need to do if the Front End service fails. That way, you can be better prepared and feel more comfortable restarting it.
Common Failure Scenarios
When you're deploying or maintaining Front End Servers, you might inadvertently trigger a Front End service failure. For example, when you're deploying a Lync 2013 Front End Server or using Topology Builder to edit the existing topology, you might try to publish more Front End Servers than you're ready to deploy. Or you might have several Front End Servers (let's say three) and you try to reboot two of them at the same time (which isn't a good thing to do). In either case, you could easily find yourself in a situation where the Front End service appears in a "Starting" state, after which it eventually stops, leaving the server unable to act as a registrar for Lync users.
Another situation is if you lose all your Front End Servers (let's say three again) at the same time because of an event such as a power outage. In this case, you'll likely lose quorum for your Lync 2013 pool, causing the Front End service to fail. (To find out more about quorums and how to keep them going, see my article "Microsoft Lync Server 2013 Front End Maintenance.")
As you can see, these scenarios aren't far-fetched. They could happen, so you need to be prepared.
What You Need to Know
If you find that your Lync 2013 pool is inoperable because the Front End service has stopped, you need to get out of that predicament as quickly as possible. Before I show you how to do so, though, you need to be familiar with several Windows PowerShell cmdlets in the Lync Server Management Shell.
- You can use the Get-CsPoolFabricState cmdlet with the -PoolFqdn parameter to determine the current state of your Lync 2013 pool.
- You can use the Reset-CsPoolRegistrarState cmdlet with the -PoolFqdn and -ResetType ServiceReset parameters to stop, then restart all the Lync-related services for the pool. A service reset is typically used when the Lync 2013 pool isn't available during configuration. Note that if you don't include the -ResetType parameter (i.e., just use Reset-CsPoolRegistrarState -PoolFqdn), a service reset is performed by default.
- You can use the Reset-CsPoolRegistrarState cmdlet with the -PoolFqdn and -ResetType QuorumLossRecovery parameters to perform a quorum loss recovery reset. You typically do this when the number of active (i.e., currently running) Front End servers falls below the quorum state. PowerShell will then reload the user data from the backup store for the routing groups currently in quorum loss. You can also perform a quorum loss recovery reset when you have to reboot the entire Lync 2013 pool at the same time.
- You can use the Reset-CsPoolRegistrarState cmdlet with the -PoolFqdn and -ResetType FullReset parameters to perform a full reset of the Lync 2013 pool. When you choose FullReset as the -ResetType parameter's value, PowerShell not only performs a reset (i.e., the same type of reset used when QuorumLossRecovery is specified as the -ResetType parameter's value) but also rebuilds the local Lync Server databases. As a result, a full reset can be potentially long and resource-intensive, depending on the size of your databases.
What You Need to Do
Using the PowerShell cmdlets just discussed, let's explore how to restart a Front End service that has failed. The first thing you need to do is determine the current state of the Lync Front End pool. To do so, you can run the Get-CsPoolFabricState cmdlet. As Figure 1 shows, you'll get a good idea of the pool's current state, what nodes need to be rebooted, and the order in which they need to be booted.
Based on what you discover about the Front End pool's state, let's say you decide the best action is to stop, then restart all the Lync-related services for the pool by using the Reset-CsPoolRegistrarState cmdlet with the -PoolFqdn parameter. Without adding any additional syntax, the cmdlet will display the options shown in Figure 2.
When you enter Y to proceed, PowerShell will stop all the Lync-related services, as Figure 3 shows. After they're all stopped, PowerShell will restart each one.
Let's say after discovering the state of the Front End pool in Figure 1, you decide there needs to be a more stringent reset done to the Lync quorum, so you run the Reset-CsPoolRegistrarState cmdlet with the -PoolFqdn and -ResetType FullReset parameters, as shown in Figure 4. When you run this command, PowerShell will perform a full reset of the pool, which ultimately rebuilds the local Lync Server databases that are located on the Front End Servers.
There will be times during a deployment when you publish too many Front End Servers at the same time or when you reboot too many servers concurrently during maintenance. These accidents don't have to spell disaster for Lync 2013. By becoming familiar with how to use the PowerShell cmdlets I discussed, you can be better prepared and feel more comfortable restarting the Front End service if it fails.