Criar novo componente de índice e adicioná-lo a uma topologia clone?
-
10-12-2019 - |
Pergunta
Estou no aplicativo de serviço de pesquisa, rastejando um servidor de arquivos contendo itens de 480k. O SharePoint Server só possui um disco de sistema com 20 GB de espaço livre, e não há outros servidores disponíveis. Ao rastejar o servidor de arquivos, o disco do sistema saiu do espaço, uma vez que a pasta de índice padrão está na unidade C. Paramos de rastejamento, fez um índice redefinir e recebemos o aplicativo de serviço de pesquisa em execução novamente, mas o componente de índice é quebrado (marcado na página de admin de pesquisa e através do PowerShell).
Nós pedimos um novo disco para arquivos temporários rastejar o servidor de arquivos, mas ainda não está disponível. Estamos tentando fazer um rastreamento completo no conteúdo local do SharePoint, que é pequeno), mas o rastreamento nunca termina. Provavelmente porque o componente de índice não está disponível.
Eu tenho duas opções:
- Remova o aplicativo de serviço de pesquisa atual e comece a partir do zero, recriando-a novamente.
- Crie um novo componente de índice, clone A topologia ativa, adicione o novo componente de índice ao clone (removendo o quebrado) e defina a topologia do clone para o ativo.
Mas não encontrei uma maneira de criar um novo componente de índice. É possível?
Solução
As it turned out, this was not an easy task.
Clone Search Topology
At fisrt I tried clone the search topology, replace the failing Index Component, and activate the clone topology - like this following the technet guide Manage the index component in SharePoint Server 2013:
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "SharePointServerName"
# If the Search Service Instance isn't started, run the following command
#Start-SPEnterpriseSearchServiceInstance $hostA
# Wait for ONLINE status, check by using this
#Get-SPEnterpriseSearchServiceInstance $hostA
# When ONLINE, make a clone
$ssa = Get-SPEnterpriseSearchServiceApplication
$active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active
$clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active
# Create a new Index Partition (0) - outputs IndexComponent2
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $hostA -IndexPartition 0
# Verify that the search service application is running. False=Running, True=Paused
$ssa.IsPaused() –ne 0
# Set the clone as the new topology (takes a while). If Index component is Degraded, this will run with no end
$ssa.PauseForIndexRepartitioning()
Set-SPEnterpriseSearchTopology -Identity $clone
However, having an degraded index component made this action impossible. Reference: SharePoint 2013 Unable to change topology when Generation controller is not active
Create a new Topology
Next step, make a new, fresh topology (using this technet guide: Change the default search topology in SharePoint Server 2013).
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "SharePointServerName"
# If the Search Service Instance isn't started, run the following command
#Start-SPEnterpriseSearchServiceInstance $hostA
# Wait for ONLINE status, check by using this
#Get-SPEnterpriseSearchServiceInstance $hostA
# When ONLINE, make a new topology
$ssa = Get-SPEnterpriseSearchServiceApplication
$newTopology = New-SPEnterpriseSearchTopology -SearchApplication $ssa
# Create new components (one server only)
New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
# Set the Admin Component without index
set-SPEnterpriseSearchAdministrationComponent -SearchApplication $ssa -SearchServiceInstance $hostA
# Remove temp Index files, and recreate the folder
$IndexLocation = "C:\Index" # Change to another disk than system disk
Remove-Item -Recurse -Force -LiteralPath $IndexLocation -ErrorAction SilentlyContinue
mkdir -Path $IndexLocation -Force
# Create new index component with a frech index folder
New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -RootDirectory $IndexLocation -IndexPartition 0
# Activate the topology (either one of the following works)
$newTopology.Activate()
#Set-SPEnterpriseSearchTopology -Identity $newTopology
Up on activation, I got a conflict and failed again.
Exception calling "Activate" with "0" argument(s): "Topology activation failed. An update conflict has occurred, and you must re-try this action. The object Repartition
Info Name=RepartitionInfo was updated by DOMAIN\SPFarm, in the OWSTIMER (11712) process, on machine SharePointServerName. View the tracing log for more information about t
he conflict."
At line:1 char:1
+ $newTopology.Activate()
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SearchTopologyActivationException
Delete current failing Search Service Application
This should be easy, just use Central Administration > Manage Service Application, select the Search Service Application and click delete-button in the ribbon. Failed, again.
In order to make this to work, you need to stop the sptimerv4...
>net stop sptimerv4
... and delete cache files located in \ProgramData\Microsoft\SharePoint\Config\{Guids Folders}
where cache.ini is located. CAUTION: Don't delete the cache.ini-file. Just edit the file and use another six digit random number. When you're done, start the service again. Reference: An update conflict has occurred, and you must re-try this action.
>net start sptimerv4
And finally the ribbon delete-button works. You're failing Search Service Application is gone. Now (finally) you can create a new Search Service Application, with a fresh topology and a working index component.
Outras dicas
I had the exact same issue as you described where the index component was broken after an Index Reset.
I was ready to roll my sleeves up and work through your detailed steps (thank you by the way) when I resolved it by using the Pause/Resume option.
Why did I try Pause/Resume? Well after I did an IISRESET I found that the Content Sources were stuck on "Paused". Thus I toggled the Pause/Resume option and miraculously it fixed the index component.
EDIT: This was a temporary fix. In the end I had to rebuild the Search Service Application from scratch.
Try this through Powershell:
$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "myserver1"
$ssa = Get-SPEnterpriseSearchServiceApplication
$topology = Get-SPEnterpriseSearchTopology -SearchApplication $ssa
New-SPEnterpriseSearchIndexComponent -SearchTopology $topology -SearchServiceInstance $hostA -IndexPartition 1
Here is more about managed Index Components: http://technet.microsoft.com/en-us/library/jj862355.aspx