I am trying to change the target server for the search crawl from my WFEs to one of my app servers.
I enabled Microsoft SharePoint Foundation Web Application and set the DisableLoopbackCheck on the server. I can browse to the url https://sharepoint.com and SharePoint comes up.
Then, I ran the command:
$env:farmurl = "https://sharepoint.com" $env:crawltarget = "https://appserver01" $listOfUri = new-object System.Collections.Generic.List[System.Uri](1) $zoneUrl = [Microsoft.SharePoint.Administration.SPUrlZone]'Default' $webappUrl = $env:farmurl $webapp = Get-SPWebApplication -Identity $webappUrl $webApp.SiteDataServers.Remove($zoneUrl) $listOfUri.Add($env:crawltarget); $webApp.SiteDataServers.Add($zoneUrl, $listOfUri);
When I check it in SP mgmt console using $webApp.SiteDataServers, it shows:
However, the crawl still appears to be hitting my web front ends. Do I need to add an alternate access mapping or anything else? Do I need to restart any services? Also, do I need to be able to browse to the FQDN of the target app server and have it pull SharePoint up? Right now when I browse to the FQDN server name I get cert warning and then what looks like a new instance of SP (asking me to select a template). I feel like I am missing something. This has me stumped. Any help is appreciated.
Edit: I got this working thanks to Trevor. I had to go our dedicated search servers and add entries to the host files for the web app url and the target server:
I actually didn't have to set the SiteDataServers. However now, it is spiking the CPU on the app server. At least it is not causing SP to be unresponsive for the end users.
Edit 6/7/2018: I found a way to use more than one server as a crawl server. In our environment, we have two dedicated search servers. I set the host file on each server to point to a separate app server:
Search01 crawls app01 search02 crawls app02
So in a sense, you pair up a search server with an app server.