martes, 22 de diciembre de 2015

Cambiar el Almacenamiento de un DAG en Exchange



Una de las tareas más habituales a lo largo de los años en Exchange, es tener que realizar cambios en el almacenamiento de las Bases de Datos y los Logs.

Los motivos pueden ser varios, desde un cambio por rendimiento, por necesidad de más tamaño o simplemente porque el tiempo de vida del almacenamiento actual se está acortando.

Los últimos 6 años, he tenido que realizar varias veces este trabajo y hoy comparto con vosotros el procedimiento para ello.

El objetivo principal, es realizar el cambio sin sufrir parada de servicio alguna. Pues Exchange nos proporciona los mecanismos para ello, aunque las guías disponibles por Microsoft en este caso contemplan el cambio fácil de las rutas y los datos con parada, eliminación de replicación, copia de datos… y vuelta a iniciar el servicio.

El cambio fácil, para mí no es el camino a seguir. No es que sea más complicado hacerlo sin parada, pero hay que tener claros los pasos y depende de la infraestructura que tengamos.

INFRAESTRUCTURA ORIGEN:
Partimos de 1 DAG Exchange de 2 o 4 Nodos.
4 bases de datos replicadas a 1 o dos nodos según el caso (1ª y 2ª Copia)
2 LUN por Servidor, 1 BBDD y 1 LOGS, con Puntos de Montaje o Nombre de Unidades (Indistintamente). Si hay más LUNS el procedimiento es similar.
Almacenamiento en Bloques en 1 Cabina, presentados por Fiber Channel. Pudiendo ser similar con otro tipo de almacenamiento (Local, iSCSI).



INFRAESTRUCTURA DESTINO:

Infraestructura en este caso similar, distinto fabricante de cabina y por ello drivers nuevos.
1 Nueva cabina de almacenamiento por bloques
2 LUN por Servidor, con Puntos de Montaje o Nombre de Unidades


Como decía en el anterior POST, un momento como éste puede ser bueno replantearse cambios en la infraestructura, al nivel que nos importa, esto puede ser:

- Crear unidades de más tamaño.
- Asignar más LUNS o menos, según nuevos requisitos de la organización (Seguridad, velocidad, reducción puntos de fallo, etc)
- Cambiar rutas de BBDD y LOGS, cambiar nombres o letras de unidad, puntos de montaje, etc.

   UNIDADES LOCALES, LUNS Y PUNTOS DE MONTAJE 

    La consecución del objetivo (hacer el cambio sin corte), viene dada principalmente por el dinamismo o no de la infraestructura de disco actual, según la manera en que hagamos la gestión de las LUNS, las carpetas locales o tengamos o no puntos de montaje.

Tendremos diferentes formas de actuar, pero el principal juego viene en cómo hacer éstos movimientos, según como tengamos el almacenamiento en nuestra infraestructura, existen las siguientes posibilidades:    

      1)     LUNS con nombre unidad asociada:
 
       Cada LUN tiene una letra de unidad de disco asociada.
 
      LUN10 ----  Unidad D
LUN 11 ---- Unidad E
LUN XX ---- Unidad X





Haríamos el movimiento de los datos a las nuevas luns y una vez realizado intercambiaríamos las letras de unidades.
     
     2)      LUNS asociadas a puntos de montaje:

LUN10 ---- D:\BBDDEXCH1\
LUN11 ---- D:\LOGSEXCH1\
LUN12 ---- D:\BBDDEXCH2\
LUN13 ---- D:\LOGSEXCH2\
LUNXX ---- D:\........\



Haríamos el movimiento de los datos y una vez realizado, renombraremos los puntos de montaje. La opción de Puntos de Montaje, da más juego, pues si tienes actualmente configurado así el sistema, puedes hacer una configuración que sea diferente de  1 a 1 como en las anteriores habitualmente:

LUN 10 ---- D:\BBDDEXCH1\
LUN 10 ---- D:\BBDDEXCH2\
LUN 10 ---- D:\BBDDEXCH3\
LUN 11 ---- D:\LOGSEXCH1\
LUN 11 ---- D:\LOGSEXCH2\
LUN 11 ---- D:\LOGSEXCH3\



Hay varios puntos de montaje diferentes, pero la unidad o LUN destino es la misma. Esto nos viene bien cuando partimos de múltiples LUN para almacenamiento de BBDD y LOGS y queremos reducir el número de las mismas, cambiar posteriormente su nomenclatura y hacerlo de manera independiente al límite de letras de unidad que puedan existir.

MANOS A LA OBRA


Definido la infraestructura actual y controlado como están configurados los Paths de Exchange, vamos paso a paso con el procedimiento.

Poner el primer servidor de Exchange en MODO MANTENIMIENTO.
               Para ello, movemos las Bases de Datos activas a otro servidor con el powershell siguiente, donde %ServerName%, es el servidor Origen.

Move-activemailboxdatabase –server %ServerName%

Acto seguir ejecutamos el script siguiente, indicando en %ServerName% el servidor a poner en Mantenimiento.

C:\Program Files\Microsoft\Exchange Server\V14\Scripts>
.\StartDagServerMaintenance.ps1 %ServerName% -OverrideMinimumTwoCopies:$TRUE

Comprobamos el estado de los servidores y si hay alguno en mantenimiento


Get-DatabaseAvailabilityGroup -Status |fl server*

Servers              : {EXCHANGE1, EXCHANGE2, EXCHANGE3, EXCHANGE4}
ServersInMaintenance : {EXCHANGE1}

Instalar Driver Multipath y presentar las nuevas LUN (aquí ya depende del fabricante y compatibilidad, presentar a veces por 1 canal, y al finalizar el resto, o si es por iSCSI la cosa es diferente)

Asignar a las LUN´s letra de unidad o Punto de montaje.
Según la configuración del ejemplo que propongo, creamos primero las carpetas para los puntos de montaje y después éstos hacia las LUN

Paramos los Servicios de Exchange en el nodo. Mejor si los configuramos a modo manual. (Requerirá algún reinicio de más pero nos aseguramos terminar correctamente las tareas sin fallos).

Copiamos los datos entre las LUN´s viejas y nuevas, tantos cmd como sean necesarios por LUN, Unidad o Carpeta.
En este punto, la herramienta es robocopy.exe

ROBOCOPY E:\PATHBBDD\ E:\PATHBBDDNUEVA\ /E /COPY:DATSOU /R:3 /W:5 /V /NP /LOG:C:\TEMP\1LOG-BBDD.TXT
ROBOCOPY E:\PATHLOG\ E:\PATHLOGNUEVA\ /E /COPY:DATSOU /R:3 /W:5 /V /NP /LOG:C:\TEMP\1LOG-LOG.TXT

Esperamos que termine, revisamos el log de robocopy para comprobar que no hay ningún fallo en la copia o ficheros que no haya sido capaz de copiar.


Renombramos los puntos de montaje

Con esto dejamos la estructura original pero los datos en la nueva cabina

De PATHBBDD a PATHBBDDORIGEN
De PATHBBDDNUEVA a PATHBBDD
De PATHLOG a PATHLOGORIGEN
De PATHLOGNUEVA a PATHLOG

Configuramos los servicios a modo automático.

Reiniciamos el nodo de Exchange

Comprobamos el estado de las réplicas y verificamos el sistema

get-mailboxdatabasecopystatus *

Dejamos tiempo para que se actualicen el estado de las bases de datos, y que pasen de failed a healthy, las colas CopyQueueLength y ReplayQueueLeng se reduzcan al mínimo.

For($i=0; $i -le 100 ; $i++){Get-MailboxDatabaseCopyStatus * | % {$total += $_.ReplayQueueLength;$total2 += $_.CopyQueueLength}; Write-Host "ReplayQueueLength = "$total ; Write-Host "CopyQueueLength ="$total2; Write-host " "; $total2 =0; $total = 0; Sleep 10}

10º Eliminamos los puntos de montaje viejos, borramos las carpetas Viejas (Origen) de la unidad E.
En el caso de letras de unidad, eliminamos las letras de unidad de las LUN viejas.

11º Ponemos de nuevo los servicios de Exchange en Modo Manual y los paramos

12º Pasamos las LUNs viejas a Offline, y desconectamos las LUN´s desde la cabina

13º Desinstalamos el driver de la cabina (si es diferente) e instalamos el de la nueva, asignando todos los caminos necesarios para las nuevas LUN. (Si es necesario).

14º Reiniciamos

15º Comprobamos el estado de las nuevas LUN y que estén en Online.

16º Configuramos los servicios de Exchange en Automáticos

17º Reiniciamos

18º Comprobamos de nuevo el estado de las Bases de Datos y las colas. Si todo está bien, empezamos a activar definitivamente el servidor tras tanto reinicio y cambio.

19º Sacamos el Servidor del modo de Mantenimiento

C:\Program Files\Microsoft\Exchange Server\V14\Scripts
.\StopDagServerMaintenance.ps1 %ServerName%

20º Redistribuimos la carga de las Bases de Datos

C:\Program Files\Microsoft\Exchange Server\V14\scripts
.\RedistributeActiveDatabases.ps1 –DagName CENTEXDAG01
-BalanceDbsByActivationPreference -ShowFinalDatabaseDistribution -Confirm:$false

Llegado hasta aquí, tenemos el primer servidor corriendo sobre el nuevo almacenamiento, sin sorpresas ni errores, de manera controlada y manteniendo la infraestructura en alta disponibilidad.

Los usuarios no han debido notar ningún cambio, y nos hemos podido permitir hacerlo todo en horas de trabajo, siempre y cuando hayamos atado cada paso.

Según el entorno y la experiencia, es posible hacer el cambio en 1 solo día o alargarlo a varios. 

Conviene si desconocemos el nuevo hardware, aprovechar la ventaja de disponer del DAG de Exchange, el poder hacer pruebas de rendimiento o estabilidad con el nuevo almacenamiento.

El procedimiento presentado puede diferir algún paso según el entorno y dependiendo del riesgo que personalmente se quiera correr, digo esto, pues en menos pasos es posible ejecutarlo, ahora bien hagas lo que hagas no te la jueges por querer terminar pronto.

A poco de terminar el año, os deseo unas buenas fiestas, esperando poder compartir con vosotros más artículos técnicos.

Gracias como siempre por llegar hasta aquí.

Alvaro Velasco Miguel