Oracle 19c Grid Infrastructur und IPMI Support für Protokollversion V2

In der Grid Infrastructur wird IPMI (Intelligent Platform Management Interface) für das Fencing von Knoten genutzt, wenn diese – aus Sicht der verbliebenen Knoten – in einem undefinierten Zustand hängen bleiben.

Unter Fencing versteht man das den Reboot eines Knotens mit Hilfe der Firmware des Servers. IPMI ist somit Teil der Umsetzung von Lights Out Management, das alle gängigen Serverhersteller wie Intel, HPE, NEC, DELL, etc. unterstützen.

Für Linux benötigt man die IPMI Tools und Utilities aus folgenden Quellen:

  • IPMItool http://ipmitool.sourceforge.net
  • IPMIutil http://ipmiutil.sourceforge.net

Dies wird in dem Dokument Grid Infrastructure Installation and Upgrade Guide for Linux entsprechend beschrieben.

Die Version IPMI v1.0 wurde im September 1998 vorgestellt und im Feb 2024 durch IPMI v2.0 erweitert. Inzwischen – seit April 2015 – gilt IPMI v2.0 Rec 1.1 Errata 7 als der Standard. Den Nachfolger Redfish (seit August 2015) unterstützt Oracle überhaupt nicht.

Oracle 19c nutzt leider immer noch die IPMI Version 1.5 (Feb 2001), welches in den aktuellen Firmware Versionen der Serverhersteller aus Securitygründen nicht mehr unterstützt wird. Erst mit Oracle 23ai Grid Infrastructure schwenkt Oracle auf IPMI v2.0 um.

Wenn die Oracle 19c Grid Infrastructure entscheidet, dass ein Knoten mittels Fencing rebooted werden soll, wird ein entsprechender Befehl ausgeführt, der Beispielsweise so aussieht:

ipmiutil alarms -r -N <ip_adresse_ipmi> -U <ipmi-admin-user> -Y

Die IP Adresse <ip_adresse_ipmi> entspricht der konfigurierten IP Adresse für das iLOM des Knoten. <ipmi-admin-user> ist der in der Firmware konfigurierte IPMI Benutzer. Diesen Befehl kann man zum Testen der IPMI Konfiguration nutzen.

Bei aktuellen DELL und HPE Firmwares scheitert der Befehl, weil diese zwingend die Version 2.0 des Protokolls voraussetzen, und die Grid Infrastruktur den entsprechenden Parameter beim Aufruf nicht übermittelt.

Um dieses Problem zu lösen, muss man sich einem kleinen Trick – einem Wrapperscript – bedienen. Zuerst benennt man das ipmiutil um und erzeugt danach ein Shell scripts, dass den Protokollswitch zusätzlich übermittelt. Als Benutzer Root erledigt man dies mit folgenden Befehlen:

cd /usr/bin
# Originalutility umbenennen
mv ipmiutil ipmiutil_ori

# Wrapperscript erzeugen
cat > /usr/bin/ipmiutil <<EOF
#! /bin/sh -
exec /usr/bin/ipmiutil319 "$@" -F lan2
EOF

# Fileprotection korrigieren
chmod 755 /usr/bin/ipmiutil

Als nächstes muss man dies der Grid Infrastructure Software noch mitteilen (als GI Owner Benutzer).

crsctl set ipmi binaryloc /usr/bin/ipmiutil

Leider erfordert dies eine Restart der GI (als Benutzer Root mit korrektem Oracle Environment):

crsctl stop crs -f
crsctl start crs

Dies muss man auf ALLEN Knoten wiederholen!

Zuletzt als GI Owner den IPMI Admin Benutzer nutz setzen (und damit testen):

crsctl set css ipadmin <ipmi-admin-user>
   IPMI BMC password: <pwd>
   CRS-4229: The IPMI information change was successful

Die Meldung CRS-4229: The IPMI information change was successful erfolgt nur, wenn die GI erfolgreich kommuniziert hat.

Weitere Informationen

  • Damit IPMI funktioniert, muss dies im Bios/in der Firmware konfiguriert und „IPMI over LAN“ aktiviert sein. Zusätzlich muss ein entsprechender IPMI Benutzer mit ADMIN Rechten angelegt worden sein.
  • Oracle hat diesen Umstand für Oracle 19c als Enhancement Enh 37403955 - REPLACE IPMIUTIL BY IPMITOOL akzeptiert. Informationen zu Enhancements sind leider nicht frei zugänglich. Allerdings sieht das Enhancement nicht vor die Protokollversion mitzugeben, sondern von den ipmiutil auf ipmitool umzustellen, welches beide Protokolversionen „unterstützt“.