Supermicro IPMI je označení pro vzdálený management serveru. Pod tímto označením se skrývá skupina komponent, které jsou velmi dobře popsané na webu Thomas Krenn. Pro nás je ale nejdůležitější, že díky této technologii můžeme server ovládat i v momentech, kdy je to nejvíce potřeba. Z pohledu uživatele se využívá ke vzdáleným restartům, popř. vzdálené consoli. Kvůli reinstalaci serveru se tedy nemusí jezdit do datacentra, ale vše se díky managementu dá zvládnout z pohodlí kanceláře.
Remote Management Control Protocol je část managementu, která se stará o to, aby šly volat uživatelské příkazy i přes síť. Díky tomuto protokolu je v cloudovém prostředí například možné spouštět nebo výpínat servery podle aktuální zátěže, aby se šetřila elektrická energie.
Další jeho důležitou součástí je zpřístupnené hodnot ze senzorů, které se v serveru nachází. Tuto funkci využíváme k monitoringu všech serverů. O každém serveru máme tedy přehled, jestli je v pracovní pohodě nebo jej trápí například nefunkční jeden ze zdrojů, popř. vyšší teploty.
Supermicro IPMI podporuje IPv6 už od verze základních desek X9 a vyšších. Webové rozhranní s java/html5/sol consolemi funguje velmi dobře. RMCP ale bohužel IPv6 podporu nedostal a jak se zdá, tak se jí ani nedočkáme.
To nás ale velmi zpomaluje k nasazení IPv6 only sítě a musíme kvůli tomu držet v management síti IPv4 adresy. Dokonce na monitoringu musíme odebírat z DNS odpovědí AAAA záznamy, protože se zabbix snaží komunikovat primárně po IPv6 a nefunguje tam fallback na IPv4.
Naše nejlepší řešení, jak z této situace ven, bylo napsat si vlastní wrapper, který komunikuje přímo s webem a všechny potřebné údaje parsuje z rozhraní, které primárně využívá uživatel.
Knihovnu jsme zveřejnili na gihtubu: https://github.com/serverzone/Supermicro-ipmi
Ačkoliv máme všechny management moduly ve fyzicky oddělené síti a ačkoliv je veškerý provoz filtrován restriktivním firewallem, i tak se chceme vyhnout problémům, kdy by jedna z komponent přestala fungovat. Z toho důvodu jeden náš případ použítí je testování výchozího uživatelského jména a hesla ADMIN/ADMIN.
V momentě, kdy monitoring narazí na situaci, kdy se nám v datacentru objeví server s takto nastavenými přístupovými údaji, tak nám vyskočí varování a uživatelské údaje změníme.
<?php
require __DIR__ . '/vendor/autoload.php';
$instance = new ServerZone\SupermicroIpmi\Client('[2001:db8::1]', 'ADMIN', 'ADMIN');
try {
$instance->login();
exit(1);
} catch (ServerZone\SupermicroIpmi\UnauthorizedException $e) {
exit(0);
}
Sice jiné servery než Supermicro nepoužíváme, ale již jsme měli čest s HP servery, kde je IPMI protokol přes IPv6 podporován přinejmenším od verze G8.
Celou situaci se výrobci pokusili standardizovat a vznikl Redfish protokol, který celý veškeré funkce IPMI obaluje do RESTful API. Redfish protokol je u Supermicra podporován u základních desek X10 a vyšších. Protože ale máme v síti ještě nějaké starší servery, rozhodli jsme se prozkoumání Redfish protokolu nechat na později - až do doby, kdy provedeme technologický upgrade všech serverů X9 základními deskami.
Při realizaci jsem se ještě zamysleli nad tím, jak by se to dalo řešit jinak. Pokud by nám nevadilo zachovat si IPv4 síť pro management karty - byď by byla jen lokální a nemusela by se vůbec routovat. Stačilo by nám jen všechen provoz na portu 623/udp přesměrovat na server, který by se postaral o překlad datagramů mezi IPv6 a IPv4 a zpět.
Naším cílem ale bylo odstranit IPv4 úplně, takže jsme tuto variantu nakonec nezvolili.