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



miércoles, 18 de noviembre de 2015

Actualizar el sistema, Consideraciones y mas



Hoy quiero abordar cuestiones relativas a las actualizaciones en general, además de las de producto y Sistema Operativo enfocándolo en entornos Exchange y Lync, hacer hincapié en las medidas a tomar, más allá de las típicas de parchear preproducción, hacer un backup o tareas cotidianas que a veces por prisas no se realizan o no de la forma más correcta.


En base a varias tareas, os voy a ir exponiendo mis prioridades y puntos de vista, empecemos:

La primera tarea es obtener ciertos datos de la infraestructura:
- ¿Qué versión de S.O. tengo?
- ¿Qué versión de producto?
- ¿Hardware? ¿Firmware?, en clientes y Servidores.
- etc..


Todo esto nos viene bien tenerlo documentado o bien hacer un documento previo a las siguientes fases.


La segunda tarea, se basa en leer y leer, informarnos, muchas veces es lo más pesado y lo que menos gusta en general.
Sobre qué leer, pues todo lo relativo y que esté publicado sobre los posibles parches o mejoras a aplicar.
En el caso de Microsoft, principalmente technet. Buscar en Blogs información de otros colegas, en redes sociales como los grupos de Linkedin o simplemente tirar de buscador en base a problemas del fix, rollup, parche o versión de producto y S.O.


Ésta tarea no es un trabajo a hacer en 5 minutos, ni de unas horas, de una mañana o incluso de una semana. Puede llevar mucho tiempo, más del que nos gustaría, pero hay que dedicarle el necesario según el tipo de actualización y sobre qué producto. Claro está que muchas veces no hay tiempo para ello pues nos aprietan las tuercas los fuegos existentes, los jefes o simplemente la emoción de probar nuevas funcionalidades :).

La idea es poder llegar a la siguiente fase con bastante información.
Debemos intentar exprimir nuestros sistemas en buscar información posible, reports, estadísticas, problemas actuales, posibles problemas y dependencias.


Como no, contar con la ayuda de colegas para éste trabajo alivia el proceso.


La tercera tarea, una vez que sé lo que tengo, nos hemos informado de opciones, vamos a intentar ir aproximándonos a aplicar una solución, muchas veces descartando otras. Por lo que en ésta tarea debemos de cuestionarnos TODO:


- ¿Es necesario?
- ¿a qué afecta? ¿clientes, Servidores? ¿otras herramientas? ¿dptos? ¿desarrollos?
- ¿costes? ¿tiempo?
- ¿hay vuelta atrás?
- ¿mejora o no seguridad? ¿es estable?
- ¿hay otros productos que me aporten mas? ¿debo planearme un cambio en la arquitectura o en algun componente?
- ¿cuanto voy a tardar si va bien?, ¿y si falla y he de volver para atrás?


Realmente debemos medir el beneficio que nos aporta un parche, una actualización o incluso un cambio de producto. Si, incluso eso, un cambio de un producto a otro es cuestionable en muchos de los casos a sabiendas de no llevarlo a cabo, pues nos va a enriquecer conocer otras cosas, comparar y ser más especialistas en nuestro trabajo.

Más cuestiones una vez que tenemos decidido donde vamos, principalmente siempre me planteo las siguientes:
- ¿como? ¿actualizo o monto desde cero? Realizo procedimientos (punto siguiente).
- ¿cuando? ¿por la mañana, el viernes, fin de semana? ¿el mes que viene? ¿en qué hora afecto menos al servicio?


Si bien, a menos que sea necesario, está bien definir pautas como no actualizar ciertas cosas un viernes, a primera hora de la mañana, etc, aqui cada empresa o cliente es un mundo.


Según el producto, podremos plantearlo de diferentes formas y en diferentes momentos. Aquí la experiencia es un grado y con productos como Exchange y Lync más aún.


Según entornos, el mejor momento de cambios es el fin de semana, puentes e incluso en agosto cuando no hay casi usuarios. En otros entornos cualquier hora es mala, por lo que ahi entra en juego poder balancear servicios, alta disponibilidad y el tener un backup o una buena vuelta hacia atrás.


A final de esta tarea, debemos decidir y documentar el objetivo, tener claro donde llegar, con qué herramientas y de qué manera actualizar, e incluso migrar. Sobre todo para evitar cambiar el objetivo a los 5 minutos de empezar. Pues se supone que con el trabajo anterior la decisión se ha tomado con referencias y debe ser viable llevarla a cabo.


Definidas las principales tareas y el objetivo a alcanzar, lo siguiente es procedimentar.
Debemos crear un documento de pasos, paso a paso, orden tras orden, en la que plasmar todo aquello que debamos tener en consideración para llegar al objetivo. Incluídos los pasos previos. Técnicos y no técnicos.

Debemos tener a mano en esos pasos, los comandos, scripts o operaciones necesarias para llevarlo a cabo.
También la comunicación a quien le pueda afectar, contar con los recursos de personal necesarios y el apoyo de colegas por si la cosa se tuerce.
No debemos esperar a último momento a buscarlos, dejandolo pendiente, de descargar, de leer o de hacer cambios, de comunicar, etc, pues al final si surje un problema, las prisas no son buenas y los fallos son más graves.
No tengamos miedo a sobre la marcha tener que hacer cambios en el orden de las tareas a realizar, una cosa es planificar sobre el papel y otra en la realidad, pero mejor ir adelantándonos el trabajo y saber adaptarnos.


Las próximas veces acertaremos más en la tarea.
Como ejemplo básico de procedimentar la actualización de un cliente de OCS a Lync, podemos usar el siguiente esquema, sin entrar en scripts, y en definir las tareas complejas:


- Crear las tareas necesarias para la aplicación de parches de S.O. para cumplir los requerimientos de la actualización.
- Crear la tarea con los scripts necesarios para actualizar de versión y aplicar los parches necesarios de producto.
- Notificar a los usuarios que se producirá una actualización y en qué periodo.
- Aplicar los parches de sistema operativo necesarios para esa nueva versión o los que correspondan por seguridad
- Reiniciar el sistema
- Aplicar la actualización del producto y sus parches, cuando el usuario no esté logado, o si está logado cerrar outlook y la versión actual de ocs para evitar fallo de actualización. Notificar de lo que está actualizandose al usuario.


Conviene mínimo hacerse un esquema básico de este estílo, pero más aún detallar cada tarea y documentarla lo máximo posible, generando un documento de procedimiento que como bien decía nos servirá para futuros trabajos similares con pequeños cambios.Simplemente pensar, la actualización de un rollup o cumulative update en Exchange y Lync, siempre es similar, los procedimientos de poner el servidor en mantenimiento o hacer una parada de servicio controlada en ambos sistemas, siempre son comunes a muchos trabajos.


La memoria nos juega malas pasadas, si está documentado es más fácil, más seguro y más rápido, y aun así a veces cometemos fallos o se producen errores.

Tras esta larga explicación sobre cómo creo se debe afrontar una actualización, me centro (espero que mas brevemente) en los siguientes productos, Lync, Exchange y parches de S.O.:


Aplicar actualizaciones a ciertos productos, no es cuestión de 5 minutos tal y como hablábamos.

Concretamente, el trabajo para actualizar productos como los mencionados, es largo y tedioso. Se requiere gente con conocimientos avanzados y expertos en ello. Incluso aun así, en ciertos entornos, se escapan cosas de nuestras manos.


En entornos sencillos con un buen backup y una pequeña preparación puede ser suficiente. Pero en otros entornos, esto puede llevar días e incluso semanas. No el hecho de aplicar parches pero sí las tareas anteriores.

Hay procedimientos en technet para actualizar estos productos, pero muchas veces se quedan escasos. Son generalistas y no abarcan los casos concretos, de ahí el tener cuidado.

Por ello el crear nuestros propios procedimientos.
Microsoft en el caso de rollups nos publica lo que cambia de uno a otro, pero hemos de ver qué nos afecta en cada uno de ellos y hemos de decidir si merece o no la pena actualizar al último o esperar sean otros los que detecten fallos y los que ayuden a corregirlos.

En entornos de preproducción hay cosas que no se detectan, por lo que disponer de un entorno de pruebas es una ayuda pero no lo es todo.

Mi experiencia me dice que estar a la última no siempre es bueno. Por ello le doy un tiempo a ciertos rollups y si no hay ruido al respecto ciertos fallos, lo pruebo en preproducción y pasado un tiempo prudencial entonces es cuando lo aplico en producción.

En Exchange, debemos usar las indicaciones de MS en cuanto al orden de actualizar los Roles...Edge, CAS, HUB..MBX...UM..etc. Si nuestro entorno es de un solo servidor, ésto de poco sirve. En versiones como Exchange 2016, se ha buscado simplificar éste problema, veremos qué tal resulta.
En Lync es similar, mucha planificación, y más si lo tenemos con enterprise voice, UM, etc.

Aquí se complica cualquier actualización, por pequeña que sea. Y el riesgo de hacer algo mal puede llevar a una caída parcial de servicio.

Por último, actualizar parches de S.O. en estos entornos, afecta al producto muy directamente. Pues los servidores primero deben estar alineados, un cambio en un parche que aplique sobre .Net Framework o incluso algo más sencillo, que aplique sobre un permiso, una estructura de registro, o algún parche de seguridad, nos pueden hacer tambalear el sistema.

¿Debemos por lo tanto estudiar cada parche de S.O. que aplicamos?, realmente es imposible. Podemos informarnos, ser precavidos en su aplicación y si algo falla, tirar de soporte o intentar volver hacia atrás, pero aquí es difícil tener espacio de maniobra para detectarlo.

La opción de preproducción es buena, pero no efectiva al 100%.

Ni que decir sobre el NO actualizar. No he hablado de ello pues no lo veo como opción alguna, por mucho que decimos a veces de ..."si funciona déjalo así".

Conozco aún sitios con NT funcionando por esa premisa, pero eso es otra historia.


Como conclusión última a éste tema, con Exchange y Lync, la idea es no actualizar  automáticamente, ni S.O., ni Rollups ni CU. Entiendo que MS sí lo pueda hacer y en un entorno estándar con más razón, pero las Pymes y grandes empresas no suelen ser estándares de estos productos.

Creo que no me he dejado nada en el tintero, si el tiempo me lo permite, incluiré algún procedimiento de los que más usamos.


Un saludo y gracias, más si has llegado al final de ésta lectura.


Álvaro Velasco Miguel.

jueves, 17 de septiembre de 2015

Exchange 2016 se acerca!!

Este verano Microsoft publicó la versión Technical Preview de Exchange 2016, además recientemente ha actualizado en Technet todo lor referente a ésta nueva versión: Novedades, Planeación e Implementación, etc.



Por lo tanto se espera tener la versión final para finales de año, quizás tras la presentación este mes de Office 2016, las presentaciones de principios de Octubre de nuevos dispositivos y antes de principios de año con Windows Server 2016.

En el panorama actual, aún nos encontramos desde empresas que no han migrado a Exchange 2010, y las que se están planeando migrar a 2010 sp3 e incluso a office 365 (muchas a éste último servicio en la nube).

En cuanto a la versión de Exchange 2013, son pocas las empresas que hayan migrado a 2013, pues la estabilidad de la versión 2010 está más que probada y por mucha estabilidad que ofrece 2013 con Service Pack 1, las novedades que ofrece quizás no compensan para migrar.

 Si que es cierto, que Exchange 2013 se está implantando en infraestructuras que parten de cero, pero aun no conociendo números, aseguraría que se subscriben más Office 365 que 2013.

El panorama actual por lo tanto quedaría con la mayor parte de Infraestructuras con Exchange 2010 seguido de Office 365. No menciono anteriores a 2007, pues a éstas alturas prefiero pensar que no queda producto 2000 o 2003 en entornos empresariales (aunque la realidad es otra).

Exchange 2016 viene en un momento bueno, tanto para Microsoft con la nube como el panorama actual antes descrito (los que tienen 2010 o van hacia él).

 Pues va a permitir realizar muchas migraciones desde 2010 directamente a 2016, ahorrando servidores con su nueva arquitectura de 2 roles y aportando más nuevas funcionalidades que únicamente el salto desde 2013.

Quizás, la mayor ventaja de ésta nueva versión sea la de reducir y simplificar la arquitectura, el despliegue y migraciones. Aumentando la escalabilidad y la disponibilidad como hasta ahora nos tiene bien acostumbrados Microsoft.

En mi opinión, si aun no has decidido actualizar a 2013 por la razón que sea, tienes dos opciones: pasarte a Office 365 o esperar unos meses a migrar directamente a Exchange 2016.

La opción de migrar a 2013 tambien es válida, sobre todo si provienes de 2007 o alguna de sus nuevas características es necesaria. Total, lo que os comentaba, es segura y estable.

Os dejo el enlace al technet para que vayáis echándole un vistazo y familiarizandos con las novedades.


Así como la descarga a la Technical Preview que por cierto recuerdo no la instales en entornos de producción.


Termino este post con la siguiente apuesta: a lo mismo que Microsoft con Exchange 2016 ha apostado por reducir los roles, puede en un momento dado volver a hacer lo contrario como en Exchange 2003/2007.

Mi apuesta es que Exchange en futuras versiones, tendría que icorporar roles de Skype For Bussiness en el mismo producto Exchange. Ahí queda!!.

Un saludo y gracias por acercarte por aquí de nuevo y tras un tiempo de pausa y cambios que me he tomado.
Alvaro Velasco Miguel.