Search Application Topology - Unable to retrieve topology component health states

Topics: General Questions, Support
Apr 22, 2014 at 10:38 PM
Edited Apr 22, 2014 at 10:40 PM
I'm trying to build a new farm according the the Microsoft guidance for a small search topology
( http://technet.microsoft.com/en-us/library/dn342836(v=office.15).aspx ). The farm has no redundancy, however.

I'm working with version 3.96 of AutoSPInstaller, SharePoint 2013 RTM.

I have two application servers:
LGLVSPP01-APP03 - Hosts most services, Central Admin. Also hosts the following search components:
  • Crawl
  • Admin
  • Analytics
  • Content Processing
LGLVSPP01-IDX02 - Hosts only the following search components:
  • Query
  • Index
There is a single partition (only about 2 million documents).

This is how I've configured my search application (Also, I'm not sure of the correct setting for SearchQueryAndSiteSettingsServers):
<EnterpriseSearchServiceApplication Name="Search Service Application"
    FailoverDatabaseServer=""
    Partitioned="false"
    Partitions="1"
    SearchServiceApplicationType="Regular"
    ContentAccessAccount="CRAWL-ACCOUNT-NAME"
    ContentAccessAccountPassword="CRAWL-ACCOUNT-PASSWORD">
    <Database>Removed for brevity</Database>
    <ApplicationPool Name="SharePoint Search Application Pool" />

    <CrawlComponent>
    <Server Name="LGLVSPP01-APP03" />
    </CrawlComponent>
    <QueryComponent>
    <Server Name="LGLVSPP01-IDX02" />
    </QueryComponent>
    <!-- You should specify all the servers you listed in QueryComponent in the SearchQueryAndSiteSettingsServers node below as well -->
    <SearchQueryAndSiteSettingsServers>
    <Server Name="LGLVSPP01-APP03" />
    <Server Name="LGLVSPP01-IDX02" />
    </SearchQueryAndSiteSettingsServers>
    <!-- You can only run the AdminComponent on one server per Search Service App in a SP2010 farm, so only list one server here unless you are installing SharePoint 2013 and need multiple Admin components. -->
    <AdminComponent>
    <Server Name="LGLVSPP01-APP03" />
    <ApplicationPool Name="SharePoint Search Application Pool" />
    </AdminComponent>
    <!-- IndexComponent is only required for SP2013 -->
    <IndexComponent>
    <Server Name="LGLVSPP01-IDX02" />
    </IndexComponent>
    <!-- ContentProcessingComponent is only required for SP2013 -->
    <ContentProcessingComponent>
    <Server Name="LGLVSPP01-APP03" />
    </ContentProcessingComponent>
    <!-- AnalyticsProcessingComponent is only required for SP2013 -->
    <AnalyticsProcessingComponent>
    <Server Name="LGLVSPP01-APP03" />
    </AnalyticsProcessingComponent>
    <Proxy Name="Search Service Application" Partitioned="false">
    <ProxyGroup Name="Default" />
    </Proxy>
    <!-- SearchCenterUrl is for SharePoint 2013 only and is used to set the global search center URL per http://autospinstaller.codeplex.com/workitem/18944. 
     The url you enter MUST end with /Pages or a localized variant of it (i.e. /Seiten in German, /Paginas in Dutch) in order for it to work correctly from MySites. 
     Do not add a trailing slash. i.e.: https://search.zomers.eu/Pages when your Search Center site collection is deployed as a host named site collection to https://search.zomers.eu -->
    <SearchCenterUrl>https://internal.company.com/SearchCenter/Pages</SearchCenterUrl>
</EnterpriseSearchServiceApplication>
I run AutoSPInstaller first on APP03, then on IDX02, and finally on WFE02.

When the processing is complete, it doesn't appear to have done anything on IDX02. This is the only thing written to the console in the search section"

"Applying service account ANT\svclegalsp-svap-prod to Search Service..."

Afterwards, the Search Host Controller is disabled on that server, and the Search Service 15 is also disabled. From Central Admin, I get this error:

"Search Application Topology - Unable to retrieve topology component health states. This may be because the Admin component is not up and running"

If I deploy everything to a two server farm (e.g. combine all the application server workloads on a single server, APP03, and web front end stuff on WFE03), then I have no trouble. But I can't seem to get this basic three server configuration working.

Suggestions?
Apr 25, 2014 at 5:17 PM
I noticed that too. The only way i found to use "native" autospinstaller is to create all components on the server.
  • if you dont include query on the search server, the topology doesnt get activated (pending components, which is logical)
  • if you setup a query component on another server, nothing happens (which isnt, it should instanciate component and activate topology)
this is tested with 3.96 and 2013 SP1.

AFAIK, the query component wouldn't fonction anyway if the index one is down, so we're talking only performance issues.
I script separately the search topology if a customer wants two serveurs. There is a way to partition, but no way to load balance i saw.

Wish i had more time to investigate :)
Aug 5, 2014 at 5:41 PM
If you are assigning search roles/components to different servers, then you need to make sure that you provision the enterprise search to all of those servers (see bold below).

For example
 <EnterpriseSearchService Provision="__LGLVSPP01-APP03,LGLVSPP01-IDX02,LGLVSPP01-APP03__" ContactEmail="" ConnectionTimeout="60" AcknowledgementTimeout="60" ProxyType="Default" IgnoreSSLWarnings="false" InternetIdentity="Mozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 6.0 Robot)" CustomIndexLocation="c:\SearchIndex" PerformanceLevel="PartlyReduced" ShareName="SearchIndex">
   
<EnterpriseSearchServiceApplication Name="Search Service Application"
    FailoverDatabaseServer=""
    Partitioned="false"
    Partitions="1"
    SearchServiceApplicationType="Regular"
    ContentAccessAccount="CRAWL-ACCOUNT-NAME"
    ContentAccessAccountPassword="CRAWL-ACCOUNT-PASSWORD">
    <Database>Removed for brevity</Database>
    <ApplicationPool Name="SharePoint Search Application Pool" />

    <CrawlComponent>
    <Server Name="LGLVSPP01-APP03" />
    </CrawlComponent>
    <QueryComponent>
    <Server Name="LGLVSPP01-IDX02" />
    </QueryComponent>
    <!-- You should specify all the servers you listed in QueryComponent in the SearchQueryAndSiteSettingsServers node below as well -->
    <SearchQueryAndSiteSettingsServers>
    <Server Name="LGLVSPP01-APP03" />
    <Server Name="LGLVSPP01-IDX02" />
    </SearchQueryAndSiteSettingsServers>
    <!-- You can only run the AdminComponent on one server per Search Service App in a SP2010 farm, so only list one server here unless you are installing SharePoint 2013 and need multiple Admin components. -->
    <AdminComponent>
    <Server Name="LGLVSPP01-APP03" />
    <ApplicationPool Name="SharePoint Search Application Pool" />
    </AdminComponent>
    <!-- IndexComponent is only required for SP2013 -->
    <IndexComponent>
    <Server Name="LGLVSPP01-IDX02" />
    </IndexComponent>
    <!-- ContentProcessingComponent is only required for SP2013 -->
    <ContentProcessingComponent>
    <Server Name="LGLVSPP01-APP03" />
    </ContentProcessingComponent>
    <!-- AnalyticsProcessingComponent is only required for SP2013 -->
    <AnalyticsProcessingComponent>
    <Server Name="LGLVSPP01-APP03" />
    </AnalyticsProcessingComponent>
    <Proxy Name="Search Service Application" Partitioned="false">
    <ProxyGroup Name="Default" />
    </Proxy>
    <!-- SearchCenterUrl is for SharePoint 2013 only and is used to set the global search center URL per http://autospinstaller.codeplex.com/workitem/18944. 
     The url you enter MUST end with /Pages or a localized variant of it (i.e. /Seiten in German, /Paginas in Dutch) in order for it to work correctly from MySites. 
     Do not add a trailing slash. i.e.: https://search.zomers.eu/Pages when your Search Center site collection is deployed as a host named site collection to https://search.zomers.eu -->
    <SearchCenterUrl>https://internal.company.com/SearchCenter/Pages</SearchCenterUrl>
</EnterpriseSearchServiceApplication>