The Topology Service Is Not Available in The Farm

While playing around with my SharePoint 2016 farm, I was creating the managed metadata service application which failed with the error "The topology service is not available in the farm"! Honestly, I've never experienced this error on any preceding SharePoint version, but the error message is very descriptive...

 

Hence, I had a look on my SharePoint service instances by running the below command via SharePoint management shell, and noticed that the service "Application Discovery and Load Balancer Service" is disabled!

 Get-SPServiceInstance -All | ?{$_.TypeName -eq "Application Discovery and Load Balancer Service"} 

N.B., if you run the above command without the parameter "-All", the service instance "Application Discovery and Load Balancer Service" won't show up at all...

 

The solution is easy, but the question is why my SharePoint 2016 lab does not have this mandatory service instance running? - Well, the answer lies beneath the new feature SharePoint 2016 feature "MinRole" .

 

MinRole is a new farm topology based on a set of predefined server roles introduced in SharePoint Server 2016. When configuring your SharePoint farm, you now select the role of a server when you create a new farm or join a server to an existing farm. SharePoint will automatically configure the services on each server based on the server's role. SharePoint Server 2016 has been optimized for the MinRole farm topology. For a reference for the MinRoles associated services, you can have a look on this article.

 

As documented in the preceding article, not all the MinRoles are running the service "Application Discovery and Load Balancer Service", as only the below do:

  • Application
  • Search
  • Single-server farm
  • Application with Search

 

In my case, I changed my server role from Custom to Front End, and that's why the service "Application Discovery and Load Balancer Service" got stopped and left my farm without this service running at all... Therefore, in order to resolve this issue, I ran the below command via SharePoint management shell

 Start-SPServiceInstance 7a65cd02-fda9-4e42-8d16-e65b4fd7a450

N.B., The above highlighted value is the service instance Id which you would like to start

 

However, the fun does not end here. If you start this service instance on any of the MinRoles which are not supposed to run it, you will find that the server becomes not compliant, as shown below from (Central Administration site >> System Settings >> Manage Servers in this farm)

 

Unfortunately, if you click on Fix button, the service "Application Discovery and Load Balancer Service" is going to be stopped again. Even if you pretend not seeing this fix button and ignore it, SharePoint has its own health analyzer rule "Server Role Configuration isn't correct" which is going to correct this for you and stop the service :)

N.B., The automatic repair functionality of the health rule can be disabled by the SharePoint farm administrator while still allowing the health rule to run. If the health rule detects that a server is not in compliance and the automatic repair functionality is disabled, it will generate a health report in Central Administration

 

Reference: https://technet.microsoft.com/en-us/library/mt743705(v=office.16).aspx

 

Therefore, in this case, you will need to reconsider your server role, or maybe get rid of this new feature and use Custom MinRole which is equivalent to SharePoint 2013.