[SharePoint 2013] - Modificar la topología del servicio de búsquedas.

Como sabéis, para modificar el servicio de búsquedas de SharePoint 2013 hay que utilizar PowerShell, ya no sale el bóton "Modify Topology" como en 2010. A continuación os dejo unos comandos para que distribuyáis la topología en vuestra granja:

 

- Partimos de la siguiente Topología:

 

Fijaos por favor, que no he dibujado el resto de servidores de la granja, para ahorrar espacio :p

En esta topología, habría 2 o 3 frontales web en el ejemplo, al menos otros 3 servidores de aplicaciones que nos servirán para añadir redundancia y alta disponibilidad a todos los componentes de las búsquedas. Hasta SharePoint 2013 no se podía poner el componente de administración redundante.  Para el ejemplo, no vamos a tocar las bases de datos de búsquedas, pero el proceso es el mismo.

 

 

- Queremos obtener esta topología:

 

 

 

La secuencia es la siguiente.

1. Declarar la aplicación de servicio.

2. Crear una nueva topología a partir de la que ya existe, aunque no la veamos, SharePoint la tiene almacenada en la Search_DB

3. Añadir los componentes en los nuevos servidores. SIN BORRAR LOS ANTERIORES.

4. Activar la topología clondada.

5. Clonar la topología otra vez.

6. Eliminar los componentes que no queremos o que tenemos en servidores que no los queramos tener.

7. Activar la topología clondada.

 

 

[IMPORTANTE] - La siguiente secuencia de comandos no se debe ejecutar en un script, al menos hasta que controléis todos los cmdlets y lo que hacen. Probadlo primero en entornos no productivos.

Add-PSSnapin Microsoft.SharePoint.PowerShell

 

#Declaramos los 4 Servidores que formarán la topología.

$servidorCrawl1 = Get-SpEnterpriseSearchServiceInstance -Identity "servidor3"

$ServidorCrawl2 = Get-SPEnterPriseSearchServiceInstance -Identity "Servidor4"

$ServidorQuery1 = Get-SPEnterpriseSearchServiceInstance -Identity "Servidor1"

$ServidorQuery2 = Get-SPEnterpriseSearchServiceInstance -Identity "Servidor2"

 

#Guardamos la aplicación de búsquedas en una variable, en este caso sólo tenemos

# una aplicación de búsquedas, si tuvieramos más, habría que pasarle como parámetro

# algo que indicase la aplicacion de búsqueda que queremos modificar.

# p.e. -Identity y el GUID de la aplicación de busquedas correspondiente.

$Busqueda=Get-SPEnterpriseSearchServiceApplication

# Obtenemos la topología actual de la aplicacion de búsquedas a partir de la varianle anterior.

# El parámetro -Active le indica al cmdlet que obtenga la topología activa, ya que puede

# haber más de una topología, pero nunca más de una activa.

$Topologia=Get-SPEnterpriseSearchTopology -SearchApplication $Busqueda -Active

Get-SPEnterpriseSearchComponent -SearchTopology $Topologia

#Clonamos la topología Activa para modificar el clon, más tarde la activaremos.

$clone = New-SPEnterpriseSearchTopology -SearchApplication $Busqueda -Clone -SearchTopology $Topologia

 

#Añadimos dos nuevos query component

New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $clone -SearchServiceInstance $servidorQuery1

New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $clone -SearchServiceInstance $servidorQuery2

 

#Añadimos dos nuevas particiones de índices cada una en un servidor, una será una réplica de la otra.

New-SPEnterpriseSearchIndexComponent -searchtopology $clone -IndexPartition 0 -SearchServiceInstance $servidorQuery1

New-SPEnterpriseSearchIndexComponent -searchtopology $clone -IndexPartition 0 -SearchServiceInstance $servidorQuery2

 

#Aprovechamos para añadir más elementos en el servidor 3 y tener así contingencia del resto de elementos:

New-SPEnterpriseSearchAdminComponent -SearchTopology $clone -SearchServiceInstance $ServidorCrawl1

New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $clone -SearchServiceInstance $ServidorCrawl1

New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $clone -SearchServiceInstance $ServidorCrawl1

New-SPEnterpriseSearchCrawlComponent -SearchTopology $clone -SearchServiceInstance $servidorCrawl1

#Activamos la nueva topología

Set-SPEnterpriseSearchTopology -Identity $clone

 

 

 

En este punto tendríamos la siguiente topología:

 

Servidor 1: Query Component + Index partition 0

Servidor 2: Query Component + Index Partition 0

Servidor 3: Crawl Component + Analytics Processing Component + Content Processing + Admin Component

Servidor 4: Crawl Component + Analytics Processing Component + Content Processing + Admin Component + Query Component + Index Partition 0

 

Debemos eliminar Query Component + Index Partition 0 del Servidor 4

 

Para ello debemos clonar otra vez la topología, y eliminar los componentes

 

(Seguir los cmdlets del script anterior para clonar la topología)

 

#Eliminamos el Query Component del servidor 4 cuya instancia de búsquedas está en la variable "$ServidorCrawl2"

Remove-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $clone -SearchServiceInstance $ServidorCrawl2

#Eliminamos el IndexComponent del Servidor 4

Remove-SPEnterpriseSearchIndexComponent -searchtopology $clone -IndexPartition 0 -SearchServiceInstance $servidorQuery1

 

#Activamos la nueva topología otra vez

Set-SPEnterpriseSearchTopology -Identity $clone

 

 Y ya estaría.

:) espero que os haya servido, preguntad lo que queráis en Comentarios!