HOS 2.X PXE-Boot mit LACP

2016-01-27

HOS 2.X PXE-Boot mit LACP

Machine-translated — the English original is authoritative.

Heute habe ich an einer Installation gearbeitet, bei der auf allen Servern gebündelte Netzwerkschnittstellenkarten (Bonded NICs) verwendet wurden. Dual-Port-10Gb-Netzwerkschnittstellen wurden auf den HP59XX-Switches wie folgt mit LACP gebündelt:

[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}

Alle Server konnten jedoch nicht per PXE booten.

Bei der Untersuchung der Server-Konsolen stellte sich heraus, dass sie zwar versuchten, per PXE zu booten, aber scheinbar keine Antwort vom Deployer erhielten.

Ein kurzer Check der Konfiguration im Helion Lifecycle Manager zeigte, dass alles korrekt eingerichtet ist.

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

Diese Checks zeigten, dass die Dienste des Deployer-Knotens betriebsbereit sind, aber keine DHCPDISCOVER-Anfragen seine Schnittstellen erreichen.

Dies deutet auf ein grundlegendes Problem mit dem Broadcast-Domain des Management-Netzwerks hin. Die PXE-Broadcast-Anfragen verlassen die Server, erreichen aber den HLM-Knoten im selben Netzwerk nicht.

Die grundlegende Switch-Konfiguration wurde überprüft, um sicherzustellen, dass das Management-VLAN das native VLAN ist und alle Ports korrekt konfiguriert sind. Alles sah korrekt aus.

Als wir als Nächstes die LACP-Konfiguration entfernten, startete der PXE-Boot-Prozess wieder. Der TCPDUMP zeigte, dass die eingehenden DHCPDISCOVER-Anfragen nun empfangen wurden.

Eine kurze Google-Suche nach HP5900 PXE-Problemen mit LACP ergab die Ursache des Problems, die hier zu finden ist – vielen Dank an Peter Debruyne.

LÖSUNG : Wenn Sie LACP auf Knoten verwenden, die zunächst als einzelne Netzwerkschnittstellenkarten booten – wie beim Versuch, per PXE zu booten – ist es notwendig, den LACP-Typ als „edge-port“ zu konfigurieren, wie folgt:

[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]

Die neu konfigurierten LACP-Ports funktionieren nun als einzelne Netzwerkschnittstellen beim PXE-Boot.

Die folgenden Bilder zeigen, wie ein korrekt konfiguriertes System beim PXE-Boot aussehen sollte:

PXE&TCPDUMP

SyslogMessages

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

← All posts