MQTT und SQL Server auf gleicher Ubuntu Server VM?

1 Antwort

Zunächst: Ich habe keine Ahnung von MQTT und deinem Python Skript. Das hier ist das, was mir in den Sinn kommt.

Microsoft SQL Server in der gleichen VM

Das wird nicht funktionieren, da Winzigweich SQL Server ja ein eigenes OS ist. Du kannst aber bspw. MariaDB (~MySQL) installieren. Das funktioniert sicherlich auch.

Wie sorge ich dafür, dass dieses in Dauerschleife für immer ausgeführt wird und parallel zu den beiden Servern vom Betriebssystem ausgeführt wird?

Cronjob oder Systemd-Unit. Da ich das Python-Skript nicht kenne, kann ich dir nicht sagen, welches von beiden sinnvoller ist.

Bei Cronjob kann man alle x Minuten bspw. das Skript ausführen lassen.

Systemd-Unit lohnt sich vermutlich eher, wenn dein Skript eh eine Dauerschleife ist (bspw. mit "while true" und dann eine Wartezeit irgendwo eingeplant, sonst dreht der PC hohl), und du nur sicher gehen willst, dass das Skript auch dauerhaft läuft = bei Systemstart automatisch gestartet wird und bei Beendigung neu gestartet wird etc.

Klar kann ich da ne Dauerschleife reinprogrammieren, aber wie bediene ich dann parallel den Rest?

Definieren "Rest". Wenn du das Skript im Hintergrund startest, dann kannst du alles andere ja parallel machen... Verstehe die Frage nicht.

Wie kann ich mir MQTT Server Konsole, SQL-Server Konsole und Ausgaben des Python Skript gleichzeitig anzeigen lassen?,

Das kommt darauf an, wie du das alles gestalten willst. Zumindest unter Linux können alle Terminals mehrfach geöffnet werden und teilweise unterstützen sie Tabs und/oder Splitscreen. Ansonsten könnte sich screen lohnen.

Ich möchte aber bezweifeln, dass es sinnvoll ist, die Ausgaben dauerhaft offen zu haben. Lasse Meldungen des Python Skripts besser in ein Log schreiben. MariaDB legt eigene Logs an, wenn ich mich nicht irre, und ich gehe davon aus, dass MQTT Server das auch macht. Somit kann man dann nachschauen, wenn etwas nicht in Ordnung ist, oder man es kontrollieren will. Logs sind toll!

SpassimLeben 
Fragesteller
 10.08.2022, 15:45

Ersteinmal danke für die ausführliche Antwort, du hast mir bereits weiter geholfen!,

Zu deinen Punkten:

Das wird nicht funktionieren, da Winzigweich SQL Server ja ein eigenes OS ist. Du kannst aber bspw. MariaDB (~MySQL) installieren.

Zunächst gehe ich davon aus, dass deine Autokorrektur aus "Microsoft" "Winzigweich" gemacht hat und hier muss ich dir widersprechen. Microsoft SQL Server ist kein OS (Operating System) sondern ein normales Programm welches man installieren kann. Sowohl unter Windows, als auch unter Linux. Es ist einfach ein Server, welcher ebenso wie der MQTT Server installiert werden kann. Unabhängig davon ob das Produkt jetzt von Microsoft ist oder nicht, möchte ich einen SQL Server.. also eine Datenbank, welche über das Internet abgefragt, bzw. bearbeitet werden kann. Mir ist an sich egal, welche Firma dahinter steht.

Meine Frage zielte eher darauf hinaus, wie ich von außen, wenn ich mit einem der beiden Server kommuniziere klar mache, mit welchem Server ich denn nun sprechen möchte. Da dann ja beide Server unter der gleichen IP laufen.

Definieren "Rest". Wenn du das Skript im Hintergrund startest, dann kannst du alles andere ja parallel machen... Verstehe die Frage nicht.

Damit meine ich, wenn ich das Python Skript starte, befinde ich mich dafür in einer Python Umgebung. Bevor ich dann wieder etwas in der Datenbank machen kann, muss ich die Python Umgebung per Befehl im Terminal erst mal verlassen. Dann weiß ich aber nicht, inwieweit das Skript im Hintergrund weiter läuft. Aber das sollte ja jetzt geklärt sein, dank deinem Hinweis mit den mehreren Terminals, die ich parallel aufmachen und bedienen kann. Das behebt schon mal eine Menge meiner Probleme.

Logs sind toll

Stimme ich zu, ich möchte nur für Testzwecken gerne alle Fenster parallel offen haben und in Echtzeit sehen können, wie eine Nachricht meinen MQTT Broker erreicht, diese vom Python Skript abgeholt, und in die Datenbank geschrieben wird. Aber dies sollte ebenfalls durch das nutzen mehrerer Terminals mit Splitscreen möglich sein.

0
julihan41  10.08.2022, 15:56
@SpassimLeben
ein normales Programm welches man installieren kann. Sowohl unter Windows, als auch unter Linux.

Das war mir neu. Hatte bisher nur von virtuellen Instanzen davon bei Azure gelesen. Aber mit Microsoft-Produkten beschäftige ich mich nur, wenn es unbedingt sein muss, denn Qualität sieht anders aus.

Meine Frage zielte eher darauf hinaus, wie ich von außen, wenn ich mit einem der beiden Server kommuniziere klar mache, mit welchem Server ich denn nun sprechen möchte. Da dann ja beide Server unter der gleichen IP laufen.

Normalerweise laufen die auf verschiedenen Ports, sodass du darüber einen Unterschied bei den Diensten machst.

Damit meine ich, wenn ich das Python Skript starte, befinde ich mich dafür in einer Python Umgebung. Bevor ich dann wieder etwas in der Datenbank machen kann, muss ich die Python Umgebung per Befehl im Terminal erst mal verlassen.

Du kannst das Skript einfach als Prozess im Hintergrund starten. In deinem Fall würde ich ein systemd-Unit empfehlen. Dadurch startet - bei korrekter Konfiguration - der Prozess auch neu, sollte er beendet werden, und systemd kümmert sich um das logging. Siehe meinen Link dazu von der Antwort.

Aber das sollte ja jetzt geklärt sein, dank deinem Hinweis mit den mehreren Terminals, die ich parallel aufmachen und bedienen kann. Das behebt schon mal eine Menge meiner Probleme.

Ich würde es wirklich über sowas wie systemd machen. Sonst musst du ja das Ding dauernd offen haben.

Stimme ich zu, ich möchte nur für Testzwecken gerne alle Fenster parallel offen haben und in Echtzeit sehen können, wie eine Nachricht meinen MQTT Broker erreicht, diese vom Python Skript abgeholt, und in die Datenbank geschrieben wird. Aber dies sollte ebenfalls durch das nutzen mehrerer Terminals mit Splitscreen möglich sein.

Jup, dafür ist das sinnvoll. Das ist nur fürs Testen und Debuggen sinnvoll, aber nicht für den laufenden Betrieb.

0
SpassimLeben 
Fragesteller
 17.08.2022, 14:35

Nochmal eine Nachfrage zum Thema screen. Innerhalb von Screen gibt es Befehle die immer mit Ctrl+a beginnen. U.a. Ein Befehl Ctrl+a A, also ein großes A. Wie soll man so einen Befehl denn bitte eintippen? Ctrl+a und danach Shift+a funktioniert nicht, ebenso wenig wie Ctrl+a+Shift. Befehle wie Ctrl+a ? bekomme ich auch nicht hin, Ctrl+a S auch nicht. Ctrl+a Shift+2 funktioniert aber komischerweise und listet mir alle geöffneten Windows auf..

0
julihan41  17.08.2022, 14:46
@SpassimLeben

Das weiß ich nicht. Bin kein Experte für screen und benutze das Werkzeug auch nicht. Ich habe das Terminal von KDE namens Konsole und das kann Terminal-Multiplexing von alleine...

0