GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Status und Abhängigkeiten des Solaris-Dienstes?

Ich erstelle Dienstmanifeste für MySQL und einen WebLogic-Dienst, der vom MySQL-Dienst abhängt. Ich möchte, dass alle das Managementmodell „Warten“ verwenden (einen Prozess im Vordergrund ausführen). Ich habe einige Fragen zu diesem Setup.

Erstens, wie diktiere ich den Status eines Dienstes? Zum Beispiel, als ich MySQL-Skripte vor der Verwendung von Diensten erstellt habe, nachdem ich mysqld_safe gestartet habe Skript im Hintergrund, ich würde es pingen, bis ich eine Antwort bekam; Ich wollte sicherstellen, dass es bereit war, bevor ich fortfuhr. Jetzt mit dem Dienst geht es sofort auf „online“, obwohl ich nicht sicher bin, ob es tatsächlich bereit ist oder nicht.

Für den Fall, dass es keine gute Lösung für diese Frage gibt, habe ich das MySQL-DB-Ping in das WebLogic-Skript selbst eingefügt und nach einer bestimmten Anzahl von Versuchen mit dem Status 1 beendet. Der Dienst wird jedoch ständig neu gestartet. Wie erzwinge ich, dass der Dienst nach einem Nicht-Null-Exit in den Wartungsmodus wechselt?

Schließlich habe ich die Abhängigkeiten so weit zum Laufen gebracht, dass der WebLogic-Dienst nicht gestartet wird, ohne dass der MySQL-Dienst online ist, aber ich habe zwei Fragen dazu:

  1. Wie bringe ich den WebLogic-Dienst dazu, zu versuchen, den MySQL-Dienst zu starten, wenn er heruntergefahren ist?
  2. Wenn der WebLogic-Dienst bereits online ist, wie mache ich es dann so, dass er heruntergefahren wird, wenn der MySQL-Dienst jemals ausfällt?

Akzeptierte Antwort:

1 – Definieren Sie den MySQL-Dienst als Abhängigkeitsdienst, wenn Sie das XML-Manifest für den Weblogic-Dienst konfigurieren. Auf diese Weise wird Ihre Weblogik nicht gestartet, solange der mysql-Dienst nicht vollständig online gemeldet wird. Dies scheint logisch, da Ihre Weblogic-App von der Verfügbarkeit des MySQL-Dienstes abhängen würde, würde sie keine unnötigen Versuche zur Ausführung von db connect/sql-Anweisungen unternehmen, wenn der mysql-DB-Dienst ausgefallen ist.

2 – Da der Abhängigkeitsdienst offline/beeinträchtigt geht, geht Ihr Weblogic-Dienst auch offline und wird nicht ausgeführt. Daher besteht für den Weblogic-Dienst keine Chance, zu versuchen, den MySQL-Dienst wieder online zu schalten, solange er die Möglichkeit dazu hat, da er selbst in den Wartungsmodus wechselt. Darüber hinaus gibt es keine Garantie dafür, dass der Weblogic-Dienst danach gestartet wird, da der mysql-Dienst in den Wartungs-/Offline-/beeinträchtigten Modus wechselt, smf markiert den weblogic-Dienst ebenfalls als herabgesetzt/offline und kann daher nicht zum Starten des mysql-Dienstes verwendet werden. Dies kann ein klarer Fall von zyklischer Abhängigkeit sein, die gelöst werden sollte, indem ein drittes Modul/Cronjob/transienter Dienst verwendet wird, der sich um diese beiden Dienste kümmert.

Verwandte:Wie kann man überprüfen, auf welche Signale ein Prozess hört?

Jetzt, da klar ist, dass mysql als Hauptabhängigkeitsdienst fast die ganze Zeit online läuft, um die Verfügbarkeit und das saubere Funktionieren von Weblogic zu gewährleisten, würde ich vorschlagen, ein drittes Modul / Skript zu verwenden (wie es sogar ein Cronjob tun würde), das die Zustände überwacht des MySQL-Dienstes als bevorzugte Priorität und dann des Weblogic-Dienstes. Es sollte sich um die Handhabung/Ausführung der SMF-Healing-Befehle kümmern, falls einer der Dienste ausfällt.


Linux
  1. Installieren Sie Lighttpd mit PHP5 FastCGI und MySQL auf Fedora 21

  2. So installieren und konfigurieren Sie Dovecot

  3. So richten Sie LogAnalyzer mit Rsyslog und MySQL ein

  4. System- und Serverstatus

  5. Erstellen Sie eine neue Datenbank und verwenden Sie sie in MySQL/MariaDB

Handbuch für MySQL-Ereignisse und Ereignisplaner

Überwachen Sie MySQL-Verbindungen und Abfragen mit mytop

MySQL Suchen und Ersetzen

Ubuntu – Dienste starten, stoppen, neu starten

Wie man MySQL mit Percona und Keepalived multimastert

RHEL 7 – RHCSA-Hinweise:Starten, stoppen und überprüfen Sie den Status von Netzwerkdiensten.