En estos tiempos donde hay servicios críticos para el funcionamiento de los sistemas, donde se ha avanzado mucho en tener los equipos virtualizados, o inclusive los servidores de archivos, entre otros, es crítico proveer tolerancia a fallas
Si revisan el blog encontrarán varias notas referidas a los temas nombrados desde un “Cluster Hyper-V” hasta servidor de archivos con alta disponibilidad
Pero aunque hemos visto la redundancia en cuanto a equipos, hasta ahora a quedado sin ver la parte de conectividad de red
Esta vez vamos a ver cómo podemos implementar tolerancia a fallas para el acceso de un servidor de archivos a una SAN, aunque sería totalmente análogo si fuera un “Cluster” de virtualización, y además mejoras en el rendimiento
La infraestructura que utilizaré se muestra a continuación:
Tengan en cuenta que esta demostración corresponde a un ambiente de prueba para mostrar la configuración y funcionamiento, y no se trata de un ambiente productivo, por lo que limitaré algunas configuraciones para no tener un consumo excesivo de recursos de las máquinas virtuales que utilizo
Las máquinas uttilizadas son:
- DC1.ad.guillermod.com
Windows Server 2012 R2 Controlador de Dominio
Dir.IP: 192.168.1.201/24 - SRV1.ad.guillermod.com.ar
Windows Server 2012 R2 Servidor miembro del Dominio
Dir.IP Ethernet0: 192.168.1.101/24
Dir.IP SAN1: 172.16.0.1/16
Dir.IP SAN2: 172.17.0.1/16 - SAN
Windows Server 2012 R2 En grupo de trabajo
Dir.IP SAN1: 172.16.0.2/16
Dir.IP SAN2: 172.17.0.2/16
Cortafuegos bajo, ya que se trata de una demostración
Una configuración importante que hay que hacer en SRV1 es evitar que se registren en DNS las conexiones de red SAN1 y SAN2, como muestra la siguiente figura. Si ya estuvieran es importante eliminar estas registraciones, dejando solamente la correspondiente a la red del Dominio (Ethernet0)
Comenzaré la configuración en SRV1 instalando las funcionalidades “File Server” y “Multipath I/O”. Entiendo que todo el que quiera seguir esta nota no necesitará todas las capturas de pantalla sobre cómo se instalan los componentes, así que mostraré sólo las pantallas de la selección de cada componente
A continuación en la máquina SAN, agregaré la funcionalidad “iSCSI Target Server” que análogamente al caso anterior mostraré sólo la pantalla de selección de la funcionalidad
Continuando en el equipo SAN comenzaré creando un “iSCSI Virtual Disk” siguiendo el asistente como se muestra
En ambiente productivo debería tener por lo menos un disco físico separado
El nombre que deseen
Acá debemos configurar el tamaño que necesitemos, y además, dejar el valor por omisión del tipo, aunque yo lo he cambiado a “Dynamically expanding”
Otro nombre a gusto de cada uno
Y ahora debemos especificar cuál es el “iSCSI Initiator” que podrá conectarse
Lo indicaré por dirección IP, ya que la máquina SAN no tiene configurado método de resolución de nombres
Y debemos repetir este último proceso para agregar la segunda dirección IP de SRV1
Y seguimos
Es el momento de cambiarnos de máquina a SRV1 y comenzar la configuración de “iSCSI Initiator” como muestran las siguientes pantallas
Indicamos el “iSCSI Target”, alcanza con una de ambas direcciones IP, y pulsamos el botón “Quick Connect …”
Debería quedar todo así
Continuando en SRV1 vamos a comenzar la configuración de “MPIO”
En cuanto seleccionamos que deseamos soportar dispositivos iSCSI y tratamos de ingresar uno, el sistema pedirá reiniciar :(
Luego del reinicio, continuamos en “MPIO”
Observen que apareció un nuevo “Device”. Si no aparece es porque ha habido un problema en la configuración anterior
Volvemos para terminar la configuración de “iSCSI Initiator”
Desconectamos la conexión
Y reconectamos
Debemos hacer que queden marcadas ambas opciones, en cuanto a “Target favorito” y habilitar el “MPIO”, e ingresar por el botón “Advanced”
Debemos seleccionar en el adaptador “Microsoft iSCSI Initiator”, una de las conexiones de red, y su correspondiente en SAN
Y repetir el procedimiento para la otra interfaz de red
Debe quedar así
Ahora debemos seleccionar, por facilidad en este caso el botón “Auto Configure”
Debería reconocer automáticamente el disco que creamos anteriormente
Si vamos al administrador de discos vemos que ahora tenemos un nuevo disco, que debemos poner “Online”, “Initialize”, y crear y dar formato a un volumen
En este nuevo disco crearé una carpeta de prueba, que compartiré, conteniendo un archivo que utilizaremos para demostrar el funcionamiento
Para mantener reducida la cantidad de máquinas utilizadas, haré la demostración desde DC1, accediendo al compartido, y verificando que puedo ver y modificar el archivo de prueba
Manteniendo siempre el archivo de prueba, simularé una falla de conectividad deshabilitando en en la máquina SAN una de las interfaces de red, puede ser cualquiera de las dos
Aún con la pérdida de conectividad de una de las redes, el trabajo sobre el archivo desde DC1 no se ve interrumpido para nada
Con esto hemos demostrado la tolerancia a fallas sobre la red que une las máquinas SRV1 y SAN
Para quien quiera profundizar el tema y desee implementar la solución en ambiente productivo, dejo dos enlaces que contienen importante información relativa al tema
- Understanding Microsoft Multipath I/O (MPIO) Features and Components:
https://technet.microsoft.com/en-us/library/ee619734(v=ws.10).aspx - Download Microsoft Multipath I/O (MPIO) Users Guide for Windows Server 2012 from Official Microsoft Download Center:
https://www.microsoft.com/en-us/download/details.aspx?id=30450
Comentarios
Ante todo, enorme como siempre la explicación.
Una pequeña duda ¿Por qué no dejas que se registren en el Dns las 2 San?
Gracias
Hola Nacho ¡gracias por el comentario! me alegro te sirva
Configuro que no se registren en DNS las interfaces en SAN1 y SAN2 porque no son accesibles desde la red «productiva»
Si se registraran en el DNS (DC1) cuando lo consulten por srv1.ad.guillermod.com.ar devolvería las tres direcciones IP, pero cualquier máquina sólo podrá conectarse a la de la red «productiva», las de SAN1 y SAN2 le son inaccesibles
Muy interesante Guillermo. Otra duda.
En una configuración en producción como la del ejemplo, si tuviéramos en el mismo rack los servidor SRV1 y SAN:
-¿no podríamos comunicarlos entre si, directamente con un par de cables cruzados, sin necesidad de switchs, creando en ambas máquinas un Team de tarjetas de red?
-¿En caso de que sea posible, el rendimiento sería mejor o peor que con esta técnica Multi I/O?
Gracias por adelantado, Javier
Hola Javier, es otra opción válida, sobre todo porque en W2012 es muy fácil armar el «team»
Inclusive el «team» puede proveer mejor rendimiento por supuesto ya que se puede combinar el ancho de banda
Habría que ver qué es lo que pone el máximo, si el cableado, o ios discos de la SAN
Mis máquinas para la nota son virtuales, así que no usé nigún Switch :)
Guillermo, muy buen post como siempre.
Me topé con un problema hace unos pocos días trabajando en un escenario similar; 2 servidores conectados por fibra con conexión redundante a un storage.
En el storage cree varias LUNs para utilizarlas con passthrough en las VMs alojadas en los servidores, pero al momento agregar las mismas me topo con que figuran repetidas (si cree una LUN de 200 GB me aparecían 2 de 250 GB).
Luego de forear un poco me encontré con la feature que detallas en el post «MPIO». Pero sumado a agregarla tuve que configurar un archivo «DSM» proporcionado por el fabricante del storage.
Yo lo instalé desde la propia feature, seleccionando únicamente el archvio .inf correspondiente. Tendría que haber instalado todo el paquete proporcionado por el fabricante en su lugar, o realizado de esa forma sería correcto?
Hola Federico, el sistema es así de «tonto» :) si lo vé por dos lados, asume que son dos aunque sea la misma LUN :)
Y justamente por eso es que se necesita el MPIO
El fabricante del «storage» es el que manda siempre, el que viene con Windows es genérico. Para saber si tendrías que haber instalado todo el paquete habría que ver la documentación, por si agrega funcionalidad y si vale la pena
Bárbaro, lo reviso entonces.
Muchas gracias por tu tiempo!
Gracias a vos Federico :)
«El README es algo que todos leemos después de pelear durante tres días sin lograr que funcione»
:D
Hola Guillermo,
Tus temas son visita obligatoria!!
Una consulta. El esquema planteado de MPIO ¿es válido para un cluster con storage físico?….Para el caso de un cluster de dos nodos, se tendrían 2 NICs por servidor para la SAN iSCSI, dos segmentos de red, un segmento para cada NIC (por servidor) y un segmento para cada controladora de storage (1 por puerto).
Pregunta. Al momento de definir la configuración MPIO en cada servidor ¿se deben incorporar todos los puertos iSCSI de las controladoras del storage, A y B, en rigor 4 direcciones IP, dos por cada segmento, para que sean reconocidas las cuatro como target?
Espero me entiendas. :-)…
Gracias de antemano
Saludos,
Martin
La implementación de cluster y MPIO tiene sus complicaciones, aunque por supuesto es posible
La nota fue sólo una demo lo más simple posible de MPIO
Te dejo un enlace a una serie de notas que hace una implementación de cluster con MPIO. Específicamente el MPIO lo configura en la 4, pero conviene que veas desde la 1 para ir siguiendo el proceso
Implementing Windows Server 2012 R2 Hyper-V Failover Cluster – Part 4 – Cluster storage and quorum configuration – Technology Stronghold by Rudolf Vesely
https://techstronghold.com/blogs/virtualization/implementing-windows-server-2012-r2-hyper-v-failover-cluster-part-4-cluster-storage-and-quorum-configuration
Buen día, Sr. Guillermo Delprato. Muy bueno el post.
¿Qué es un multipath I/O?
Hola RENE ZELAYA, estos son comentarios sobre la nota
https://www.google.com.ar/search?q=Qu%C3%A9+es+un+multipath+I%2FO&oq=Qu%C3%A9+es+un+multipath+I%2FO&aqs=chrome..69i57.6572j0j8&sourceid=chrome&ie=UTF-8
Hola Guillermo.
En resumen, ¿es posible usar esta configuración MPIO cuando tienes un disco y lo quieres montar en dos servidores?. Ambos servidores están en producción y los usuarios, de ambos servidores, utilizarán el contenido del disco montado.
Gracias por tu respuesta.
Hola Carlos, la finalidad de MPIO no tiene relación con eso, el objetivo es tener tolerancia a fallas en la conexión entre servidor y almacenamiento iSCSI
Hola Guillermo, una pregunta cual es la diferencia de esta implementacion con lo que es failover cluster? ya que segun he leido tambien usa el concepto de un storage en bloques y tecnologia iSCSI, Tengo dudas diferenciando esos dos conceptos, el de failover cluster y una SAN, gracias.
Hola Ale, el MPIO es sólo para tener tolerancia a fallas entre los servidores y la SAN, que por ejemplo en caso de falla de una de las conexiones de red iSCSI se mantenga la comunicación con la SAN
Cuando se usa un Cluster, si todo tiene tolerancia a fallas menos un elemento ¿cuál crees que es el que fallará? :D
Se me olvidaba otra cosa amigo, el servidor que sera el iSCSI target o SAN, debe contener hardware especifico? se que el sistema operativo ya incluye la caracteristica iSCSI target server, pero necesito igual tener discos o interfaces fisicas SCSI? o puede trabajar con discos SATA por ejemplo? y en cuanto a software, cual seria la diferencia de instalar Windows server con su caracteristica iSCSI target o instalarle el Windows Storage Server? graciaaas
Hay hardware específico para funcionar como SAN con sistema operativo propio, más caros porque con mucha funcionalidad específica
Los discos pueden ser en teoría de cualquier tipo, aqunque siempre lo probé sobre SCSI, porque es transparente. Un disco accedido por iSCSI para el server es como si fuera local, y en la SAN la realidad es que es un VHD/X. La red solo transmite los comandos de disco, además de los datos
Gracias por la respuesta Guillermo, por casualidad tienes algun otro medio para formularte una pregunta un poco mas compleja? es sobre conflictos teoricos de soluciones storage que tengo en estos momentos, gracias.
Hola Ale, lamentablemente no estoy haciendo soporte. Deberías dirigirte a algún foro donde puedas obtener respuestas
Dependiendo del tema si tiene relación con tecnologías o implementaciones Microsoft puedes usar los foros de Technet en español que están en https://social.technet.microsoft.com/Forums/es-ES/home