Vissza a bloghoz

Hogyan konfiguráljunk egy Linux szolgáltatást, hogy automatikusan elinduljon újraindítás vagy rendszerösszeomlás után: 1. rész (Gyakorlati példák)

Hogyan konfiguráljunk egy Linux szolgáltatást, hogy automatikusan elinduljon újraindítás vagy rendszerösszeomlás után: 1. rész (Gyakorlati példák)

Bevezetés

A számítástechnikában a dolgok nem mindig a tervek szerint alakulnak. Gyakran a váratlan rendszerösszeomlások arra késztetik a rendszergazdákat, hogy újraindítsák a rendszert és az egyes szolgáltatásokat. Egy rendszerösszeomlás vagy újraindítás után fárasztó lehet kitalálni és újraindítani minden olyan szolgáltatást, amelyre az alkalmazásnak szüksége van a futáshoz. Ebben a kétrészes útmutató első részében gyakorlati példákon keresztül bemutatjuk, hogyan konfigurálhatja a szolgáltatásokat úgy, hogy rendszerösszeomlás vagy szerverújraindítás után automatikusan elinduljanak. A második rész elméleti információkat fog tartalmazni arról, amit az első részben elértünk.

A gyakorlati példákhoz a MySQL adatbázis-szolgáltatást fogjuk használni. Ugyanezek az elvek azonban vonatkoznak a teljes szervert alkotó többi folyamatra is, mint például az Nginx, Apache, Redis, vagy más alkalmazásokra. Megtekintheti az útmutatóinkat arról, hogyan kell telepíteni a MySQL-t, Nginx, és Apache.

A Linux disztribúciókban három fő inicializációs (init) rendszer létezik, a futtatott disztribúciótól függően. Egyes disztribúciók két vagy több init rendszerrel is rendelkezhetnek, az alábbiak szerint:

  • System V – egy régebbi init rendszer, amely a régebbi disztribúciókban található meg, mint például:
    • Ubuntu 9.04 és korábbiak
    • CentOS 5 és korábbiak
    • Debian 6 és korábbiak
  • Upstart – korábbi disztribúciókban használták, mint például:
    • CentOS 6
    • Ubuntu 9.10-től Ubuntu 14.10-ig és Ubuntu 14.04
  • Systemd – a legújabb disztribúciókban használatos, mint például:
    • CentOS 7
    • Debian 7 és 8.
    • Ubuntu 15.04 és újabbak

Háttér

Az operációs rendszereknél, és különösen a Linux és Unix rendszereknél megszokott, hogy folyamatok és szolgáltatások futnak a háttérben. Az ilyen szolgáltatások érkezhettek az operációs rendszer szoftverével együtt. Némelyikük a telepített felhasználói alkalmazásokkal együtt is érkezhetett.

Az operációs rendszer szolgáltatásai közé tartoznak:

  • sshd – Ez a távoli kapcsolatokat lehetővé tevő démon.
  • cupsd – Ez a nyomtatást vezérlő démon.

A telepített alkalmazásszolgáltatások közé tartoznak:

  • httpd/apache2 – Az Apache2 webszerverhez mellékelt szolgáltatás.
  • nginx – Az Nginx webszerverhez mellékelt szolgáltatás.

Webalkalmazásaink, adatbázisaink, levelezőszervereink stb. elérhetőségének biztosítása érdekében az ilyen szolgáltatásoknak folyamatosan futniuk kell. Ha Ön rendszergazda vagy kíváncsi alkalmazásfejlesztő, biztosítani szeretné, hogy ezek a szolgáltatások folyamatosan fussanak, és egy sajnálatos rendszerösszeomlás esetén a rendszer újraindulása után automatikusan elinduljanak. És pontosan ezt fogjuk megtanulni ebben a gyakorlati útmutatóban.

Bár a riasztások beállítása és a Linux disztribúció folyamatos felügyelete kulcsfontosságú, egyes Linux szolgáltatások képesek az önjavításra, ha megfelelően vannak konfigurálva, köszönhetően a szolgáltatásokat kezelő init rendszereknek.

A Linux disztribúciókban a rendszer inicializálását megvalósító működési módokat futási szinteknek (runlevels). Ahhoz, hogy egy szolgáltatás automatikusan elinduljon, hozzá kell adni egy futási szinthez. Minden Linux és Unix-szerű rendszer négy közös futási szinttel rendelkezik, az alábbiak szerint:

  • 0 – A 0-s futási szint a rendszer leállítását jelzi.
  • 1 – Az 1-es futási szint az egyfelhasználós, mentési módot jelzi.
  • 2, 3, 4 – Ezek a futási szintek olyan állapotokat jeleznek, amikor a rendszer több-felhasználós, hálózatképes, szöveges módban indult el.
  • 5 – Az 5-ös futási szint a több-felhasználós, hálózatképes, grafikus módot jelzi.
  • 6 – A 6-os futási szint a rendszer újraindítását jelzi.

Ebben az útmutatóban Ön megtanulja, hogyan konfigurálhat egy Linux szolgáltatást úgy, hogy a rendszer újraindulásakor automatikusan elinduljon a korábban ismertetett három különböző init mód használatával: System V, Upstart és Systemd.

Előfeltételek

Ez a gyakorlati útmutató feltételezi, hogy rendelkezik egy Linux VPS-sel, amelyet a lépések követéséhez használhat. Kihasználhatja a Cloudsigma ingyenes próbaidőszakát és elindíthat néhány szervert a parancsok kipróbálásához. Követheti a lépésről lépésre bemutató útmutatónkat az Ubuntu szerverek beállításáról.

Az ebben az útmutatóban létrehozott szerverek kizárólag a gyakorlati feladatok követésére szolgálnak, és nem szabad a parancsokat éles (production) szerveren kipróbálnia, mivel számos szolgáltatás megszakadhat.

Néhány disztribúció, amelyre szüksége lesz:

  • Ubuntu 9.04 és korábbiak, vagy Debian 6 x64 (a System V init rendszer bemutatására szolgál)
  • Ubuntu 14.04 x64 (az Upstart bemutatására szolgál)
  • CentOS 7 x64 (a systemd bemutatására lesz használva).

Győződjön meg róla, hogy beállított egy nem-root felhasználót sudo jogosultságokkal.  Megtekintheti a sudoers fájl konfigurálásáról szóló útmutatónkat itt.

A System V használata

Ez a legrégebbi init rendszer, amelyet a korábbi Linux disztribúciókban használtak, mint például:

  • Debian 6 és korábbiak
  • CentOS 5 és korábbiak
  • Ubuntu 9.04 és korábbiak

A legtöbb telepíthető szerveralkalmazás, mint például a MySQL és az Nginx, alapértelmezés szerint az /etc/init.d könyvtárba mentett init szkriptekkel érkezik. Ezek a szkriptek lehetővé teszik számukra az újraindítás utáni indulást. Azonban előfordulhat, hogy nincsenek beállítva az automatikus indulásra rendszerösszeomlás után.

Automatikus indítási ellenőrzőlista a System V-höz

Az első lépés egy működőképes Bash init szkript meglétének ellenőrzése az /etc/init.d/service könyvtárban. A szolgáltatás engedélyezéséhez Debian vagy Ubuntu disztribúciókban használja az update-rc.d parancsot, míg CentOS rendszerben a chkconfig parancsot. Cserélje ki a tényleges szolgáltatásnévre:

A fenti parancs létrehoz egy szimbolikus linket az /etc/rc2.d könyvtárban, amely az alábbi kimenethez hasonlít. Ne hozza létre saját maga, mivel ez automatikusan generálódik:

A /etc/inittab fájl aljához adjon hozzá egy respawn sort az alábbi általános példában látható módon. Ne felejtse el kicserélni az alkalmazás indító szkriptjének tényleges elérési útjára:

Adja meg a következő parancsokat a szolgáltatás leállításához és elindításához:

Ezután indítsa újra a szervert:

Hogyan teszteljük a változtatásokat?

A szerver újraindítása után ellenőrizze, hogy a szolgáltatás fut-e, megkeresve a folyamat számát a következő paranccsal:

Lője le a folyamatot a következő paranccsal:

Öt perc elteltével ellenőrizze, hogy a szolgáltatás újra fut-e.

Gyakorlati System V konfiguráció egy valós szolgáltatással

A következő lépésekben egy valós szerveralkalmazást fogunk kipróbálni, mint például a MySQL. Hozzáféréssel kell rendelkeznie egy Debian 6 virtuális géphez. Egy sudo jogosultságokkal rendelkező fiókkal csatlakozzon hozzá SSH-n vagy putty segítségével, ha Windows asztali gépet használ.

1. lépés: A MySQL telepítése

Adja meg a következő parancsot a MySQL telepítéséhez:

Amikor a telepítés megkezdődik, a rendszer kérni fogja a root jelszót. Ezután adjon meg egy tetszőleges jelszót, és erősítse meg. Várja meg, amíg a telepítés befejeződik, majd adja meg a következő parancsot a MySQL biztonságossá tételének megkezdéséhez:

A rendszer kérni fogja a korábban megadott root jelszót. Nyomjon N-t a megtartásához. Ezután nyomjon Y-t a névtelen felhasználók eltávolítására, a távoli root bejelentkezés letiltására és a tesztadatbázis eltávolítására vonatkozó további felszólítások elfogadásához. Végül fogadja el a jogosultsági tábla újratöltését, hogy a változtatások automatikusan érvénybe lépjenek.

Ezzel befejeződött a MySQL telepítése. A következő parancs beírásával ellenőrizheti, hogy a szolgáltatás fut-e:

2. lépés: A MySQL beállítása az újraindítás utáni automatikus indulásra

A MySQL alapértelmezés szerint úgy van beállítva, hogy a rendszer újraindítása után elinduljon. A MySQL inicializáló szkriptjére mutató szimbolikus linket az /etc/rc2.d könyvtárban találja meg. Ezek a szimbolikus linkek nem manuálisan jönnek létre. A szolgáltatások engedélyezéséhez és letiltásához használhatja az update-rc.d parancsot.

Adja meg a következő parancsot a könyvtár tartalmának kilistázásához:

Ellenőrizze, hogy észreveszi-e a MySQL init szkriptre mutató szimbolikus linket:

Az S fontos, mert amíg látható egy S parancsfájl a szolgáltatás alapértelmezett futási szint könyvtárában található, az init rendszer elindítja a szolgáltatást a szerver rendszerindításakor. Annak ellenőrzéséhez, hogy a MySQL automatikusan elindul-e az újraindítás után, írja be a következő parancsot a rendszer újraindításához:

Az ssh-kapcsolat megszakad az újraindítás során. Várjon egy-két percet, majd csatlakozzon vissza. Futtassa a következő parancsot a szolgáltatás futásának ellenőrzéséhez:

A kimenet jelzi, hogy a szolgáltatás fut. Ez azt jelenti, hogy az újraindítás után automatikusan elindult. Azoknál a szolgáltatásoknál, amelyek nincsenek beállítva az automatikus indulásra, ezt saját magának kell beállítania.

Letilthatjuk a MySQL szolgáltatást, és újraindíthatjuk a rendszert, hogy teszteljük az automatikus indulást. Debian és Ubuntu rendszereken az update-rc.d parancsot használhatja szolgáltatások hozzáadására vagy eltávolítására az init rendszerből. Írja be a következő parancsot a MySQL szolgáltatás letiltásához:

Indítsa újra a rendszert, és csatlakozzon vissza ssh-n keresztül. Próbáljon meg csatlakozni a MySQL-hez a következő paranccsal:

A következőhöz hasonló MySQL-hibát fog kapni:

Ezután írja be a következő parancsot a szolgáltatás újbóli engedélyezéséhez:

Ha CentOS disztribúciót használ, a parancs a következő lesz:

Mivel a MySQL kezdetben nem indult el, el kell indítania. Írja be a következő parancsot:

3. lépés: Egy szolgáltatás (MySQL) beállítása az automatikus indulásra rendszerösszeomlás után

A System V nem indítja el automatikusan a folyamatot összeomlás után. Szimulálhatunk egy rendszerösszeomlást a MySQL folyamatazonosítójának (PID) megkeresésével és leállításával. Írja be a következő parancsot a MySQL folyamatazonosító megkereséséhez:

A kimenetben keresse meg a MySQL folyamatokat. A MySQL-t futtató fő folyamatok a mysqld_safe és a mysqld. Jegyezze fel a folyamatazonosítóikat (ezek számok), és használja a következő parancsokat a leállításukhoz:

Ellenőrizze a MySQL szolgáltatás állapotát a következő paranccsal:

A kimenet jelzi, hogy a MySQL leállt. Manuálisan újraindíthatjuk a service start paranccsal. Mi azonban automatikus folyamatot szeretnénk. Ennek az automatikus működésnek az eléréséhez szerkesztenünk kell az /etc/inittab fájlt. Ez az első fájl, amelyet a System V init beolvas a rendszerindításkor. Az /etc/inittab fájl utasításokat tartalmaz arra vonatkozóan, hogyan kell viselkednie egy folyamatnak összeomlás esetén. Megfelelő konfiguráció esetén összeomláskor újraindítja a rendszert. A mi esetünkben biztosítani szeretnénk, hogy a MySQL is ezen szolgáltatások közé tartozzon.

Az /etc/inittab fájl rendkívül fontos egy Linux disztribúció számára. Ez határozza meg, hogy a rendszer újraindul-e vagy sem. Ha hibát követ el a parancsokban, előfordulhat, hogy a rendszer nem indul el az újraindításkor. Ahogy korábban jeleztük, reméljük, hogy ezeket a parancsokat csak tesztkörnyezetben próbálja ki, és nem éles környezetben.

Először készítsen másolatot a fájlról, mielőtt elkezdené a szerkesztést:

Ezután nyissa meg a fájlt a nano segítségével:

Görgessen a fájl végére, és adja hozzá a következő kódrészletet:

A fenti parancs újraindítja a mysql_safe folyamatot rendszerösszeomlás után. Négy mezőből áll, amelyeket kettőspontok választanak el egymástól, az alábbiak szerint:

  • ms: Meghatározza a folyamat azonosítóját.
  • 2345: Meghatározza azokat a futási szinteket, amelyekre a parancs vonatkozik. Ebben az esetben: 2, 3, 4, 5 futási szintek.
  • respawn: Meghatározza a műveletet. Ebben az esetben újraindítjuk (respawn) a folyamatot.
  • /bin/sh /usr/bin/mysqld_safe: Az utolsó rész határozza meg a folyamatot – azt a parancsot, amely a folyamat újraindításához fut le.

Most nyomja meg a Ctrl + O, majd az Enter billentyűket a fájl mentéséhez. Ezután nyomja meg a Ctrl + X billentyűkombinációt a szerkesztő bezárásához. Írja be a következő parancsot a szolgáltatás elindításához:

Indítsa újra a szervert, majd futtassa a korábban ismertetett parancsokat a folyamatazonosító (PID) megkereséséhez. Ezután állítsa le a folyamatokat, kezdve a következő paranccsal: ps -ef | grep mysql. Várjon néhány percet, majd írja be a következő parancsot a MySQL állapotának ellenőrzéséhez:

A kimenetnek azt kell mutatnia, hogy a MySQL szolgáltatás fut, ami azt jelenti, hogy összeomlás után képes volt újraindulni. Ugyanezt a folyamatot követheti a szerverén lévő többi szolgáltatás esetében is.

Szolgáltatások automatikus indítása Upstart segítségével

Upstart egy másik init rendszer, amelyet eredetileg az Ubuntu 6-ban mutattak be, majd később az Ubuntu 9.10-ben vált alapértelmezetté. Az RHEL 6 és származékai, valamint a Google Chrome OS szintén az Upstart init rendszert használják. Az ebben a szakaszban leírt lépésekhez egy olyan szerverre lesz szüksége, amelyen az alábbi disztribúciók egyike fut:

  • Ubuntu 9.10-től Ubuntu 14.10-ig, valamint az Ubuntu LTS verziója, azaz az Ubuntu 14.04.
  • CentOS 6

Lássuk, hogyan konfigurálhatja az Upstart fájlokat a szerverszolgáltatások automatikus elindításához újraindítás vagy rendszerösszeomlás esetén. Az Upstart a szolgáltatások vezérléséhez a Linux disztribúciókban a következő könyvtárban tárolt konfigurációs fájlokat használja: /etc/init könyvtár. A szerveralkalmazások, például a MySQL és az Nginx legújabb verziói saját init szkripteket telepítenek a /etc/init könyvtárba. Így újraindítás és rendszerösszeomlás után is elindulnak anélkül, hogy bármit is tennie kellene.

Automatikus indítási ellenőrzőlista az Upstart-hoz

Íme néhány referencia-konfiguráció, amelyet ellenőrizhet annak biztosítására, hogy a szolgáltatás automatikus indításra van-e konfigurálva.

  • Győződjön meg arról, hogy a szolgáltatás rendelkezik init szkripttel a következő könyvtárban: /etc/init/service_name.conf service_name ahol a service_name az adott szolgáltatás tényleges neve. Ellenőrizze a következő két sort a /etc/init/service_name.conf fájlban:
    • Egy sor, amely valami ilyesmit tartalmaz: start on runlevel [2345]. Ez azt jelzi, hogy a szolgáltatás elindul a rendszer újraindításakor.
    • Egy sor, amely valami ilyesmit tartalmaz: respawn. Ez azt jelzi, hogy a szolgáltatás újraindul (respawn) egy rendszerösszeomlás után.
  • Győződjön meg arról, hogy nincs szolgáltatás-felülbírálási (override) fájl a következő könyvtárban: /etc/init/service_name.override. Kivéve, ha Ön vagy egy másik rendszergazda korábban létrehozta azt.
  • Írja be a következő parancsokat a szolgáltatás leállításához és elindításához:
  • Indítsa újra a rendszert, majd néhány perc múlva csatlakozzon vissza. Most futtasson néhány tesztet, hogy ellenőrizze a működést
  • Újraindítás után ellenőrizze, hogy a szolgáltatás fut-e. Írja be a következő parancsot a folyamatazonosító megkereséséhez, a service_name helyére a tesztelt szolgáltatás tényleges nevét írva:
  • Miután megvan a folyamatazonosító, írja be a következő parancsot a folyamat leállításához (kill):
  • Várjon néhány másodpercet, majd ellenőrizze újra, hogy a folyamat fut-e.

Gyakorlati Upstart konfiguráció egy valós szolgáltatással

A következő szakaszban bemutatjuk, hogyan használhatja az Upstart-ot egy valós szolgáltatással. A teszteket egy Ubuntu 14.04 virtuális gép szerveren fogjuk futtatni, ahol a MySQL lesz a szolgáltatás. Csatlakozzon az Ubuntu 14.04 tesztszerveréhez ssh vagy putty segítségével, ha Windows rendszert használ. Alapesetben egy sudo jogosultságokkal rendelkező, nem root felhasználót kell használnia. Miután bejelentkezett, elkezdhetjük a lépéseket:

1. lépés: A MySQL telepítése

Mindig emlékezzen a csomagok frissítésére, mielőtt bármilyen új szoftvert telepítene:

Most írja be a következő parancsot a MySQL szerver telepítéséhez:

Amikor a rendszer kéri, hozzon létre egy root jelszót. Várja meg, amíg a telepítés befejeződik, majd futtassa a következő parancsot a MySQL telepítés biztonságossá tételének megkezdéséhez:

Kövesse a felszólításokat, ahogyan azt a korábbi részben is tette. Ezután ürítse ki a jogosultságokat (flush privileges), hogy a változtatások azonnal életbe lépjenek.

2. lépés: Egy szolgáltatás (MySQL) konfigurálása az automatikus indulásra rendszerújraindítás után

A MySQL be van állítva, hogy újraindítás után automatikusan elinduljon. Csak azért nézzük meg a konfigurációs fájljait, hogy megtanuljuk, hogyan konfigurálhatjuk saját alkalmazásainkat is az automatikus indulásra újraindítás után. A MySQL szolgáltatás a telepítés után automatikusan elindult. Azonban ellenőrizzük, hogy fut-e, a következő parancs beírásával:

Egy olyan kimenetet kellene látnia, amely jelzi, hogy a MySQL szolgáltatás fut, valahogy így:

Indítsa újra a szervert, és jelentkezzen be újra. Ismét írja be a következő parancsot annak tesztelésére, hogy fut-e:

A kimenet jelzi majd, hogy a MySQL fut, ami azt jelenti, hogy az újraindítás után automatikusan elindult. Ebben az esetben semmit sem kell változtatni. Ez a viselkedés azonban más alkalmazások esetében eltérő lehet. Felmerülhet a kérdés, honnan tudja az Upstart init rendszer, hogy újraindítás után automatikusan el kell indítania a MySQL-t. A MySQL az Upstart indítási konfigurációs fájlját a következő helyre telepíti: /etc/init/mysql.conf. Az Upstart fájlok nem shell scriptek, hanem szöveges fájlok, amelyek pre-start és post-start eseményekhez tartozó scriptblokkokat tartalmaznak. A blokkok utasítják az Upstart rendszert, hogy mit hajtson végre, amikor a MySQLd folyamat elindul, vagy amikor már elindult.

Írja be a következő parancsot a fájl nano szerkesztőben való megnyitásához:

A fájl kimenete valahogy így nézhet ki:

Mint látható, a start blokk arra utasítja a MySQL-t, hogy a 2, 3, 4, 5 futási szinteken (runlevel) induljon el, és ne a 0, 1, 6 szinteken. Ha Upstart konfigurációt határoz meg az alkalmazásához, azt ebben a szakaszban fogja megtenni. A respawn blokk arra utasítja az Upstartot, hogy mit tegyen összeomlás után. Ezt a következő részben tárgyaljuk, ezért hagyja nyitva a fájlt a nano szerkesztőben.

Step 3: Configuring a Service (MySQL) to Auto-start After Crash

A respawn direktíva a /etc/init/mysql.conf fájlban arra utasítja az Upstartot, hogy összeomlás után indítsa újra a MySQL szolgáltatást.

A respawn limit direktíva arra utasítja az Upstartot, hogy hányszor kísérelje meg újraindítani az összeomlott MySQL szolgáltatást egy másodpercben megadott intervallumon belül. Az első argumentum (2) a próbálkozások számát jelzi. A második argumentum (5) az intervallumot jelzi másodpercben. Ha egy összeomlás után az Upstartnak a határértéken belül nem sikerül újraindítania a MySQL szolgáltatást, az leállítva marad. Ez a viselkedés arra szolgál, hogy megvédje a rendszert a stabilitásának elvesztésétől abban az esetben, ha folyamatosan összeomló szolgáltatásokat próbálna meg újra és újra elindítani. Most már bezárhatja a szerkesztőt anélkül, hogy bármilyen változtatást végezne.

Teszteljük, hogy a MySQL automatikusan újraindul-e egy összeomlás után. Írja be a következő parancsot a státusz ellenőrzéséhez és a MySQL szolgáltatás folyamatazonosítójának (process number) lekéréséhez:

A kimenetnek valahogy így kell kinéznie. Jegyezze fel a folyamat számát, mert később még szükségünk lesz rá:

Ezután írja be a következő parancsot a folyamat leállításához (kill). Ez egy összeomlást szimulál. Cserélje ki az előző parancsban kapott folyamatszámmal:

Ellenőrizze ismét a MySQL állapotát a következő parancs beírásával:

Ismét futnia kell, de valószínűleg egy másik folyamatszámmal:

Ez a következőben található respawn direktíva miatt történik: /etc/init/mysql.conf fájl. Ez biztosítja, hogy a rendszer esetleges összeomlása esetén a MySQL automatikusan elinduljon. Így a MySQL adatbázistól függő alkalmazása a várt módon működik tovább.

Szolgáltatások automatikus indítása Systemd segítségével

Systemd egy inicializációs rendszer, amely a legtöbb legújabb Linux disztribúcióban megtalálható. Valószínűleg ezt fogja használni, amikor elindít egy új VPS-t. Először a Fedora disztribúcióban mutatták be. A RHEL 7-tel és annak származékaival, például a CentOS 7-tel érkezik. Az Ubuntu 15.04-től kezdve a Systemd natívan megtalálható. A Systemd visszafelé kompatibilis a System V inicializációs szkriptekkel és parancsokkal. Ezért minden System V szolgáltatásnak működnie kell a Systemd alatt. A System V-ben és az Upstartban használt legtöbb parancsot módosították, hogy működjön a Systemd-vel.

A Systemd segítségével a legtöbb szerveralkalmazás, például a MySQL és az Nginx automatikusan elindul újraindítás vagy leállítás után, anélkül, hogy bármit is meg kellene változtatnia. Egyedi alkalmazásaihoz saját init szkripteket kell létrehoznia a szolgáltatások automatikus újraindításához.

A Systemd-vel kapcsolatos részletesebb információkért tekintse meg a Systemd szolgáltatások és egységek Systemctl segítségével történő kezeléséről szóló útmutatónkat.

Automatikus indítási ellenőrzőlista a Systemd-hez

Íme néhány referencia-konfiguráció, amelyet ellenőrizhet, hogy megbizonyosodjon arról, hogy a szolgáltatás úgy van konfigurálva, hogy automatikusan elinduljon a Systemd segítségével.

  • A szolgáltatásnak rendelkeznie kell egy működő Systemd init szkripttel, amely itt található: /etc/systemd/system/multi-user.target.wants/serviceName.service. A ServiceName a konfigurálni kívánt szolgáltatás tényleges neve.
  • A szolgáltatás engedélyezésére szolgáló parancs:
  • A parancs létrehoz egy szimbolikus linket a /etc/systemd/system/multi-user.target.wants/ könyvtárban, amely hasonlóan nézhet ki:
  • Ezzel a szimbolikus linkkel engedélyezte az automatikus újraindítást a rendszerindítás után.
  • A változtatások aktiválásához töltse újra a rendszer démont, majd töltse újra a szolgáltatást a következő parancsokkal:
  • Annak teszteléséhez, hogy a konfigurációk elindítják-e a szolgáltatást újraindítás után, újraindíthatja a rendszert:
  • Amikor a rendszer újraindul, keresse meg a folyamat számát a következő paranccsal:
  • Jegyezze fel a folyamat számát, és lője le a következő paranccsal:
  • Várjon néhány másodpercet, majd keresse meg újra a szolgáltatást, hogy ellenőrizze, újra fut-e.

Gyakorlati Systemd konfiguráció egy valós szolgáltatással

Ebben a részben megpróbáljuk konfigurálni a MySQL szolgáltatást egy Ubuntu 20.04 virtuális gépen.

1. lépés: Csatlakozzon a virtuális magánszerveréhez (Ubuntu 20.04 vagy CentOS 7 x64)

Jelentkezzen be a VPS-ére, vagy hozzon létre egyet a Cloudsigma panelen, és csatlakozzon ssh vagy putty segítségével, ha Windowst használ. Az útmutató ehhez a részéhez Ubuntu 20.04 szervert használunk. Ugyanezek a parancsok vonatkozhatnak a CentOS 7 disztribúcióra is. Ügyeljen arra, hogy nem root felhasználót használjon sudo jogosultságokkal.

2. lépés: A MySQL telepítése (a konfigurálni kívánt szolgáltatás)

Először frissítse a rendszert:

Ezután telepítheti a MySQL szervert a következő paranccsal:

Ezután futtassa a következő parancsot a MySQL biztonságossá tételének megkezdéséhez:

A szkript megkérdezi, hogy szeretné-e beállítani a VALIDATE PASSWORD összetevőt, vagy nyomjon meg egy tetszőleges billentyűt az összetevő engedélyezése nélküli folytatáshoz. Kövesse ezt a linket, ha többet szeretne megtudni a MySQL jelszó-ellenőrző összetevőről.

Nyomja meg az 1-est az engedélyezéséhez, majd válassza a közepes szintet az 1-es megnyomásával. Adjon meg egy erős jelszót: nagybetűk, kisbetűk, speciális karakterek és számok kombinációját. Erősítse meg a jelszót, és erősítse meg a kérdést, amely azt kérdezi, hogy a megadott jelszót szeretné-e root jelszóként használni. A többi kérdésnél nyomjon y-t az elfogadáshoz, ahogy az előző szakaszokban is tette. Végül frissítse a jogosultságokat (flush privileges) a MySQL-ben a változtatások újratöltéséhez.

3. lépés: A MySQL konfigurálása az újraindítás utáni automatikus indulásra

A MySQL úgy van konfigurálva, hogy újraindítás után elinduljon, így nincs szükség változtatásra. Azonban használhatjuk a MySQL konfigurációs fájljait arra, hogy megtanuljuk, hogyan konfiguráljuk a saját egyéni fájljainkat.

Először ellenőrizze, hogy a MySQL szolgáltatás be van-e állítva a rendszerindításkor történő indulásra. Írja be a következő parancsot (vegye figyelembe, hogy CentOS-ben a MySQL szolgáltatás neve mysqld):

Íme a kimenet:

CS screenshot

Ezután indítsa újra a VPS-t a következő parancs beírásával:

Csatlakozzon vissza ssh-n keresztül, és írja be a következő parancsot a MySQL szolgáltatás állapotának ellenőrzéséhez:

Az alábbi képernyőképhez hasonló kimenetet kell kapnia:

System Crash 3

A MySQL szolgáltatás letiltásához írja be a következő parancsot:

A kimenet azt jelzi, hogy a MySQL szolgáltatásra mutató szimbolikus linkek el lettek távolítva a Systemd-ből:

screenshot it 4

A következő parancs beírásával tesztelheti, hogy a szolgáltatás engedélyezve van-e a Systemd init rendszerben:

A kimenet azt fogja mutatni, hogy le van tiltva. Ha újraindítja a rendszert, a MySQL nem fog elindulni a rendszerindításkor:

disabled screenshot

Engedélyezze a szolgáltatást a következő parancs beírásával:

A kimenet mutatja a Systemd initben létrehozott, a MySQL szolgáltatásra mutató szimbolikus linket:

screenshot 5

Amikor újraindítja a rendszert, a MySQL szolgáltatás automatikusan elindul.

4. lépés: A MySQL konfigurálása az összeomlás utáni automatikus újraindulásra

A MySQL úgy van konfigurálva, hogy összeomlás után automatikusan újrainduljon. Nézzük meg, hogyan valósul meg ez a konfiguráció a Systemd-ben. A Systemd unit fájlokat használ a konfigurációhoz. Írja be a következő parancsot a mysql.service konfigurációs fájl nano-ban történő megnyitásához:

A kimenet így néz ki:

System Crash 2

Számunkra a Restart direktíva a fontos. A meghatározás szerint a MySQL újraindul, ha hiba történik. A Restart direktíva határozza meg, hogy mi történjen a Systemd-ben, éppúgy, mint a Respawn direktíva az Upstartban.

Nem minden szolgáltatás rendelkezik ezzel a direktívával. Ahhoz, hogy egy szolgáltatás összeomlás után újraindulhasson, bármikor hozzáadhatja a Restart direktívát a szolgáltatás konfigurációs unit fájljának [Service] blokkja alá. Ha a [Service] fejléc nem létezik, adja hozzá. Most lépjen ki a szerkesztőből a Ctrl + X billentyűkombináció megnyomásával.

Az összeomlás szimulálásához keresse meg a MySQL folyamat azonosítóját (PID) a következő parancs beírásával:

Az állapotellenőrző parancs megjelenít egy folyamatazonosítót, a mi esetünkben ez a 3555:

System Crash 1

Írja be a következő parancsot a folyamat leállításához (kill). Cserélje ki a saját szerverén kapott folyamatazonosítóra:

Írja be a következő parancsot az állapot ellenőrzéséhez:

A kimenet azt mutatja, hogy a MySQL fut, de egy új folyamatazonosítóval. Ez azt jelenti, hogy az összeomlás után automatikusan újraindult:

screenshot 8

Összegzés

Ebben az útmutatóban bemutattuk a Linux disztribúciók három inicializációs rendszerét: a System V-öt, az Upstartot és a Systemd-t. Megtanultuk, hogyan használhatja bármelyik init rendszert a folyamatosan futó szolgáltatások konfigurálására, hogy azok automatikusan elinduljanak újraindítás vagy rendszerösszeomlás után. Ennek kiindulópontként kell szolgálnia, amikor konfigurálnia kell a szolgáltatásait. Ennek a sorozatnak az első része főként egy gyakorlati útmutató volt. A a második rész elméletibb, és részletesebben bemutatja, mit csináltunk az első részben. Még ne törölje a tesztszervereit, mert a második részben is használni fogja őket.

Kellemes számítógépezést!

 

author

Manpreet Singh

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.