[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Admin] Downtime Vereinsserver am Samstag, den 15.3.2014 ab 21 Uhr
[Thread Prev] | [Thread Next]
- Subject: Re: [Admin] Downtime Vereinsserver am Samstag, den 15.3.2014 ab 21 Uhr
- From: Raphael Eiselstein <rabe@xxxxxxxxx>
- Date: Sun, 16 Mar 2014 22:39:52 +0100
- To: uugrn@xxxxxxxxxxxxxxx
On Thu, Mar 13, 2014 at 08:49:57PM +0100, Raphael Eiselstein wrote: > abschalten, da eine defekte Platte ausgebaut werden muss. Das ganze wird > fruehestens 21 Uhr stattfinden und dann wenn alles gut geht ca 30 Minuten > dauern bis alle Jails wieder laufen. Es gab natuerlich weitere Probleme, die unabhaengig vom Ausbau der defekten Platte waren. Ich will hier mal so die "Kleinigkeiten" zusammenzaehlen, die den Reboot verhindert haben. 1) Ich habe auf dem Vereinsserver ein /freebsd in allen Jails, welches read-only in jedes einzelne Jail gemountet wird. /freebsd ist read-only fuer alle bis auf das Build/Maintainance-Jail, in dem zB die Updates von /freebsd/upstream/ports/ etc laufen. In der /etc/fstab von top3.uugrn.org (also direkt der Server) gab es analog zu den jails sowas: /shared/freebsd /freebsd nullfs ro,late 0 0 (BTW: Dank ZFS ist fstab ansonsten vollstaendig leer!) *Leider* hatte ich vor Monaten das /shared/freebsd nach /tank/freebsd umgezogen, das liegt auf einem anderen zpool. Ich haette es weiter unter /shared/freebsd belassen koennen, habe es aber nach /tank/freebsd umgezogen, d.h. das zvol hat seinen mountpoint von "tank" geerbt und nicht mehr lokal gesetzt. Bei Jails wuerde das dazu fuehren, dass sie sich nicht mehr starten lassen, das kann man dann sehr einfach korrigieren. Beim normalen Boot werden als "late" gekennzeichnete Filesysteme via /etc/rc.d/mountlate gemountet. Wenn das fehlschlaegt, dann bricht der automatische Boot ab und man faellt in eine root-Shell auf /dev/console von wo aus man dann manuell die /etc/fstab korrigieren kann und weiter booten kann. Das ist *bevor* sshd oder lokale gettys auf VGA gestartet werden! 2) In der /boot/loader.conf hatte ich folgendes stehen: console="comconsole" comconsole_speed="115200" comconsole_port="0xe1c0" #comconsole_port="0xf0e0" Das sorgt dafuer, dass als console die via iAMT implementierte virtuelle Serielle Schnittstelle als Console verwendet wird, zu der man sich dann mittels "amtterm" verbinden kann (bei UUGRN@TWX findet das in einem RfC1918-Netz statt, ist also nicht via Internet erreichbar) *Allerdings* ist wohl das Zusammenspiel von FreeBSD mit dieser virtuellen Seriellen Schnittstelle scheinbar instabil (auf einem anderen aehnlichen Server tut es einwandfrei). Diese Instabilitaet zeigt sich darin, dass der Verbindungsaufbau mittels amtterm nur manchmal klappt und wenn dann nur fuer wenige Zeichen I/O, d.h. es reicht fuer ein paarmal Enter um die Root-Shell zu sehen aber nicht mehr um dort ein Command abzusetzen. Sehr aergerlich! Das System hatte also noch keine lokalen gettys laufen, kein ssh-daemon, allerdings schon bind9 (DNS-Server), wir hatten also effektiv keine Moeglichkeit auf das abgebrochene System zuzugreifen. Einzige Loesung (Danke an Juergen): * Server ausbauen, mit heimnehmen, Rescue-System booten und dann ... # zpool import -R /mnt zroot # vi /mnt/boot/loader.conf # vi /mnt/etc/fstab # reboot * Server testen, wieder ins RZ bringen und hochfahren. Tut. Wie kann man solche und aehnliche Probleme kuenftig entschaerfen? * Fuer jeden Server im RZ mindestens ein betriebsbereites Rescue-Image vorbereiten und auf USB-Stick oder per PXE-Boot verfuegbar machen. + Dieses spezielle Rescue-System muss so vollstaendig sein, dass es sich die IP-Adrese des Servers zieht oder als Fallback auf allen Interfaces DHCP versucht. + Es muss einen sshd starten - egal wie, sobald auch nur *irgendeine* IP-Adresse oder Interface hochgefahren ist. Notfalls alle Minute per cronjob pruefen und ggf starten. + Ausserdem muss ueber ein cronjob der Zugriff auf den sshd per ssh-Tunnelueber einen Dritt-Rechner (am besten direkt per IP- Adresse nicht DNS-Eintrag) gewaehrleistet werden, damit man auch dann noch auf das System zugreifen kann, wenn es *irgendwo* hinter einem NAT-Router steht. + Es muss ein cronjob eingerichtet sein, der periodisch "nach Hause" telefoniert und ggf. Scripte herunter laedt (wget, curl), automatisch ausfuehrt und den Output per Mail oder ssh oder curl zurueckliefert. Damit kann man gezielt bestimmte Aktionen triggern selbst wenn kein Zugriff/Login per SSH moeglich ist * Jeder Server sollte ueber einen zweiten (unabhaengigen) SSH-Daemon verfuegen, der sehr frueh im Bootprozess auf einem alternativen Port hochgefahren wird. Dieser sollte speziell konfiguriert sein sodass nur root-Zugriffe von bestimmten Drittsystemen aus moeglich sind. Frohes Restwochenende! Gruss Raphael -- Raphael Eiselstein <rabe@xxxxxxxxx> http://rabe.uugrn.org/ xmpp:freibyter@xxxxxx | https://www.xing.com/profile/Raphael_Eiselstein PGP (alt): E7B2 1D66 3AF2 EDC7 9828 6D7A 9CDA 3E7B 10CA 9F2D PGP (neu): 4E63 5307 6F6A 036D 518D 3C4F 75EE EA14 F625 DB4E .........|.........|.........|.........|.........|.........|.........|.. -- UUGRN e.V. http://www.uugrn.org/ http://mailman.uugrn.org/mailman/listinfo/uugrn Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste Archiv: http://lists.uugrn.org/