HOS 2.X Arranque PXE con LACP

2016-01-27

HOS 2.X Arranque PXE con LACP

Machine-translated — the English original is authoritative.

Hoy estaba trabajando en una instalación que utilizaba tarjetas de interfaz de red enlazadas en todos los servidores. Las interfaces de red de 10gb de doble puerto se enlazaban usando LACP en los switches HP59XX de la siguiente manera:

[GJL-HP5900-1-Bridge-Aggregation2]display link-aggregation verbose Bridge-Aggregation2
Loadsharing Type: Shar -- Loadsharing, NonS -- Non-Loadsharing
Port Status: S -- Selected, U -- Unselected, I -- Individual
Flags:  A -- LACP_Activity, B -- LACP_Timeout, C -- Aggregation,
        D -- Synchronization, E -- Collecting, F -- Distributing,
        G -- Defaulted, H -- Expired

Aggregate Interface: Bridge-Aggregation2
Aggregation Mode: Dynamic
Loadsharing Type: Shar
System ID: 0x8000, aaaa-bbbb-cccc
Local:
  Port             Status  Priority Oper-Key  Flag
--------------------------------------------------------------------------------
  XGE1/0/3         S       32768    2         {ACDEFG}
  XGE1/0/4         U       32768    2         {ACG}
Remote:
  Actor            Partner Priority Oper-Key  SystemID               Flag
--------------------------------------------------------------------------------
  XGE1/0/3         0       32768    0         0x8000, 0000-0000-0000 {DEF}
  XGE1/0/4         0       32768    0         0x8000, 0000-0000-0000 {EF}

Sin embargo, todos los servidores eran incapaces de arrancar mediante PXE.

Al examinar la consola de los servidores se reveló que estaban intentando arrancar mediante PXE pero no parecía que estuvieran recibiendo respuesta del servidor de despliegue.

Una rápida comprobación de la configuración en Helion Lifecycle Manager muestra que todo está configurado correctamente.

graham@helion-cp1-c1-m1-mgmt:/etc/dhcp$ cat dhcpd.conf | more
# ******************************************************************
# Cobbler managed dhcpd.conf file
# generated from cobbler dhcp.conf template (Mon Jan 18 14:32:10 2016)
# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
# overwritten.
# ******************************************************************

ddns-update-style interim;

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

option pxe-system-type code 93 = unsigned integer 16;

subnet 172.16.60.0 netmask 255.255.255.0 {
     option routers             172.16.60.10;
     option domain-name-servers 172.16.60.10;
     option subnet-mask         255.255.255.0;
     deny unknown-clients;
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                172.16.60.10;
     class "pxeclients" {
          match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
          if option pxe-system-type = 00:02 {
                  filename "ia64/elilo.efi";
          } else if option pxe-system-type = 00:06 {
                  filename "grub/grub-x86.efi";
          } else if option pxe-system-type = 00:07 {
                  filename "grub/grub-x86_64.efi";
          } else {
                  filename "pxelinux.0";
          }
     }

}

# group for Cobbler DHCP tag: default
group {
    host generic7 {
        hardware ethernet 8c:dc:d4:b5:ce:80;
        fixed-address 172.16.60.14;
        option host-name "compute2";
        option routers 172.16.60.10;
        next-server 172.16.60.10;
    }
    host generic5 {
        hardware ethernet 8c:dc:d4:b5:c9:74;
        fixed-address 172.16.60.12;
        option host-name "controller3";
        option routers 172.16.60.10;
        next-server 172.16.60.10;
    }
    host generic1 {
        hardware ethernet 8c:dc:d4:b5:c9:00;
        fixed-address 172.16.60.13;
        option host-name "compute1";
        option routers 172.16.60.10;
        next-server 172.16.60.10;
    }
    host generic6 {
        hardware ethernet 8c:dc:d4:b5:c6:40;
        fixed-address 172.16.60.11;
        option host-name "controller2";
        option routers 172.16.60.10;
        next-server 172.16.60.10;
    }
    host generic4 {
        hardware ethernet 5c:b9:01:8d:6b:68;
        fixed-address 172.16.60.15;
        option host-name "osd1";
        option routers 172.16.60.10;
        next-server 172.16.60.10;
    }
    host generic3 {
        hardware ethernet 5c:b9:01:8d:73:dc;
        fixed-address 172.16.60.17;
        option host-name "osd3";
        option routers 172.16.60.10;
        next-server 172.16.60.10;
    }
    host generic2 {
        hardware ethernet 5c:b9:01:8d:70:0c;
        fixed-address 172.16.60.16;
        option host-name "osd2";
        option routers 172.16.60.10;
        next-server 172.16.60.10;
    }
}
$ netstat -an | fgrep -w 67
udp        0      0 0.0.0.0:67              0.0.0.0:*

dhcpVerify

netstat -an | fgrep -w 69
udp        0      0 0.0.0.0:69              0.0.0.0:*

tftpVerify

sudo grep -i dhcp /var/log/syslog
tcpdump -n -i any port 67 or port 68 or port 69

Estas comprobaciones mostraron que los servicios del nodo desplegador están operativos, pero no llegan solicitudes DHCPDISCOVER a sus interfaces.

Esto apunta a un problema fundamental con el dominio de difusión de la red de gestión. Las solicitudes de difusión PXE salen de los servidores pero no llegan al nodo HLM en la misma red.

Se revisó la configuración básica del switch para asegurar que el vlan de gestión era el vlan nativo y que todos los puertos estaban configurados correctamente. Todo parecía correcto.

A continuación, eliminamos la configuración LACP y el proceso de arranque PXE cobró vida. El TCPDUMP mostró que ahora se recibían las solicitudes DHCPDISCOVER entrantes.

Una rápida búsqueda en Google sobre problemas de PXE con LACP en HP5900 reveló la causa raíz del problema, que se puede encontrar aquí – gracias a Peter Debruyne.

SOLUCIÓN : Cuando se usa LACP en nodos que inicialmente arrancan como tarjetas de interfaz de red individuales – como cuando se intenta arrancar mediante PXE – es necesario configurar el tipo LACP como “edge-port” de la siguiente manera:

[GJL-HP5900-1-Bridge-Aggregation2]lacp edge-port
[GJL-HP5900-1-Bridge-Aggregation2]display link-aggregation verbose Bridge-Aggregation2
Loadsharing Type: Shar -- Loadsharing, NonS -- Non-Loadsharing
Port Status: S -- Selected, U -- Unselected, I -- Individual
Flags:  A -- LACP_Activity, B -- LACP_Timeout, C -- Aggregation,
        D -- Synchronization, E -- Collecting, F -- Distributing,
        G -- Defaulted, H -- Expired

Aggregate Interface: Bridge-Aggregation2
Aggregation Mode: Dynamic
Loadsharing Type: Shar
System ID: 0x8000, aaaa-bbbb-cccc
Local:
  Port             Status  Priority Oper-Key  Flag
--------------------------------------------------------------------------------
  XGE1/0/3         I       32768    2         {AG}
  XGE1/0/4         I       32768    2         {AG}
Remote:
  Actor            Partner Priority Oper-Key  SystemID               Flag
--------------------------------------------------------------------------------
  XGE1/0/3         0       32768    0         0x8000, 0000-0000-0000 {DEF}
  XGE1/0/4         0       32768    0         0x8000, 0000-0000-0000 {EF}
[NEO-HP5900-1-Bridge-Aggregation2]

Los nuevos puertos LACP configurados ahora funcionan como tarjetas de interfaz de red individuales durante el arranque PXE.

Las siguientes imágenes muestran cómo debería verse un sistema correctamente configurado durante el arranque PXE-

PXE&TCPDUMP

SyslogMessages

Originally published on allthingscloud.eu (2016-01-27).

← All posts