1. Aufgetretene Probleme Bei der verteilten Projektbereitstellung ist es häufig erforderlich, dass die Anwendung (einschließlich der Datenbank) nach dem Neustart des Servers automatisch wiederhergestellt werden kann. Obwohl die Verwendung von 2. LösungVerwenden Sie zur Steuerung ein Shell-Skript. Die Idee ist wie folgt Ermitteln Sie den Datenbankport, um zu überprüfen, ob die Datenbank erfolgreich gestartet wurde. Nachdem die Datenbank erfolgreich gestartet wurde, ermitteln Sie die Ports des Konfigurationscenters und des Serviceregistrierungscenters, um zu überprüfen, ob sie erfolgreich gestartet wurden. Nachdem die Datenbank und das Konfigurationscenter gestartet wurden, starten Sie andere Microservice-Anwendungen. 3. PorterkennungDer zur Porterkennung verwendete Befehl ist Host: die IP-Adresse des Zielhosts Port: der Port, auf dem der Dienst lauscht Wenn der Dienst gestartet ist, gibt dieser Befehl 200 zurück, andernfalls gibt er nichts zurück. 4. Shell-SkriptFügen Sie den Code direkt ein. Das verwendete Konfigurationscenter ist nacos #!/bin/bash #chkconfig: 2345 80 90 #Beschreibung:autoStartMaintenanceService.sh # #Prämisse: #1.Docker muss automatisch starten können, wenn der Computer eingeschaltet wird.#2.Docker kann den Betriebs- und Wartungsdienst normal starten.#3.Dieses Skript muss auf dem Computer ausgeführt werden, auf dem sich der Mikrodienst befindet.# ##Zu ändernde Konfiguration-----Start##IP des Rechners, auf dem sich die Datenbank befindet DATABASE_HOST=192.169.1.52 ##Datenbank-Abhörport DATABASE_PORT=3306 ##IP der Maschine, auf der sich der Microservice befindet LOCAL_HOST=192.169.1.46 ##Microservice-Zugriffsport Maintenance_Port=8180 ##IP der Maschine, auf der sich NACOS befindet NACOS_HOST=192.169.1.82 ##NACOS-Abhörport NACOS_PORT=8848 ##Name des Microservice-Containers (Spalte NAMES) Maintenance_Container_Name="umc-wartung" ##Der vom Skript Log_Path=/home/test/log generierte Protokollpfad ##Konfiguration, die geändert werden muss-----Ende## ##Schleifenverzögerungszeit (s) LOOP_TIME=5 um_Zeit="" am_Datum="" getAtTime() { at_time="$(Datum +%J-%m-%d-%H:%M:%S) --- " at_date=$(Datum +%J-%m-%d) } autoStartWebService() { ##Wenn der Protokollpfad nicht existiert, erstellen Sie ihn, wenn [ ! -d "$Log_Path" ]; dann mkdir -p $Log_Pfad fi während wahr; tun ##Beurteilen Sie, ob die Datenbank gestartet ist req_message=$(nc -w 1 ${DATABASE_HOST} ${DATABASE_PORT} </dev/null && echo "200") wenn [ -n "$req_message" ]; dann getAtTime echo "$at_time Datenbank läuft" >>${Log_Path}/"$at_date"_autoStartMaintenanceService.log warteNacosStarting anders getAtTime echo "$at_time Datenbank läuft nicht, bitte warten Sie, bis die Datenbank gestartet wird" >>${Log_Path}/"$at_date"_autoStartMaintenanceService.log Schlaf $LOOP_TIME fi Erledigt } ##Beurteilen Sie, ob Nacos gestartet ist waitNacosStarting() { req_message=$(nc -w 1 ${NACOS_HOST} ${NACOS_PORT} </dev/null && echo "200") wenn test $((req_message)) -eq 200; dann getAtTime echo "$at_time Nacos läuft" >>${Log_Path}/"$at_date"_autoStartMaintenanceService.log startWartungsservice Schlaf $LOOP_TIME anders getAtTime echo "$at_time Nacos läuft nicht. Bitte warten Sie, bis Nacos startet." >>${Log_Path}/"$at_date"_autoStartMaintenanceService.log Schlaf $LOOP_TIME fi } ##Starten Sie den Microservice startMaintenanceService() { req_message=$(nc -w 1 ${LOCAL_HOST} ${Maintenance_Port} </dev/null && echo "200") wenn test $((req_message)) -eq 200; dann getAtTime echo "$at_time Wartungsdienst läuft" >>${Log_Path}/"$at_date"_autoStartMaintenanceService.log anders Container-ID = $ (Docker ps -a | grep $Wartungscontainername | grep -v grep | awk '{print $1}') getAtTime echo "$at_time Die Container-ID des Wartungsdienstes lautet ${container_id}" >>${Log_Path}/"$at_date"_autoStartMaintenanceService.log Docker starten ${Container-ID} fi } autoStartWebService 5. Shell-Ein- und AusgabeumleitungBeim Schreiben dieses Skripts wurde der Blogger auch mit der Shell-Ein- und Ausgabeumleitung vertrauter Im Allgemeinen öffnet jeder Unix/Linux-Befehl bei seiner Ausführung drei Dateien:
Befehl Beschreibung Wenn Sie stdout und stderr zusammenführen und in eine Datei umleiten möchten (d. h. sowohl korrekte Informationen als auch Fehlerinformationen in eine Datei ausgeben möchten), können Sie Folgendes schreiben: Befehl > Datei 2>&1 Oder Befehl >> Datei 2>&1 /dev/null-Datei /dev/null ist eine spezielle Datei. Alles, was dort hineingeschrieben wird, wird verworfen. Wenn Sie versuchen, daraus zu lesen, erhalten Sie nichts. Die Datei /dev/null ist jedoch sehr nützlich. Wenn Sie die Ausgabe eines Befehls dorthin umleiten, wird die Ausgabe deaktiviert. siehe Tutorial für Anfänger - Shell Dies ist das Ende dieses Artikels über Shell-Skripte, die die Startreihenfolge von Docker-Containern steuern. Weitere relevante Inhalte zu Shell-Skripten zur Docker-Steuerung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: So starten Sie mehrere MySQL-Datenbanken auf einem Linux-Host
>>: Details zum Lazy Loading im Vue-Routing
Datensortierung aufsteigend, absteigend 1. Sortie...
1. Überprüfen Sie sql_mode wählen Sie @@sql_mode ...
DOM-Konzepte DOM: Dokumentobjektmodell: Das Dokum...
Die Attribute des <TD>-Tags werden verwende...
1. Bereiten Sie die Umgebung vor (laden Sie nodej...
Normalerweise verwenden wir die Tags <ul><...
Gewünschte Wirkung: Nach dem Klick auf die Übermi...
Inhaltsverzeichnis Prototypenkette Wir können ein...
Docker-Installation curl -fsSL https://get.docker...
Ich werde die Installation von MySQL unter Window...
Vorwort Bei der Entwicklung eines Projekts stieß ...
Durch die Verwendung von Dockerfile können Benutz...
Ich wollte schon immer Kubernetes lernen, weil es...
Hier nehmen wir den Jenkins-Container als Beispie...
SQL-Anweisung DROP-TRIGGER WENN EXISTIERT sys_men...