Hi,
wir verwenden die 2.0.0p18 cee. Ich habe eine Frage zum Starten und Stoppen von Sites. Gibt es da einen bevorzugten Weg? Wir haben bisher immer über su - und dann omd stop/start eine Site verwaltet. Man kann das Ganze bei Rhel7/8 ja auch über systemctl steuern. Gibt es da Unterschiede / Vor-Nachteile? Woher weiß systemctl denn, welche Site er stoppen/starten soll, wenn es mehrere gibt?
Du musst nicht zwangsweise ein su in den Site-User machen. Du kannst auch als root “omd start|stop ” machen. Als root “omd status” listet Dir den Status aller Sites mit allen ihren Diensten auf.
Hi @mike1098 ,
danke schon mal für den Input. Wie macht ihr das dann, wenn der cmk-Server rebootet? Bei uns startet derzeit systemctl den omd.service automatisch. Habt ihr dann eigene Systemd-Services geschrieben und startet darüber automatisch?
Darüber hatte ich mir nie Gedanken gemacht.
Ich gehe davon aus dass der omd.service sich darum kümmert das ALLE sites ordentlich runter gefahren bzw. gestartet werde. Zumindest hatten wir bisher nie Schwierigkeiten damit.
Ich habe das gerade mal eben auf meiner Bastelumgebung getestet und nach einem systemctl stop omd sind alle sites gestoppt.
Nach einem systemctl start omd sind auch alle sites wieder oben.
Wenn ich jetzt da nix total mißverstanden habe dann sehe ich da keinen Grund sich selbst etwas zu Stricken.
Im Grunde hast du Recht. Was aber zumindest bei uns etwas unschön ist, wenn ich per omd stop/start eine Site steuere, weiß systemctl im Anschluss nicht mehr, ob die Site läuft oder nicht. Also wenn ich einmal omd stop bei einer Site mache, ist danach systemctl status nicht mehr nutzbar. Das hatte uns jetzt ein wenig verunsichert. Aber wir lassen das erst so mal wie es ist, d.h. der omd.service steuert beim Reboot das Stoppen und Starten aller Sites und wenn wir einzelne Sites verwalten wollen, nehmen wir weiterhin das omd-Kommando.
Das ist auch soweit richtig, nur mit dem Unterschied was @CFriedrich meint der systemctl weiß dann nicht mehr welche Prozesse zu dem Service gehören. Hier sollte man eigentlich besser sagen.
Wenn der OMD Service per systemctl gesteuert wird und man will, dass das System auch Bescheid weiß was zum Service gehört dann darf kein “omd stop” und “omd start” mehr verwendet werden.
Hier stellt sich dann nur noch das Problem, dass immer nur alle Sites eines Servers gestoppt und gestartet werden können mittels systemctl.
systemctl status omd - mit ordentlich gestartetem Service
Danke @andreas-doehler , ich war gerade auch dabei den Output zu erstellen
Nach einiger Zeit springt bei uns dann noch die Active Zeile von active auf inactive:
Wenn das laut systemd Spezifikation so sein muss, dann wäre das ja ein Bug den man melden sollte.
Mir ist das nie aufgefallen da ich immer omd benutze um Sites bzw. deren Services zu stoppen/starten.
Wenn dass komplett ins systemd abgebildet werden muss, hätte man dann ja pro site mindestens 10 einzelne Units. Zumindest wäre mir nicht bekannt das systwemctl eine option hat mit der man einzelne Prozesse einer Unti stoppen/starten kann. Ich weis aber auch nicht alles
Zunächst muss man wissen, dass alle Sites ein Attribut AUTOSTART haben, das in der Voreinstellung auf on steht. Man kann das beim Erstellen einer Site ändern:
# als root:
omd create --no-autostart testsite
oder auch nachträglich:
# prüfen als root:
omd config testsite show AUTOSTART
on
# setzen als root:
omd config testsite set AUTOSTART off
Wenn man nun als root nur omd start oder omd stop sagt, dann werden alle Sites gestartet, bei denen AUTOSTART=on ist.
Will man nur bestimmte Sites starten, sagt man entweder als root omd start testsite bzw. omd stop testsite oder führt die Befehl als Site-Nutzer aus: su - testsite; omd start; omd stop.
Die systemd-Unit omd.service hat im Grunde nur den Zweck, beim Booten als root omd start auszuführen, d.h. alle Sites mit AUTOSTART=on zu starten. Beim Herunterfahren wird entsprechend omd stop ausgeführt. Wenn man nun manuell alle Sites starten oder stoppen will, kann man das also über systemctl-Befehle machen, aber so ist es nicht gedacht. Vorgesehen ist, dass man die omd-Befehle verwendet.
Unabhängig vom AUTOSTART-Attribut werden Sites, die disabled sind, bei diesen „Gießkannen-Operationen“ ebenfalls ignoriert. Für solche Sites wird aber zusätzlich noch die sitespezifische Konfiguration des systemweiten Apache entfernt, so dass bei Aufruf der Webseite nicht Site not started sondern 404 Not Found erscheint.
Im Großen und Ganzen: Was @Dirk sagt. Tolle Zusammenfassung!
Es gibt andere Systeme, wie Gitlab, die auch so arbeiten. Dort gibt es verschiedene Komponenten, die innerhalb der Software verwaltet werden und von denen systemd nichts weiß.
Bei Checkmk kann man es so herunterbrechen: systemd weiß nichts vom Status der Sites. Wie @Dirk das völlig richtig erklärt hat, ist der omd.service nur ein Helferlein. Die wahre Kontrolle steckt im omd Befehl.
TL;DR: Nutzt für das Site-Management nur den omd Befehl! systemd spielt hier nicht mit.
kann es sein das im Zusammenhang mit Pacemaker man das gleiche Problem hat? Hab gestern beobachtet wie omd zwar immer korrekt ausgibt welche Instanz läuft und welche nicht, aber systemd bekommt es nicht mit und pacemaker dann auch nicht.
Das wäre ein plausible Erklärung oder?
Dachte bisher das liegt am OCF Agent, dass der fehlerhaft ist, aber ja dann vielleicht doch nicht. Wir nutzen aktuell die Appliance, haben aber die Ansage das wir auf CentOS umstellen müssen.
Kann schon sein. Kommt drauf an, wie Pacemaker und checkmk “gekoppelt” sind. Ich habe mal eine Seite betreut, bei der checkmk mit Pacemaker gesteuert wird. Die Site haben wir auf AUTOSTART=off gestellt, weil sie ja nicht automatisch starten soll, sondern duch Pacemaker. Die systemd-Unit omd.service haben wir ignoriert, d.h. auf enabled gelassen. Die Unit startet dann zwar beim Booten, aber macht nichts.
Für die Steuerung der Site habe ich einen Resource Agent geschrieben, der site-spezifisch mit den Befehlen omd start/stop/status arbeitet.
Ich weiß nicht, wie die Appliance das macht. Ob Pacemaker da systemctl status macht oder omd status. Ersteres wäre wenig aussagekräftig, weil es nur zeigt, ob der Befehl omd start erfolgreich war, was i.d.R. der Fall ist. Und bei letzterem muss man sich überlegen, was passieren soll, wenn die Site nur teilweise läuft (z.B. wenn der mknotifyd nicht läuft).
genau das habe ich ja auch vor. Pacemaker steuert omd, Autostart=off.
Die Appliance ist das was wir aktuell nutzen, daher brauchte ich mich mit dem Thema bisher nicht beschäftigen. Nun müssen wir “umbauen” auf eine eigene Lösung. Alle Überlegungen betreffen nicht die Aplliance!
Auf CentOS seh ich den Effekt das systemd glaubt die jeweiligen Dienste laufen nicht, tun sie aber doch. Und Pacemaker weiß bei einem Node standby/unstandby oder auch move teilweise auch nicht ob omd läuft oder eben nicht.
Da meinst du aber, dass kann wiederum nicht am systemd liegen sondern nur am Agenten? Der liest ja omd aus und sagt dem pacemaker was Sache ist, oder? Da spielt das systemd dann in dem Sinne keine Rolle? Dachte das ist vielleicht eine Erkläung hier im Thread für meine Baustelle.
Wie gesagt, ich habe die systemd-Unit komplett ignoriert. Sie wird bei uns auch nicht von Pacemaker überwacht oder gesteuert. Wir steuern die Site nur über einen eigenen Resource-Agent, der mit omd-Befehlen arbeitet. Damit kriegt man das schon geregelt. Ein Problem, das wir hatten: Wenn die Site etwas unter Wasser ist, kann der Befehl omd status etwas dauern und Pacemaker verliert die Geduld (sprich: schießt den Knoten weg). Da muss man dann die Timeouts entsprechend setzen. Aber das sprengt jetzt etwas den Rahmen dieses Threads.
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed. Contact an admin if you think this should be re-opened.