Implementar iSCSI SAN con MPIO (Multipath I/O)

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:

MPIO

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)

MPIO-01

MPIO-02

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

MPIO-03

MPIO-04

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

MPIO-05

Continuando en el equipo SAN comenzaré creando un “iSCSI Virtual Disk” siguiendo el asistente como se muestra

MPIO-06

En ambiente productivo debería tener por lo menos un disco físico separado

MPIO-07

El nombre que deseen

MPIO-08

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”

MPIO-09

MPIO-10

Otro nombre a gusto de cada uno

MPIO-11

Y ahora debemos especificar cuál es el “iSCSI Initiator” que podrá conectarse

MPIO-12

Lo indicaré por dirección IP, ya que la máquina SAN no tiene configurado método de resolución de nombres

MPIO-13

Y debemos repetir este último proceso para agregar la segunda dirección IP de SRV1

MPIO-14

Y seguimos

MPIO-15

MPIO-16

MPIO-17

MPIO-18

 

Es el momento de cambiarnos de máquina a SRV1 y comenzar la configuración de “iSCSI Initiator” como muestran las siguientes pantallas

MPIO-19

MPIO-20

Indicamos el “iSCSI Target”, alcanza con una de ambas direcciones IP, y pulsamos el botón “Quick Connect …”

MPIO-21

MPIO-22

Debería quedar todo así

MPIO-23

 

Continuando en SRV1 vamos a comenzar la configuración de “MPIO”

MPIO-24

En cuanto seleccionamos que deseamos soportar dispositivos iSCSI y tratamos de ingresar uno, el sistema pedirá reiniciar :(

MPIO-25

Luego del reinicio, continuamos en “MPIO”

MPIO-26

Observen que apareció un nuevo “Device”. Si no aparece es porque ha habido un problema en la configuración anterior

MPIO-27

Volvemos para terminar la configuración de “iSCSI Initiator”

MPIO-28

Desconectamos la conexión

MPIO-29

MPIO-30

Y reconectamos

MPIO-31

Debemos hacer que queden marcadas ambas opciones, en cuanto a “Target favorito” y habilitar el “MPIO”, e ingresar por el botón “Advanced”

MPIO-32

Debemos seleccionar en el adaptador “Microsoft iSCSI Initiator”, una de las conexiones de red, y su correspondiente en SAN

MPIO-33

MPIO-34

Y repetir el procedimiento para la otra interfaz de red

MPIO-35

Debe quedar así

MPIO-36

Ahora debemos seleccionar, por facilidad en este caso el botón “Auto Configure”

MPIO-37

Debería reconocer automáticamente el disco que creamos anteriormente

MPIO-38

 

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

MPIO-39

MPIO-40

En este nuevo disco crearé una carpeta de prueba, que compartiré, conteniendo un archivo que utilizaremos para demostrar el funcionamiento

MPIO-41

MPIO-42

 

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

MPIO-43

MPIO-44

 

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

MPIO-45

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

MPIO-46

 

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

 

 

Publica un comentario o deja una referencia: URL de la referencia.

Comentarios

  • Nacho  El 12/08/2015 a las 05:59

    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

    • Guillermo Delprato  El 12/08/2015 a las 07:37

      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

  • Javier  El 17/08/2015 a las 06:24

    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

    • Guillermo Delprato  El 17/08/2015 a las 07:30

      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 :)

  • federicodeluca  El 17/08/2015 a las 10:03

    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?

    • Guillermo Delprato  El 17/08/2015 a las 12:10

      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

      • federicodeluca  El 17/08/2015 a las 14:21

        Bárbaro, lo reviso entonces.
        Muchas gracias por tu tiempo!

      • Guillermo Delprato  El 17/08/2015 a las 14:43

        Gracias a vos Federico :)
        «El README es algo que todos leemos después de pelear durante tres días sin lograr que funcione»
        :D

  • Martin  El 14/12/2016 a las 10:26

    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

  • RENE ZELAYA  El 24/04/2017 a las 14:11

    Buen día, Sr. Guillermo Delprato. Muy bueno el post.

    ¿Qué es un multipath I/O?

  • Carlos Enrique Castro Leon  El 09/06/2017 a las 19:34

    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.

    • Guillermo Delprato  El 10/06/2017 a las 07:08

      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

  • Ale  El 17/08/2017 a las 09:00

    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.

    • Guillermo Delprato  El 17/08/2017 a las 11:38

      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

  • Ale  El 17/08/2017 a las 09:24

    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

    • Guillermo Delprato  El 17/08/2017 a las 11:44

      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

      • Ale  El 17/08/2017 a las 12:35

        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.

      • Guillermo Delprato  El 17/08/2017 a las 13:59

        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

Este espacio es para comentarios sobre la nota. No es un sitio de soporte

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: