Cluster Alta disponibilidad en LINUX En este articulo aprenderemos a implementar un Cluster de Alta disponibilidad (AD). Material necesario: 2 maquinas con Linux El paquete Heardbeat un Sistema de ficheros con Journaling Una Red Puerto serie ¿Qué es un Cluster y para que me sirve? Un cluster , consiste en un grupo de nodos conectados entre si que interactuan como una sola maquina (En caso que un nodo dejase de funcionar tomaría el control el segundo nodo) , reduciendo así considerablemente la tolerancia a fallos y caídas de servicio. Un cluster podría servir perfectamente en el caso de un problema de Hardware nuestros clientes tendrían igualmente servicio ya que uno de los nodos tomaría el control como maquina primaria. ¿Qué es Heartbeat? Heartbeat es un paquete de software creado por LINUX-HA, funciona de forma similar al System V o init pero en vez de una sola máquina pasaría a ejecutar los servicios en los nodos, basándose en que no le llegan respuestas estas se hacen por medio de ping y por pulsaciones del cable serie. ¿Que es STONITH? STONITH son la Siglas de Shoot The Other Node In The Head ( Pégale un Tiro en la Cabeza al otro Nodo). Es una técnica usada por Heartbeat que se asegura de que un servidor supuestamente muerto no interfiera con el funcionamiento del cluster, en caso de no implementarse bien esta técnica, podría dar lugar a que el cluster no funcione. A grosso modo STONITH consiste en que el servidor secundario nota que el primario no funciona, y este le haría un DDOS al primario para asegurarse de que ha sido un falso positivo y tomaría el nodo secundario el control. Preparando el Hardware Existen 3 cosas especificas del cluster que hay que conectar, los discos, las NICs de interconexión, el cable serial de interconexión y los cables de control de los UPS Primero instalaremos los discos, pero no crearemos aun ningún sistema de ficheros. Instalaremos las NICs y las configuraremos con IPs privadas de la misma subred en los rangos 192.168.0.0/16 o el rango 10.0.0/8 A continuación nos haremos con un cable Serial para la comunicación PC a PC . Nos aseguraremos de que el cable incluya modems null y que incluya cables CTS Y RTS Conectamos cada ordenador a su UPS Instalación del Software Para nuestro cluster necesitaremos varios paquetes de software. Heartbeat-1.0.3, Heartbeat-pils-1.0.3, Heartbeat-stonith-1.0.3 cada uno de ellos se encuentra en los repositorios de las distribuciones o se incluye como paquete en los CDs de instalación de esta ( Cuando instale SUSE 9.3 me pareció verlos en la instalación) si no los encontráis podéis mirar en http://linux-ha.org los paquetes los instalaremos usando nuestro administrador de paquetes favoritos ya sea apt-get, yast,urpmi, emerge, etc. Por ultimo nos queda instalar el servicio que queramos dar ya sea samba,apache postfix, etc. Configurando DRBD. DRBD se configura en el fichero /etc/drbd.conf Código: resource drbd0 { protocol=C fsckcmd=/bin/true disk { disk-size=80418208 do-panic } net { sync-rate=8M # bytes/sec timeout=60 connect-int=10 ping-int=10 } on Zeus { # Zeus es el nombre del servidor principal device=/dev/nb0 disk=/dev/hda1 address=192.168.1.1 port=7789 } on SolarUX { #SolarUX es el nombre del servidor secundario device=/dev/nb0 disk=/dev/hda1 address=192.168.1.2 port=7789 } } Nota: Para calcular el tamaño del disco usaremos blockdev-getsize y dividiremos el resultado por dos si ambas partes dan resultado diferente elegiremos el mas grande Creando el Sistema de Ficheros A continuación crearemos el sistema de ficheros para Zeus ( Servidor Primario) es importante usar un sistema de ficheros con Journaling como Reiserfs, ext3, jfs, xfs. Crearemos dos particiones del mismo tamaño en el dispositivo /dev/nb0 los dos servidores y con Reiserfs ya que se considera mas seguro. Instrucciones a ejecutar en Zeus Código: Root@Zeus:~# /etc/init.d/drbd startLe respondemos yes para que nos ponga a Zeus como primario. ahora creamos el sistema de ficheros y lo montamos Código: Root@Zeus:~# mkfs -t reiserfs /dev/nb0 datadisk /dev/nb0 startpor último si usamos una conexión Ethernet de 1Gb para la sincronización, cambiaremos los parámetros los parámetros de esta para que nos funcione en modo fullduplex ver Activando Fullduplex en tarjetas ethernet en este mismo foro Configurando Heartbeat Heartbeat tiene tres ficheros de configuración. 1. ha.cf Configura información básica del cluster 2. haresources.cf Configura los grupos de recursos tipo init 3. authkeys Configura la Autenticación de red Se pueden encontrar ejemplos de estos ficheros en /usr/share/doc/pakages/Heartbeat y se documentan en el fichero Getting Started de Heartbeat ha.cf le aporta a Heartbeat la información de la configuración básica. Configura los nodos, pulsaciones serial, la manera de registrar los logs intervalo de tiempo muerto y pulsaciones ejemplo de nuestro ha.cf Código: logfacility local7 # servicio de syslog keepalive 1 #Intervalo pulsación warntime 2 #Pulsación Tardía deadtime 10 # Tiempo control Fallos nice_failback on node Zeus SolarUX ping 10.10.10.254 # Dirección del Router bcast eth0 eth1 #Broadcast Interfaces Heartbeat serial /dev/ttyS0 #Enlace Serial Heartbeat respawn /usr/lib/Heartbeat/ipfail stonith_host Zeus apcsmart SolarUX /dev/ttyS1 stonith_host SolarUX apcsmart Zeus /dev/ttyS1las pulsaciones se envían por eth0, eth1 y serial /dev/ttyS0 este fichero es idéntico para todos los nodos Fichero /etc/ha.d/haresources Este fichero crea un grupo de recursos que en teoría pertenecen a Zeus, asociados a una IP virtual 10.10.10.20 y los recursos a servir: ● NFS (Network File System) ● Samba (compartir archivos Windows) ● Dhcp (asignación dinámica de IPs) ● Postfix (Servidor de Correo electrónico) Código: Zeus 10.10.10.20 datadisk::drbd0 nfslock nfsserver smb dhcpd postfixPara clarificar donde están colocados los scripts diré que Ipaddr y datadisk están en /etc/ha.d/resource.d y el resto de servicios típicos en /etc/init.d/ Heartbeat se las apaña de maravilla administrando la mayoría de servicios que vienen en los V System init comúnmente llamados los scripts de arranque, sin embargo una de las condiciones para que Heartbeat administre correctamente los Scripts es que tienen de tener el mismo nombre en todos los Nodos, por lo tanto recomiendo usar una distribución idéntica en las dos maquinas así simplificaremos la configuración y el mantenimiento. Fichero /etc/ha.d/authkeys authkeys es el fichero de configuración mas sencillo de todos. Contiene el método de autenticación basado en (sha1) con la clave que se usara para firmar los paquetes . este fichero tiene que ser idéntico en todos los servidores y no debe tener ningún usuario acceso de lectura a excepción de root: Código: auth 1 1 sha1 RandomPasswordfc970c94efbConfiguración de los Servicios Tenemos de deshabilitar los servicios para que no sean controlados por init si no por Heartbeat esto lo conseguiremos con el siguiente comando: Código: Root@Zeus:~# chkconfig -del nfslock nfsserver smb dhcpd postfixNótese que deberíamos cambiar los servicios marcados en azul por los que tenemos configurados en /etc/ha.d/haresources para servir. Configurando /etc/fstab Tenemos de tener especial cuidado en que la partición /home no se monte automáticamente desde /etc/fstab si existe ya una entrada para /home en dicho fichero la eliminamos y creamos esta: Código: /dev/nb0 /home reiserfs noauto 0 0Nota: si home ya esta montado lo desmontamos con umount /home Configuración del Fichero /etc/hosts Si no tenemos un servidor DNS corriendo en nuestra red tendremos de usar nuestro archivo /etc/hosts quedando de esta manera: Código: 10.10.10.20 Cluster # IP virtual cluster 192.168.1.1 Zeus #Servidor Primario 192.168.1.2 SolarUX # Servidor Segundario (Nodo)Montando todo el Cotarro Ahora es el momento de configurar el servidor segundario para que monte /home desde NFS añadiendo lo siguiente en /etc/fstab Código: Cluster:/home /home nfs defaults 0 0Una vez la partición NFS montada creamos el directorio /home/HA.config y creamos la siguiente estructura de directorios: Código: /etc postfix/ samba/ exports dhcpd.conf /var lib/ dhcpd samba nfs spool/ postfix/ mail/Después de montar la estructura de directorios tendríamos que crear enlaces simbólicos por ejemplo Código: ln -s /home/HA.config/etc/samba/smb.cf /etc/samba/smb.cfAhora desmontamos /home de la siguiente forma: Código: Root@Zeus:~# datadisk /dev/nb0 stop Root@Zeus:~# /etc/init.d/drbd stopTambién podemos configurar samba para que escuche en la interface del cluster modificando dentro de la directiva [ global ] de /etc/samba/smb.cf Código: Opciones de alta disponibilidad para Exchange 2007 - parte 1 Es, quizás, uno de los requerimientos más solicitados por todos. Tener una alta disponibilidad de servicio de correo y con menor costo. No todas las organizaciones están preparadas para afrontar los costos asociados con las opciones de alta disponibilidad que ofrecen las versiones anteriores de Exchange, por lo tanto en esta nueva versión se establecen nuevas. La primer opción se llama Local Continuous Replication (o LCR). Esta solución implica un sólo servidor que usa tecnología de Log Shipping para crear y mantener una copia de un Storage Group en un segundo set de discos, que están conectados al mismo servidor que el Storage Group. LCR provee log shipping, log replay y la posibilidad de switchear rápidamente a la copia de la base. La segunda opción es Cluster Continuous Replication (CCR). Es una solución de cluster que utiliza la misma tecnología de log shipping que LCR, pero el Storage Group se mantiene en un servidor separado. CCR fue diseñado para estar en el mismo datacenter o en uno remoto, brindando no sólo alta disponibilidad de hardware sino también de sitios. Por último tenemos Single Copy Cluster (SCC). Es una solución de cluster que usa una sóla copia del Storage Group en un storage compartido entre los nodos del cluster. SCC es muy similar a las opciones de cluster de las versiones anteriores de Exchange, con algunos cambios y mejoras. Tanto CCR como SCC son soluciones que se aplican a cluster con failover. Sólo el rol de Mailbox Server puede ser instalado en esos servidores. Todas las opciones de alta disponibilidad de los roles restantes se pueden obtener con una combinación de redundancia de servidores, Network Load Balancing o DNS Round Robin. Opciones de alta disponibilidad para Exchange 2007 - parte 2 Siendo la primer opción en la parte 1 de esta serie de notas, nos centraremos en LCR (Local Continuous Replication). LCR es una solución que involucra un sólo servidor y hace uso de la tecnología de Log Shipping y Log Replay built in en Exchange 2007 para crear y mantener actualizada una copia de un Storage Group determinado en un segundo set de discos, conectados al mismo servidor. Esta tecnología podría graficarse de la siguiente manera: LCR nos da la posibilidad de, manualmente, switchear a la copia pasiva de las bases de un Storage Group determinado ante una fatalidad. Esta tecnología fue básicamente diseñada para: Reducir considerablemente el tiempo de recuperación por un error a nivel datos. Reducir el número de full backups requeridos para una óptima protección de la información. Reducir el impacto de backups en el rendimiento del servidor. Todos los tipos de backups (full, incremental, diferencial y copia) pueden ser tomados de la copia pasiva del Storage Group. Cuando sea necesario la copia local del Storage Group pasivo puede convertirse en la productiva. LCR no tiene requerimientos específicos de Storage, todos los medios soportados sirven. LCR es la opción ideal para aquellas empresas o redes que necesitan soluciones de Disaster Recovery rápidas ante fallas o corrupción en los buzones. Aunque LCR provea ciertas ventajas ante un backup tradicional, no provee una disponibilidad completa. Básicamente porque reside en un mismo servidor, y lo único que lo separa de la base productiva es subsistema de discos distintos. LCR será la primer barrera ante una falla en la base de datos productiva y un recovery generalmente toma unos 10 minutos únicamente. Teniendo este tiempo de restore tan bajo, podemos empezar a pensar en cuotas de buzones mucho mayores. Requerimientos LCR tiene algunos requerimientos de storage y recomendaciones. Justamente una de las recomendaciones es que el storage que almacenará la copia pasiva sea de la misma capacidad y mismo rendimiento que el de la copia activa. Alguna de las mejores prácticas incluyen: Utilizar una sola base de datos por Storage Group. Cuando se habilita LCR en un Storage Group, éste sólo puede contener una sóla base de datos. No se podrá utilizar LCR en Public Folders si existe más de una base de datos de Public Folders en la organización, debido a la replicación. Particiones para rendimiento y recuperación. Generalmente particionando los discos se obtiene un rendimiento mayor y menor volúmen de datos a restaurar. Debería usarse discos y particiones diferentes para: Archivos del sistema operativo Archivos de aplicación de Exchange Bases de datos activas de Exchange Transaction logs activos de Exchange Bases de datos pasivas de Exchange Transaction logs pasivos de Exchange Adicionalmente, los discos de las copias activas y pasivas deberían estar aislados unos de otros. Asegurar espacio libre adecuado. Asegurar memoria RAM y CPU adecuados para LCR. Opciones de alta disponibilidad para Exchange 2007 - parte 3 Como tercera parte, cubriremos Cluster Continuous Replication (CCR). Para simplificar el término, CCR es un LCR pero en otro nodo pasivo que, cuando el activo falla traspasa los recursos al nodo pasivo, através de los servicios de Cluster de Windows. CCR combina la tecnología de Log Shipping y Log Replay con el servicio de Windows Cluster para brindar una solución que: No tiene un punto de fallas único No tiene requerimientos especiales de Hardware Puede ser configurado en uno o dos datacenters distintos Al igual que LCR, reduce la frecuencia de backups. Al configurar CCR, la primer operación que ocurre se denomina seeding que, básicamente, copia la base de datos del Storage Group al nodo pasivo. Luego que esta operación finaliza, se comienzan las de Log Replay. El comando de PowerShell involucrado en el falivoer es Move-ClusteredMailboxServer. Este cmdlet hace verificaciones para asegurar que el nodo pasivo está listo para recibir los recursos. CCR combina las siguientes tecnologías para hacer este servicio posible: Failover y virtualización provista por el servicio de Windows Cluster. Transaction Log Replay y Log Shipping de Exchange Server 2007. Una cola de mensajes del Hub Transport llamada Transport Dumpster. Como la siguiente figura grafica, CCR requiere dos equipos o nodos unidos a un mismo cluster. Estos nodos alojan las bases de datos de buzones, clusterizadas. El cluster utiliza la tecnología ya conocida del servicio de Cluster de Windows, pero agrega una novedad a nivel Quorum. En vez de usar un recurso de cluster, utiliza una nueva tecnología denominada Majority Node Set (MNS) quorum with file share witness. CCR usa un "testigo" o file share witness en un tercer equipo fuera del cluster, utilizado por los nodos para hacer un seguimiento de cuál nodo tiene el control de los recursos del Cluster. Este recurso es sólo utilizado cuando los nodos pierden comunicación entre ellos, siendo innecesario cuando éstos pueden interactuar entre ellos e intercambiar esta información. El testigo es utilizado cuando: Un nodo del cluster se inicia y sólo un nodo es el activo. Existe un problema en la red que evita que los nodos se intercomuniquen. Un nodo del cluster es quitado. Periodicamente para validación. La frecuencia es configurable. La carga en el File Server que aloja el "testigo" es muy poca. Requerimientos Existen ciertas consideraciones a tener en cuenta antes de implementar este tipo de soluciones: Se debe utilizar una sóla base de datos por Storage Group. Si se cuenta con un sólo servidor de Maiblox en la organización y está en un ambiente de CCR, el servidor puede contener un almacén de Carpetas Públicas. En esta configuración, existe una única base de datos de Public Folders, por lo tanto la replicación está deshabilitada. Si se tienen varios Mailbox Servers, y sólo uno tiene una base de Public Folders, esta base puede estar alojada en un CCR. En esta configuración, existe una única base de datos de Public Folders, por lo tanto la replicación está deshabilitada. Si más de un Mailbox Server tiene bases de datos de Public Folders, y la replicación está habilitada, las Public Folders no pueden estar alojadas en un CCR. Todos los nodos del cluster deben pertenecer al mismo dominio de Active Directory. Exchange Server 2007, en CCR, no está soportado si el servidor es también Domain Controller. Asegurarse que el cluster sea configurado antes de instalar Exchange Server 2007. No pueden existir otras aplicaciones instaladas en los nodos que utilicen el cluster (cluster-aware), como SQL Server o Exchange Server 2000 / 2003. Sí está soportado, por ejemplo, que el nodo corra SQL Server 2005 Express, sin clusterizar. Se debe instalar la misma versión de Exchange Server 2007 en todos los nodos pertenecientes al cluster. Adicionalmente, el Sistema Operativo y los binarios de Exchange deben estar instalado en los mismos path y unidades en ambos nodos. La cuenta de servicio de Cluster debe ser miembro del grupo Administradores local de cada nodo. Requerimientos de Software Todos los nodos en el cluster deben correr Windows Server 2003 Enterprise, utilizando las mismas unidades para el sistema y booteo. El cluster debe tener instalado el fix 921181 La carpeta compartida para el quorum de MNS no necesariamente tiene que ser un equipo dedicado. En un ambiente con delegaciones de administración, la recomendación es que el quorum resida en un Hub Transport u otro servidor de Exchange, para que pueda ser controlada por un Administrador de Exchange. En CCR sólo se puede instalar el rol de Mailbox Server. No se puede compartir ningún otro rol. Requerimientos de Red Cada nodo debe contar con, al menos, dos interfaces de red disponibles para el servicio de Windows Cluster. Una interfaz será pública, y la otra para las comunicaciones intra-cluster. Cada nodo requiere una dirección ip estática para cada uno de los adaptadores que serán utilizados por el servicio de cluster. Las direcciones de los adaptadores no pueden estar en la misma subnet. Las interfaces privadas (comunicación intra-cluster) deben estar en la misma subnet. Las interfaces públicas deben estar en la misma subnet.