Gerade habe ich Urlaub - und Urlaub bei mir heißt auch immer Maintenance im Heimlabor. Das wiederum heißt Updates und Upgrades für die verschiedenen Server, Dienste und Virtualisierungsplattformen. Und natürlich geht auch immer etwas schief - auch dieses Mal...
Ich habe hier zwei physische Maschinen rumstehen, auf die oben angegebene Beschreibung passt: Beides sind Intel Maschinen mit Linux als Betriebssystem. Die eine ist meine NAS-Platform, die andere trägt mehrere (para-)virtualisierte Maschinen: Darunter sind drei LXC-Container, die als root (ständig) laufen und zwei, die unprivilegiert nur auf Bedarf gestartet werden. Diese zwei sind Mapping-Server auf Basis von Openstreetmap-Daten und Höhenprofil-Informationen. Die drei ständig laufenden sind ein Gitlab-Server (ja, immer noch - ich habe noch nicht umgestellt), ein iRedMail-Mailserver (nur fürs Homelab, da einige der self-hosted Dienste nur mit einer EMail-Adresse funktionieren) und ein Docker-Server.
Nach Abschluss des Upgrades des Docker-Servers (den ich unattended ließ) kam ich am nächsten Morgen in ein sehr molliges Arbeitszimmer, weil das Kistchen die ganze Nacht mit voller Power durchgelaufen war und der Lüfter entsprechend viel heiße Luft aus dem Gehäuse geschaufelt hatte...
Nachdem ich das Geröll und die Splitter des fehlgeschlagenen Updates soweit beiseite geräumt hatte, dass ich den Schaden begutachten konnte (und auch das Betriebssystem des darunterliegenden Bare-Metal-Systems aktualisiert hatte) stellte sich heraus, dass der Docker-Server sämtliche Container immer wieder neu zu starten versuchte - und zwar endlos. Auch der Gitlab-Container fuhr nicht mehr sauber hoch - er blieb immer hängen bevor das Webfrontend verfügbar wurde.
Also schaltete ich die drei Container zunächst erst einmal aus und begab mich auf Fehlersuche. ziemlich schnell stellte sich heraus, dass ich erst einmal ein grundlegendes Problem zu lösen hatte: Der Massendatenträger des Bare-Metal-Systems war voll - und zwar alle 1.4 Tera Byte!
Wie könnte man das nun lösen? Eigentlich würde ich so eine Situation durch ncdu auflösen - allerdings war das auf dem System noch nicht installiert und wegen der zu vollen Festplatte konnte ich keine zusätzlichen Tools installieren. Also machte ich mich mühselig mittels du -h --max-depth=1 auf den Weg durch die Untiefen und fand bereits nach einer Viertelstunde tatsächlich ein json-log in einem der Docker-Container mit beeinfruckenden 667 Giga Byte Größe! Nachdem ich das kompromisslos gelöscht und mit 0 Byte wieder angelegt hatte fuhr Gitlab und der Mail-Server wieder anstandslos hoch - Auch der Docker-Server schien zu funktionieren - allerdings funktionierten nur die Dienste, die kein Web-Frontend aufwiesen - alle anderen meldeten übereinstimmend 404. Da beio mir alle Webanwendungen zentral über Traefik laufen war es naheliegend, hier nach der Ursache zu suchen - und siehe da: Als ich versucht, den Container im Vordergrund zu starten begrüßte mich die Fehlermeldung: Error response from daemon: client version 1.24 is too old. Minimum supported API version is 1.44
Eine Internet-Recherche ergab, dass die Ursache in einem zu großen Abstand der Traefik und der Docker-Version bestand. Ich löste das (short-Term Fix), indem ich docker wieder auf die ältere Version zurücksetzte und weitere Upgrades dieses Pakets auf on hold setzte.
Precision Time Protocol
15.10.2021
Durch meinen Neffen wurde ich neulich auf ein Video im Internet aufmerksam gemacht, aus dem ich von der Existenz des Protokolls PTP oder Precision Time Protocol erfuhr. Hier einige Gedanken dazu
WeiterlesenAI und ML Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Hardware Java Jupyter JupyterBinder Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Präsentationen Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
Als ich diese Lösung zur Darstellunbg und Analyse von beliebigen strukturierten Daten fand (das Beispiel erledigt das für ASN.1 kodierte Informationen), fasste ich den Entschluss, dass ich eine entsprechende Komponente in Java realisieren wollte.
WeiterlesenEine neue Version der sQLshell ist verfügbar!
WeiterlesenEin Influenzer würde einen solchen Artikel beginnen mit "Ich werde immer wieder gefragt, warum..." Da ich keiner bin kann ich so etwas nicht tun – statt dessen erläutere ich einfach das Szenario: Ich pflege diverse Open Source Projekte, die sich mit PKI und kryptographischen Timestamps. Jedoch benutzt die sQLshell elektronische Signaturen nur für die Verteilung der diversen Plugins.
WeiterlesenManche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen Codeberg-Repositories findet man hier.