So überprüfen Sie die Voraussetzungen auf einem neu installierten Server, um sicherzustellen, dass ein Server tatsächlich funktioniert

So überprüfen Sie die Voraussetzungen auf einem neu installierten Server, um sicherzustellen, dass ein Server tatsächlich funktioniert

Bei der Installation neuer Server vergesse ich normalerweise etwas, das für den eigentlichen Betrieb des Servers erforderlich ist. Ich hätte gerne eine Art automatische Vorabprüfung, um fehlende Funktionen zu erkennen, bevor ich den Server zum ersten Mal starte und Live-Benutzer auf dem Server laufen habe.

Angenommen, ich betreibe einen Pool von Anwendungsservern mit einer Plattform wie Tomcat oder PHP hinter einem Load Balancer. Der Dienst erfordert normalerweise einige der folgenden Dinge:

  • installierte Software (externe Programme wie wget oder ImageMagick etc.)
  • installierte Module (zB libcurl, mod_rewrite, Oracle etc.)
  • Konfigurationsdateien (z. B. tnsnames, php.ini usw.)
  • gemountete Dateisysteme, symbolische Links irgendwo, spezifische Berechtigungen für einige Verzeichnisse
  • bestimmte Netzwerkports müssen von der Maschine aus erreichbar sein (zB MySQL oder ein HTTP-Proxy)
  • bestimmte Netzwerkports müssen auf der Maschine erreichbar sein (das müsste von einer anderen Maschine aus getestet werden, z. B. rsync oder Port 8080)
  • Es müssen bestimmte Prozesse gestartet werden
  • Cronjobs müssen vorhanden sein

Ich gehe davon aus, dass es möglich wäre, für die meisten dieser Bedingungen Unit-Tests zu schreiben und diese nach der Installation auf jedem Rechner auszuführen, aber ich würde für eine solche Aufgabe ein spezifischeres Tool bevorzugen, vielleicht mit einer speziellen Shell-ähnlichen Sprache zum Schreiben der Tests (da zum Testen aller Dinge unterschiedliche Tools erforderlich sind, würde dies das Ausführen von Perl-Skripten, Java-Programmen, das Prüfen von Dateien, Berechtigungen, Zeilen in Konfigurationsdateien usw. beinhalten).

Ich sollte hinzufügen, dass ich nicht in der Lage sein möchte, die fehlenden Elemente zu beheben. Ich möchte lediglich prüfen, ob ich bei den Betriebskollegen zusätzliche Änderungen anfordern muss.

Antwort1

Wir tun dies, indem wir CFengine verwenden (aber Puppet würde genauso gut funktionieren), um die Konfiguration einzelner Knoten basierend auf einer zentralen Konfiguration vorzunehmen. CFengine erzwingt die korrekte Konfiguration der Maschine in der richtigen Reihenfolge und führt dies auch weiterhin durch, d. h. Prozesse werden neu gestartet, wenn sie gestoppt wurden.

Auf allen Knoten ist ein Skript verfügbar, um eine Reihe von Dingen zu prüfen (sind Dateien auf dem zentralen Speicher lesbar, können wir eine Verbindung zum MySQL-Cluster öffnen usw.). Dieses Skript wird vom Loadbalancer als Integritätsprüfung verwendet: Nur wenn alle Prüfungen erfolgreich sind, gibt der Knoten den vom Loadbalancer erwarteten Wert zurück und wird als „aktiv“ gekennzeichnet und darf den Datenverkehr verarbeiten.

Antwort2

Sie müssen Ihren Build-Prozess dokumentieren, bevor Sie ein Skript zum Testen der „Bereitschaft“ Ihrer neuen Systeme erstellen können. Das Prozessdokument enthält die Checkliste, die Sie überprüfen möchten, und einen konsistenten Build jedes Servers. Cfengine und Puppet sind großartige Möglichkeiten zum Automatisieren von Builds, aber um sie zu verwenden, benötigen Sie eine Liste aller zu konfigurierenden Elemente.

verwandte Informationen