Terug naar blog

Een Linux-service configureren om automatisch te starten na een herstart of systeemcrash: Deel 1 (Praktische voorbeelden)

Een Linux-service configureren om automatisch te starten na een herstart of systeemcrash: Deel 1 (Praktische voorbeelden)

Inleiding

In de informatica verlopen dingen niet altijd zoals gepland. Vaak zorgen onverwachte systeemcrashes ervoor dat systeembeheerders reboots moeten initiëren en individuele services moeten herstarten. Het uitzoeken en herstarten van elke service die uw applicatie nodig heeft om te draaien na een systeemcrash of reboot kan tijdrovend zijn. In dit eerste deel van de tweedelige handleiding laten we u aan de hand van praktische voorbeelden zien hoe u services configureert om automatisch te starten na een systeemcrash of serverreboot. Het tweede deel zal theoretische informatie behandelen over wat we in deel één hebben bereikt.

We zullen de MySQL databaseservice gebruiken voor praktische voorbeelden. Dezelfde principes zijn echter van toepassing op andere processen die deel uitmaken van een complete server, zoals Nginx, Apache, Redis, of andere applicaties. U kunt onze handleidingen bekijken over het installeren van MySQL, Nginx, en Apache.

In Linux distributies zijn er drie belangrijke initialisatiesystemen (init-systemen), afhankelijk van de distributie die u gebruikt. Sommige distributies kunnen worden geleverd met twee of meer init-systemen, zoals hieronder beschreven:

  • System V – een ouder init-systeem dat te vinden is in oudere distributies zoals:
    • Ubuntu 9.04 en ouder
    • CentOS 5 en ouder
    • Debian 6 en ouder
  • Upstart – gebruikt in eerdere distributies zoals:
    • CentOS 6
    • Ubuntu 9.10 tot Ubuntu 14.10 en Ubuntu 14.04
  • Systemd – gebruikt in de meest recente distributies zoals:
    • CentOS 7
    • Debian 7 en 8.
    • Ubuntu 15.04 en nieuwer

Achtergrond

Het is gebruikelijk dat besturingssystemen, en met name Linux- en Unix-systemen processen en services op de achtergrond hebben draaien. Dergelijke services kunnen zijn meegeleverd met de software van het besturingssysteem. Sommige zijn mogelijk meegeleverd met de gebruikersapplicaties die u installeert.

Besturingssysteemservices omvatten:

  • sshd – Dit is de daemon die externe verbindingen toestaat.
  • cupsd – Dit is de daemon die het afdrukken regelt.

Geïnstalleerde applicatieservices omvatten:

  • httpd/apache2 – Een service die wordt geleverd met de Apache2-webserver.
  • nginx – Een service die wordt geleverd met de Nginx-webserver.

Om ervoor te zorgen dat onze webapplicaties, databases, mailservers, enz. toegankelijk zijn, moeten dergelijke services continu draaien. Als u een systeembeheerder of een nieuwsgierige app-ontwikkelaar bent, wilt u ervoor zorgen dat dergelijke services continu draaien en, in het ongelukkige geval van een systeemcrash, automatisch starten nadat het systeem opnieuw is opgestart. En dat is precies wat we zullen leren in deze praktische handleiding.

Hoewel het instellen van waarschuwingen en het continu monitoren van uw Linux-distributie cruciaal is, kunnen sommige Linux-services zichzelf herstellen als ze goed zijn geconfigureerd, dankzij de init-systemen die services beheren.

In Linux-distributies zijn er modusbewerkingen die systeeminitialisatie implementeren, genaamd runlevels. Om een service automatisch te laten starten, moet deze aan een runlevel worden toegevoegd. Elk Linux- en Unix-achtig systeem heeft vier gemeenschappelijke runlevels, zoals hieronder vermeld:

  • 0 – Runlevel 0 geeft aan dat het systeem wordt uitgeschakeld.
  • 1 – Runlevel 1 geeft de modus voor één gebruiker (reddingsmodus) aan.
  • 2, 3, 4 – Deze runlevels geven statussen aan waarin het systeem is opgestart in de tekstmodus voor meerdere gebruikers met netwerkmogelijkheden.
  • 5 – Runlevel 5 geeft de grafische modus voor meerdere gebruikers met netwerkmogelijkheden aan.
  • 6 – Runlevel 6 geeft aan dat het systeem opnieuw wordt opgestart.

In deze handleiding leert u hoe u een Linux-service configureert om automatisch te starten wanneer het systeem opnieuw opstart, met behulp van de drie verschillende init-modi die eerder zijn uitgelegd: System V, Upstart en Systemd.

Vereisten

Deze praktische handleiding gaat ervan uit dat u een Linux VPS heeft die u kunt gebruiken om mee te doen. U kunt profiteren van de gratis proefperiode bij Cloudsigma en een paar servers opstarten om de commando's uit te proberen. U kunt meedoen met onze stapsgewijze handleiding over het instellen van uw Ubuntu-servers.

De servers die u in deze handleiding maakt, zijn puur bedoeld om de praktische oefeningen te volgen en u moet de commando's niet uitproberen op een productieserver, aangezien er veel services zullen worden verstoord.

Enkele van de distributies die u nodig heeft:

  • Ubuntu 9.04 en ouder, of Debian 6 x64 (zal worden gebruikt om het System V init-systeem te demonstreren)
  • Ubuntu 14.04 x64 (zal worden gebruikt om Upstart te demonstreren)
  • CentOS 7 x64 (zal worden gebruikt om systemd te demonstreren).

Zorg ervoor dat u een niet-rootgebruiker met sudo-privileges hebt ingesteld. U kunt een kijkje nemen in onze handleiding over het configureren van het sudoers-bestand hier.

System V gebruiken

Dit is het oudste init-systeem dat werd gebruikt in eerdere Linux-distributies zoals:

  • Debian 6 en ouder
  • CentOS 5 en ouder
  • Ubuntu 9.04 en ouder

De meeste installeerbare servertoepassingen zoals MySQL and Nginx worden standaard geleverd met init-scripts die zijn opgeslagen in de /etc/init.d map. Deze scripts zorgen ervoor dat ze na een herstart kunnen starten. Ze zijn echter mogelijk niet geconfigureerd om automatisch te starten na een systeemcrash.

Checklist voor automatisch starten voor System V

De eerste stap is het controleren van de beschikbaarheid van een functioneel Bash init-script in de map /etc/init.d/service. Om de service in te schakelen, gebruikt u in Debian of Ubuntu-distributies het commando update-rc.d, in een CentOS systeem gebruikt u chkconfig. Vervang door uw werkelijke servicenaam:

Het bovenstaande commando maakt een symlink in de map /etc/rc2.d die eruitziet als de onderstaande uitvoer. Maak deze niet zelf aan, aangezien deze automatisch wordt gegenereerd:

Voeg onderaan het bestand /etc/inittab een respawn-regel toe zoals getoond in het onderstaande generieke voorbeeld. Vergeet niet deze te vervangen door het werkelijke pad naar het opstartscript van uw toepassing:

Voer de volgende commando's in om de service te stoppen en te starten:

Start vervolgens de server opnieuw op:

Hoe test u de wijzigingen?

Controleer na het herstarten van de server of de service actief is door naar het procesnummer te zoeken met het commando:

Beëindig het proces met het commando:

Controleer na vijf minuten of de service actief is en draait.

Praktische System V-configuratie met een echte service

In de volgende stappen proberen we een echte servertoepassing zoals MySQL uit. U moet toegang hebben tot een Debian 6 virtuele machine. Maak verbinding met een account dat sudo-privileges heeft via SSH of putty als u een Windows-desktop gebruikt.

Stap 1: MySQL installeren

Voer het volgende commando in om MySQL te installeren:

Wanneer de installatie begint, wordt u om een root-wachtwoord gevraagd. Voer vervolgens een wachtwoord naar keuze in en bevestig dit. Wacht tot de installatie is voltooid en voer vervolgens het volgende commando in om MySQL te gaan beveiligen:

U wordt gevraagd om het root-wachtwoord dat u eerder hebt ingevoerd. Druk op N om dit te behouden. Druk vervolgens op Y om de volgende prompts te accepteren voor het verwijderen van anonieme gebruikers, het uitschakelen van externe root-inlog en het verwijderen van de testdatabase. Accepteer ten slotte om de tabel met privileges opnieuw te laden, zodat de wijzigingen automatisch worden doorgevoerd.

Hiermee is de MySQL-installatie voltooid. U kunt controleren of de service actief is door het volgende commando in te voeren:

Stap 2: MySQL configureren om automatisch te starten na een herstart

MySQL is standaard geconfigureerd om te starten na een systeemherstart. U vindt de symlink naar het MySQL-initialisatiescript in de /etc/rc2.d map. Deze symlinks worden niet handmatig aangemaakt. U kunt het commando update-rc.d gebruiken om services in en uit te schakelen.

Voer het volgende commando in om de inhoud van de map weer te geven:

Controleer of u de symlink naar het MySQL init-script ziet:

De S is belangrijk, want zolang u een S script in de standaard runlevel-map voor de service, zal het init-systeem de service starten wanneer de server opstart. Om te controleren of MySQL automatisch start na een herstart, voert u de volgende opdracht uit om het systeem opnieuw op te starten:

Uw ssh-verbinding wordt verbroken tijdens een herstart. Wacht een minuut of twee en maak opnieuw verbinding. Voer de volgende opdracht uit om te controleren of de service actief is:

De uitvoer zal aangeven dat de service actief is. Dit betekent dat deze automatisch is gestart na de herstart. Voor services die niet zijn geconfigureerd om automatisch te starten, moet u dit zelf configureren.

We kunnen de MySQL-service uitschakelen en het systeem opnieuw opstarten om te testen of deze automatisch start. In Debian- en Ubuntu-systemen kunt u de update-rc.d-opdracht gebruiken om services toe te voegen aan of te verwijderen uit het init-systeem. Voer de volgende opdracht uit om de MySQL-service uit te schakelen:

Start het systeem opnieuw op en maak opnieuw verbinding via ssh. Probeer verbinding te maken met MySQL met de volgende opdracht:

U krijgt een MySQL-foutmelding zoals:

Voer vervolgens de volgende opdracht uit om de service opnieuw in te schakelen:

Als u een CentOS-distributie gebruikt, is de opdracht:

Aangezien MySQL aanvankelijk niet startte, moet u het starten. Voer de volgende opdracht uit:

Stap 3: Een service (MySQL) configureren om automatisch te starten na een systeemcrash

System V start een proces niet automatisch na een crash. We kunnen een systeemcrash simuleren door de MySQL-proces-ID op te zoeken en deze te beëindigen. Voer de volgende opdracht uit om de MySQL-proces-ID te vinden:

Zoek in de uitvoer naar de MySQL-processen. De belangrijkste processen die MySQL uitvoeren zijn mysqld_safe en mysqld. Noteer hun proces-ID's (dit zijn getallen) en gebruik de volgende opdrachten om ze te beëindigen:

Controleer de status van de MySQL-service met de opdracht:

De uitvoer zal aangeven dat MySQL is gestopt. We kunnen het handmatig opnieuw starten met de opdracht service start. We willen echter een automatisch proces. Om dit automatische gedrag te bereiken, moeten we het bestand /etc/inittab bewerken. Dit is het eerste bestand dat System V init leest bij het opstarten. Het bestand /etc/inittab bevat instructies over hoe een proces zich moet gedragen als het crasht. Als het correct is geconfigureerd, start het de service opnieuw op wanneer er een crash optreedt. In ons geval willen we ervoor zorgen dat MySQL een van die services is.

Het bestand /etc/inittab is uiterst cruciaal voor een Linux-distributie. Het bepaalt of uw systeem wel of niet opnieuw opstart. Als u een fout maakt in de opdrachten, start het systeem mogelijk niet op wanneer u opnieuw opstart. Zoals we al hebben aangegeven, hopen we dat u deze opdrachten alleen uitprobeert in een testserveromgeving en niet in een productieomgeving.

Maak eerst een kopie van het bestand voordat u begint met bewerken:

Open vervolgens het bestand met nano:

Scrol naar het einde van het bestand en voeg het volgende codefragment toe:

De bovenstaande opdracht start het mysql_safe-proces opnieuw op na een systeemcrash. Het heeft vier velden gescheiden door dubbele punten, zoals hieronder uitgelegd:

  • ms: Specificeert een ID voor het proces.
  • 2345: Specificeert de runlevels waarop de opdracht van toepassing is. In dit geval: runlevels 2, 3, 4, 5.
  • respawn: Specificeert de actie. In dit geval herstarten of respawnen we het proces.
  • /bin/sh /usr/bin/mysqld_safe: Het laatste deel definieert het proces – de opdracht die wordt uitgevoerd om het proces opnieuw te starten.

Druk nu op Ctrl + O en Enter om het bestand op te slaan. Druk vervolgens op Ctrl + X om de editor te sluiten. Voer de volgende opdracht in om de service te starten:

Start de server opnieuw op en voer vervolgens de eerder uitgelegde opdrachten uit om het procesnummer te vinden. Beëindig vervolgens de processen, beginnend met de opdracht ps -ef | grep mysql. Wacht een paar minuten en voer de volgende opdracht in om de status van MySQL te controleren:

De uitvoer moet aangeven dat de MySQL-service actief is, wat betekent dat deze na een crash opnieuw kon opstarten. U kunt hetzelfde proces volgen voor andere services op uw server.

Services automatisch starten met Upstart

Upstart is een ander init-systeem dat aanvankelijk werd geïntroduceerd in Ubuntu 6 en later de standaard werd in Ubuntu 9.10. RHEL 6 en de derivaten daarvan, en Google's Chrome OS gebruiken ook het Upstart-init-systeem. Voor de stappen in deze sectie moet u een server hebben die een van de volgende distributies uitvoert:

  • Ubuntu 9.10 tot Ubuntu 14.10, en the LTS-versie van Ubuntu, d.w.z. Ubuntu 14.04.
  • CentOS 6

Laten we eens kijken hoe u de Upstart-bestanden kunt configureren om uw serverservices automatisch te starten in het geval van herstarts of systeemcrashes. Upstart gebruikt configuratiebestanden die zijn opgeslagen onder de map /etc/init om services in een Linux-distributie te beheren. De meest recente versies van serverapplicaties zoals MySQL en Nginx installeren hun eigen init-scripts in de map /etc/init. Hierdoor starten ze na een herstart en na een crash van het systeem zonder dat u iets hoeft te doen.

Checklist voor automatisch starten voor Upstart

Hier zijn enkele referentieconfiguraties die u kunt controleren om er zeker van te zijn dat uw service is geconfigureerd om automatisch te starten.

  • Zorg ervoor dat de service een init-script heeft in de map /etc/init/service_name.conf service_name waarbij service_name de werkelijke naam van uw specifieke service is. U moet controleren op de volgende twee regels in het bestand /etc/init/service_name.conf-bestand:
    • Een regel die zoiets bevat als start on runlevel [2345]. Dit geeft aan dat de service wordt gestart bij een herstart van het systeem.
    • Een regel die zoiets bevat als respawn. Dit geeft aan dat de service opnieuw wordt gestart (respawn) na een systeemcrash.
  • Zorg ervoor dat er geen service-override-bestand in de map staat: /etc/init/service_name.override. Tenzij u of een andere systeembeheerder deze eerder heeft gemaakt.
  • Voer de volgende opdrachten in om de service te stoppen en te starten:
  • Start het systeem opnieuw op en maak na een paar minuten opnieuw verbinding. Voer nu enkele tests uit om te zien of alles werkt
  • Controleer na de herstart of de service actief is. Voer de volgende opdracht in om naar het procesnummer te zoeken, vervang service_name door de werkelijke naam van de service die u test:
  • Zodra u het procesnummer hebt, voert u de volgende opdracht in om het proces te beëindigen:
  • Wacht een paar seconden en controleer opnieuw of het proces actief is.

Praktische Upstart-configuratie met een echte service

In de volgende sectie zullen we proberen te demonstreren hoe u Upstart kunt gebruiken met een daadwerkelijke service. We voeren de tests uit op een Ubuntu 14.04 virtuele machine-server met MySQL als service. Maak verbinding met uw Ubuntu 14.04-testserver via ssh of putty als u Windows gebruikt. Zoals gebruikelijk dient u een niet-rootgebruiker met sudo-privileges te gebruiken. Zodra u bent ingelogd, kunnen we met de stappen beginnen:

Step 1: MySQL installeren

Vergeet niet om altijd uw pakketten bij te werken voordat u nieuwe software installeert:

Voer nu de volgende opdracht in om de MySQL-server te installeren:

Maak een root-wachtwoord aan wanneer daarom wordt gevraagd. Wacht tot de installatie is voltooid en voer de volgende opdracht uit om uw MySQL-installatie te beveiligen:

Volg de aanwijzingen, net zoals u in het eerdere gedeelte hebt gedaan. Wis vervolgens de privileges om de wijzigingen onmiddellijk van kracht te laten worden.

Stap 2: Een service (MySQL) configureren om automatisch te starten na een herstart van het systeem

MySQL is ingesteld om automatisch te starten na een herstart. We bekijken alleen de configuratiebestanden om te leren hoe we onze aangepaste toepassingen kunnen configureren om ook automatisch te starten na een herstart. De MySQL-service is automatisch gestart na de installatie. Laten we echter bevestigen dat deze actief is door de volgende opdracht in te voeren:

U zou uitvoer moeten zien die aangeeft dat de MySQL-service actief is, zoiets als:

Start uw server opnieuw op en log opnieuw in. Voer nogmaals de volgende opdracht in om te testen of deze actief is:

De uitvoer zal aangeven dat MySQL actief is, wat betekent dat het automatisch is gestart na de herstart. In dit geval hoeft er niets te worden gewijzigd. Dit gedrag is echter mogelijk niet hetzelfde voor andere toepassingen. U vraagt zich misschien af hoe het Upstart-init-systeem weet dat het MySQL automatisch moet starten na een herstart. MySQL installeert zijn Upstart-opstartconfiguratiebestand op de locatie /etc/init/mysql.conf. Upstart-bestanden zijn geen shellscripts, maar tekstbestanden met scriptblokken voor pre-start- en post-start-gebeurtenissen. De blokken instrueren het Upstart-systeem over wat er moet worden uitgevoerd wanneer het MySQLd-proces start of wanneer het al is gestart.

Voer de volgende opdracht in om het bestand te openen in de editor met nano:

De uitvoer van het bestand kan er als volgt uitzien:

Zoals te zien is, instrueert het startblok MySQL om te starten op runlevels 2,3,4,5 en niet op 0,1,6. Als u een Upstart-configuratie voor uw toepassing definieert, definieert u deze in deze sectie. Het respawn-blok instrueert Upstart wat te doen na een crash. We zullen dat in de volgende sectie bespreken, dus houd het bestand geopend in de nano-editor.

Stap 3: Een service (MySQL) configureren om automatisch te starten na een crash

De respawn-richtlijn in het /etc/init/mysql.conf-bestand instrueert Upstart om de MySQL-service opnieuw te starten na een crash.

De respawn limit-richtlijn instrueert Upstart hoe vaak het moet proberen de gecrashte MySQL-service opnieuw te starten binnen een in seconden gespecificeerd interval. Het eerste argument, (2), geeft het aantal pogingen aan. Het tweede argument, (5), geeft het interval in seconden aan. Als Upstart er na een crash niet in slaagt de MySQL-service binnen de drempelwaarde opnieuw te starten, blijft deze gestopt. Dit gedrag is ontworpen om de stabiliteit van het systeem te beschermen in het geval dat het continu crashende services blijft proberen te herstarten. U kunt de editor nu sluiten zonder wijzigingen aan te brengen.

Laten we testen of MySQL automatisch weer opstart na een crash. Voer de volgende opdracht in om de status te controleren en het procesnummer van de MySQL-service op te vragen:

De uitvoer zou er ongeveer zo uit moeten zien. Noteer het procesnummer, want dat hebben we later nodig:

Voer vervolgens de volgende opdracht in om het proces te beëindigen. Dit simuleert een crash. Vervang dit door het procesnummer dat u in de vorige opdracht hebt verkregen:

Controleer nogmaals de status van MySQL door de volgende opdracht in te voeren:

Het zou weer actief moeten zijn, maar waarschijnlijk met een ander procesnummer:

Dit gebeurt vanwege de respawn-richtlijn in het /etc/init/mysql.conf bestand. Het zorgt ervoor dat in het geval van een systeemstoring MySQL automatisch zal starten. Hierdoor zal uw applicatie die afhankelijk is van een MySQL-database naar verwachting blijven functioneren.

Services automatisch starten met Systemd

Systemd is een initialisatiesysteem dat te vinden is in de meeste recente Linux-distributies. Het is waarschijnlijk wat u zult gebruiken wanneer u een nieuwe VPS opstart. Het werd voor het eerst geïntroduceerd in Fedora. Het wordt geleverd met RHEL 7 en zijn derivaten zoals CentOS 7. Vanaf Ubuntu 15.04 vindt u Systemd standaard. Systemd is achterwaarts compatibel met de System V-initialisatiescripts en -commando's. Daarom zou elke System V-service onder Systemd moeten werken. De meeste commando's die in System V and Upstart worden gebruikt, zijn aangepast om met Systemd te werken.

Met Systemd starten de meeste serverapplicaties zoals MySQL en Nginx automatisch na een herstart of afsluiting, zonder dat u iets hoeft te wijzigen. Voor uw aangepaste apps moet u uw eigen init-scripts maken om services automatisch opnieuw te starten.

Voor meer diepgaande informatie over Systemd, bekijk onze handleiding over het beheren van Systemd-services en -units met Systemctl.

Checklist voor automatisch starten met Systemd

Hier zijn enkele referentieconfiguraties om te controleren of uw service is geconfigureerd om automatisch te starten met Systemd.

  • De service moet een functioneel Systemd-init-script hebben dat zich bevindt op /etc/systemd/system/multi-user.target.wants/serviceName.service. ServiceName is de werkelijke naam van de service die u configureert.
  • Het commando om de service in te schakelen is:
  • Het commando maakt een symlink aan in de map /etc/systemd/system/multi-user.target.wants/ map die er vergelijkbaar uit kan zien als:
  • Met die symlink op zijn plaats heeft u de automatische herstart na het opstarten ingeschakeld.
  • Om de wijzigingen te activeren, herlaadt u de systeemdaemon en herlaadt u vervolgens de service met de volgende commando's:
  • Om te testen of uw configuraties de service na een herstart zullen starten, kunt u het systeem herstarten:
  • Wanneer het systeem opnieuw opstart, zoekt u naar het procesnummer met het commando:
  • Noteer het procesnummer en beëindig het met het commando:
  • Wacht een paar seconden en zoek opnieuw naar de service om te controleren of deze weer actief is.

Praktische Systemd-configuratie met een echte service

In deze sectie zullen we proberen de MySQL-service te configureren op een Ubuntu 20.04 virtuele machine.

Stap 1: Maak verbinding met uw Virtual Private Server (Ubuntu 20.04 of CentOS 7 x64)

Log in op uw VPS of maak er een aan via het Cloudsigma-paneel en maak verbinding via ssh of putty als u Windows gebruikt. We gebruiken een Ubuntu 20.04-server voor dit deel van de handleiding. Dezelfde commando's kunnen worden toegepast op CentOS 7. Zorg ervoor dat u een niet-rootgebruiker met sudo-privileges gebruikt.

Stap 2: Installeer MySQL (de service die we configureren)

Update eerst uw systeem:

Vervolgens kunt u de MySQL-server installeren met het commando:

Voer vervolgens het volgende commando uit om MySQL te gaan beveiligen:

Het script vraagt u of u de VALIDATE PASSWORD-component wilt instellen of op een willekeurige letter wilt drukken om door te gaan zonder de component in te schakelen. Volg deze link om meer te leren over de MySQL validate password-component.

Druk op 1 om het in te schakelen en kies vervolgens het gemiddelde niveau door op 1 te drukken. Voer een sterk wachtwoord in: een combinatie van hoofdletters, kleine letters, speciale tekens en cijfers. Bevestig het wachtwoord en bevestig de prompt waarin wordt gevraagd of u het ingevoerde wachtwoord wilt gebruiken als het root-wachtwoord. Druk voor de overige prompts op y om ze te accepteren, net zoals u in de vorige secties hebt gedaan. Wis ten slotte de privileges voor MySQL om de wijzigingen opnieuw te laden.

Stap 3: MySQL configureren om automatisch te starten na een herstart

MySQL is geconfigureerd om te starten na een herstart, dus u hoeft niets te wijzigen. We kunnen echter de MySQL-configuratiebestanden gebruiken om te leren hoe we onze aangepaste bestanden moeten configureren.

Controleer eerst of de MySQL-service is geconfigureerd om te starten tijdens het opstarten. Voer de volgende opdracht in (let op dat in Centos de MySQL-service mysqld wordt genoemd):

Hier is de uitvoer:

CS screenshot

Start vervolgens de VPS opnieuw op door de volgende opdracht in te voeren:

Maak opnieuw verbinding via ssh en voer de volgende opdracht in om de status van de MySQL-service te controleren:

U zou uitvoer moeten krijgen die vergelijkbaar is met die in de onderstaande schermafbeelding:

System Crash 3

Voer de volgende opdracht in om de MySQL-service uit te schakelen:

De uitvoer geeft aan dat symlinks naar de MySQL-service zijn verwijderd uit Systemd:

screenshot it 4

U kunt testen of de service is ingeschakeld met het Systemd-init-systeem door de volgende opdracht in te voeren:

De uitvoer zal laten zien dat deze is uitgeschakeld. Als u uw systeem opnieuw opstart, start MySQL niet op tijdens het opstarten:

disabled screenshot

Schakel de service in door de volgende opdracht in te voeren:

De uitvoer toont de symlink naar de MySQL-service die is gemaakt in Systemd init:

screenshot 5

Wanneer u opnieuw opstart, start de MySQL-service automatisch.

Stap 4: MySQL configureren om automatisch te starten na een crash

MySQL is geconfigureerd om automatisch opnieuw te starten na een crash. Laten we eens kijken hoe deze configuratie is geïmplementeerd in Systemd. Systemd gebruikt unit-bestanden voor configuratie. Voer de volgende opdracht in om het configuratiebestand mysql.service te openen in nano:

De uitvoer ziet er als volgt uit:

System Crash 2

Onze zorg is de Restart-richtlijn. Zoals gedefinieerd, zal MySQL opnieuw opstarten als er een fout optreedt. De Restart-richtlijn definieert wat er moet gebeuren in Systemd, net als de Respawn-richtlijn in Upstart.

Niet alle services hebben deze richtlijn. Om een service na een crash automatisch opnieuw te laten starten, kunt u altijd de Restart-richtlijn toevoegen onder het [Service]-blok van het configuratie-unitbestand van de service. Als de [Service]-header niet bestaat, voeg deze dan toe. Sluit nu de editor af door op Ctrl + X te drukken.

Om een crash te simuleren, zoekt u de MySQL-proces-ID door de volgende opdracht in te voeren:

De statuscontrole-opdracht toont een proces-ID, in ons geval is dat 3555:

System Crash 1

Voer de volgende opdracht in om het proces te beëindigen. Vervang dit door de proces-ID die u op uw server hebt gekregen:

Voer de volgende opdracht in om de status te controleren:

De uitvoer toont aan dat MySQL actief is, maar met een nieuwe proces-ID. Dit betekent dat het automatisch opnieuw is opgestart na de crash:

screenshot 8

Conclusie

In deze handleiding hebben we u kennis laten maken met de drie initialisatiesystemen in Linux-distributies: System V, Upstart en Systemd. We hebben geleerd hoe u elk van de init-systemen kunt gebruiken om uw continu draaiende services te configureren om automatisch te starten na een herstart of systeemcrash. Dit zou als uitgangspunt moeten dienen wanneer u uw services moet configureren. Deel één van deze serie was voornamelijk een praktische handleiding. De het tweede deel is theoretischer en bevat meer details over wat we in deel één hebben gedaan. Verwijder je testservers nog niet, want je zult ze ook in deel twee gebruiken.

Veel computerplezier!

 

author

Manpreet Singh

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.