Hogyan konfigurálhatom a konzult termelési környezetben az Ubuntu 14.04-en

Feladva 2014. augusztus 15-én 2 verzió

Bevezetés

A Consul egy elosztott, rendkívül elérhető, adatközpont-tudatos, szolgáltatás-felderítő és konfigurációs rendszer. Használható szolgáltatások és csomópontok bemutatására egy rugalmas és hatékony felületen, amely lehetővé teszi az ügyfelek számára, hogy mindig naprakész képet kapjanak arról az infrastruktúráról, amelynek részei.

A Consul számos különféle szolgáltatást kínál, amelyek következetes és elérhető információk nyújtására szolgálnak az infrastruktúrájáról. Ez magában foglalja a szolgáltatás- és csomópont-felderítési mechanizmusokat, a címkézési rendszert, az állapotfelméréseket, a konszenzuson alapuló választási rutinokat, az egész rendszerre kiterjedő kulcs/érték tárolást és még sok mást. A szervezeten belüli konzul kihasználásával könnyen fejlett szintű tudatosságot tud felépíteni alkalmazásaiban és szolgáltatásaiban.

Utolsó útmutatónkban bemutattuk a konzul néhány funkcióját. Ebben az útmutatóban megkezdjük a gyártásra kész konzuli konfiguráció létrehozását, amely felhasználható az infrastruktúra szolgáltatáskeresésének megvalósításához.

Előfeltételek és célok

Ebben a sorozatban olyan szerverek rendszerét fogjuk felállítani, amelyek képesek lesznek egymással kommunikálni, és karbantartani a szolgáltatási információkat, a kulcs/érték tároló készleteket és az ügyfélgépek egyéb részleteit. Az első lépések a rendszergyártás előkészítése felé ebben az útmutatóban kerülnek, amikor telepítjük a szoftvert és automatizáljuk a konfigurációnkat.

A konzul dokumentációja azt javasolja, hogy legyen 3 vagy 5 konzul szerverek minden adatközpontban fut, hogy elkerülje az adatvesztést szerverhiba esetén. A konzul szerverek az a komponens, amely a nehéz emelést végzi. Tárolnak információkat a szolgáltatásokról és kulcs/érték információkat. Páratlan számú szerverre van szükség a patthelyzet elkerülése érdekében a választások során.

A konzuli szervereken kívül más gépek is működhetnek konzuli ügynökök. A konzuli ügynökök nagyon könnyűek és egyszerűen továbbítják a kéréseket a szerverekre. Ezek biztosítják a szerverek szigetelésének módszerét, és magukra az ügynökökre hárítják a szerverek címeinek ismeretét.

A biztonsági mechanizmusok egy részének későbbi útmutatóban történő megvalósításához az összes gépünket egyetlen tartományon belül kell megneveznünk. Ez azért van, hogy később helyettesítő SSL tanúsítványt állíthassunk ki.

Gépeink részletei itt találhatók:

Gazdanév IP-cím szerepe
server1.example.com 192.0.2.1 bootstrap konzul szerver
server2.example.com 192.0.2.2 konzul szerver
server3.example.com 192.0.2.3 konzul szerver
agent1.example.com 192.0.2.50 konzuli ügyfél

Ehhez a bemutatóhoz 64 bites Ubuntu 14.04 szervereket fogunk használni, de minden modern Linux szervernek ugyanolyan jól kell működnie. Amikor a konfigurálás befejeződött, rendelkeznie kell egy olyan rendszerrel, amely lehetővé teszi a szolgáltatások, ellenőrzések és csomópontok egyszerű hozzáadását.

Jelentkezzen be gépeire root felhasználóként, hogy elvégezze az ebben az útmutatóban szereplő lépéseket.

A Consul letöltése és telepítése

Ha még nem telepítette a konzult a konzul útmutató kezdeti bevezetésébe, akkor ezt most meg kell tennie. A konzult rendszerszintű alkalmazásként telepítjük a konfigurált négy gép mindegyikére.

Mielőtt belenéznénk a konzuli alkalmazásba, ki kell csomagolnunk a csomagolást a futtatható fájl kibontásához. Frissítse a helyi rendszercsomag gyorsítótárát, majd telepítse a csomagot az apt használatával:

Most folytathatjuk a konzul program beszerzését. A konzul projekt oldala letöltési linkeket tartalmaz a Windows, OS X és Linux bináris csomagokhoz.

Lépjen a fenti oldalra, és kattintson a jobb gombbal az operációs rendszerre és az architektúrára, amely a szervereit ábrázolja. Ebben az útmutatóban, mivel 64 bites szervereket használunk, a „linux” alatt az „amd64” linket fogjuk használni. Válassza a "link másolása" lehetőséget, vagy bármi hasonló lehetőséget, amelyet a böngésző ad.

Termináljában lépjen az/usr/local/bin könyvtárba, ahol megtartjuk a futtatható fájlt. Írja be a wget és egy szóközt, majd illessze be a webhelyről másolt URL-t:

Most kibonthatjuk a bináris csomagot a korábban telepített unzip paranccsal. Ezután eltávolíthatjuk a tömörített fájlt:

Most már minden kiszolgálón elérhetőnek kell lennie a consul paranccsal.

Hozza létre a szükséges könyvtárat és rendszerstruktúrát

Könnyen kipróbálhatjuk a konzult strukturálatlanul a konzul parancs használatával. Ez lehetővé teszi bizonyos funkciók kipróbálását. Ezt az utolsó útmutatóban tettük meg, hogy megismerkedjünk a szoftverrel.

Megpróbálunk azonban megbízhatóbb és könnyebben kezelhető rendszert felállítani, ezért létrehozunk egy struktúrát ennek a működésnek a megvalósításához. Hajtsa végre a következő lépéseket minden számítógépén (kiszolgálók és kliensek).

Az első dolog, amire ügyelnünk kell, a feladatunkra jellemző felhasználó létrehozása. Ez a felhasználói jogok szétválasztásának szokásos esete, ezért konzuli folyamatainkat egy dedikált felhasználóval fogjuk futtatni.

Készítse el most a felhasználót a következő beírásával:

Az összes kérést kihagyhatja (érdemes beállítania egy jelszót. Ellenkező esetben panaszt fog tenni), ha szeretné.

Ezután létrehozzuk a konfigurációs hierarchiát, amely tartalmazza a különböző konfigurációkat, amelyeket a szolgáltatás elindításának függvényében fogunk használni. Ennek megkönnyítése érdekében létrehozunk egy szülő consul.d könyvtárat az/etc config struktúrában, és ebbe az összes rendszerbe beletesszük a bootstrap, a kiszolgáló és az ügyfél nevű alkönyvtárakat:

Ezekbe később bele tudjuk tenni a konfigurációinkat. Valamennyi kiszolgáló valószínűleg legfeljebb két ilyen könyvtárat fog használni, de minden egységen létrehozzuk a konzisztencia struktúráját.

Létre kell hoznunk egy helyet, ahol a konzul tartós adatokat tárolhat az újraindítás között. Erre a célra létrehozunk egy könyvtárat a/var/consul címen, és megadjuk a konzul felhasználónak, hogy kezelni tudja az adatokat:

Ha ez a szerkezet a helyén van, akkor képesnek kell lennünk a konfigurációs fájlok elkészítésének megkezdésére.

A Bootstrap konfiguráció létrehozása

Az első konfiguráció, amelyet létre kell hoznunk, a fürt indítása. Ez nem túl gyakori esemény, mivel csak a fürt kezdeti létrehozásához szükséges. Azonban létrehozzuk a konfigurációs fájlt, hogy gyorsan újrakezdhessük azt az esetet, ha a fürt teljesen leáll.

Ezt a konfigurációs fájlt csak az egyik konzuli kiszolgálóra helyezheti, vagy mindegyikre, hogy több lehetőséget biztosítson a rendszerindításhoz. Ezt a bemutatót csak az 1. szerverre tesszük.

A konfigurációs fájlok egyszerű JSON-ban vannak tárolva, így könnyen kezelhetők. Hozza létre az első fájlt a bootstrap alkönyvtárban:

Ebben a fájlban azzal kezdhetjük, hogy megadjuk, hogy ennek a konfigurációnak a használatakor a konzulnak szerverként kell indulnia bootstrap módban:

Meg kell adnunk azt az adatközpontot is, ahol a fürtünk élni fog. Ez bármilyen név lehet, amely segít a fürt fizikai helyének azonosításában. A konzul ismeri az adatközpontot, és ezek a jelölések segítenek a különböző fürtök adatközpont szerinti rendezésében.

Átadhatjuk a/var/consul könyvtárban létrehozott adatkönyvtárban is. A konzul ezt használja a fürt állapotára vonatkozó információk tárolására:

Ezután szeretnénk végrehajtani némi titkosítást a konzul által használt suttogó protokollban. Ezt a funkciót egy megosztott titkos rendszer segítségével építi be. A titoknak egy 16 bites alap-64 kódolású karakterláncnak kell lenniük. Az értéknek megfelelő érték eléréséhez ideiglenesen kilépünk a fájlból.

A terminálban a consul paranccsal létrehozhatunk egy szükséges hosszúságú és kódolású kulcsot. Típus:

Másolja a létrehozott értéket, és nyissa meg újra a konfigurációs fájlt:

Használja a másolt karakterláncot a titkosítási paraméter értékeként:

Végül hozzáadunk néhány további információt a naplószint megadásához és annak jelzéséhez, hogy a syslog-ot használni kívánja a naplózáshoz:

Mikor elkészült, mentse és zárja be a fájlt.

A szokásos kiszolgáló-konfiguráció létrehozása

Most, hogy a bootstrap konfigurációnk elkészült, felhasználhatjuk általános szerverkonfigurációnk alapjául. A kiszolgáló konfigurációját a fürt indításakor használjuk.

Először másolja a bootstrap fájlt a server1 szerverről a gép kiszolgáló alkönyvtárába szerkesztés céljából:

Nyissa meg a fájlt a szükséges módosítások elvégzéséhez:

Az indításhoz ki kell kapcsolnunk a bootstrap jelzőt, mivel ez a konfiguráció nem bootstrap konfigurációkra vonatkozik.

Az egyetlen dolog, amelyet módosítanunk kell a kiszolgáló konfigurációjánál, az a másik szerver IP-címeinek megadása, amelyekhez ennek a csomópontnak meg kell próbálkoznia az induláskor. Ez gondoskodik az automatikus csatlakozásról, hogy ne kelljen kézzel csatlakoznunk a fürthöz a kiszolgálónk indítása után:

A titkosítási paraméternek a rendszer összes résztvevőjének meg kell egyeznie, ezért a fájl másolása már gondoskodott rólunk. Ezt tartsa szem előtt az új konfigurációk létrehozásakor.

Ha elkészült, mentse a fájlt.

Másolja át ennek a konfigurációs fájlnak a tartalmát a többi gépre, amelyek konzuli szerverként fognak működni. Helyezze őket egy fájlba az /etc/consul.d/server/config.json címen, ugyanúgy, mint az első gazdagépen.

Az egyetlen érték, amelyet módosítania kell a többi gazdagépen, az az IP-cím, amelyhez megpróbál csatlakozni. Győződjön meg arról, hogy a saját IP helyett megpróbál csatlakozni az első kiszolgálóhoz. Például a példánkban szereplő második szervernek egy ilyen fájlja van:

Ha elkészült, mentse és zárja be a létrehozott fájlokat.

Az ügyfélkonfiguráció létrehozása

A szerverkonfigurációink teljesek. Arra koncentrálhatunk, hogy megfelelő konfigurációval üzembe helyezzük az ügyfélgépünket.

Nyisson meg egy konfigurációs fájlt az ügyfélgép kliens alkönyvtárában:

Ismét egy korábbi konfigurációt fogunk használni az új konfiguráció alapjául. Másolja az egyik kiszolgálófájl tartalmát ebbe a fájlba.

Kezdjük azzal, hogy eltávolítjuk a bootstrap paraméter minden említését, mivel ez csak a szerver konfigurációira vonatkozik, és a szerver paraméterét hamisra változtatjuk.

Ezután hozzáadunk egy paramétert, amely meghatározza a webes felhasználói felület könyvtárának helyét. Egy kicsit megszerezzük az ehhez szükséges fájlokat. A tartózkodási helyük a következő:/home/consul/dist .

Végül a start_join paramétert úgy szeretnénk beállítani, hogy az összes szerverünket felsorolja:

Mikor elkészült, mentse és zárja be a fájlt.

A webes felhasználói felület fájlok letöltése

Most, hogy az ügyfelet a webes felhasználói felület kiszolgálására konfiguráltuk, be kell szereznünk a tényleges fájlokat, amelyek lehetővé teszik ezt.

A konzul webhelyén kattintson a jobb gombbal a konzul webes felhasználói felületére mutató linkre, és válassza a „Link link másolása” vagy bármilyen hasonló lehetőséget.

Az ügyfélen a su használatával váljon konzuli felhasználóvá. Fel fogjuk állítani a webkönyvtárat a konzul felhasználó saját könyvtárában.

Írja be a wget parancsot, majd egy szóközt, és illessze be a webes felhasználói felület letöltéséhez másolt linket. Az írás idején ez így fog kinézni:

Csomagolja ki a letöltött fájlt, és távolítsa el a zip fájlt:

Ez létrehozza a dist nevű könyvtárat a saját könyvtárában. Ez az a könyvtár, amelyre a webes felhasználói felület paraméterét mutattuk a konfigurációs fájlban.

Mielőtt folytatnánk, lépjen ki a konzul felhasználói munkamenetéből, hogy visszatérjen a gyökér munkamenethez:

Hozzon létre egy Upstart szkriptet

Mostantól megvan a konfigurációs fájlunk. Ezután összpontosíthatunk egy upstart szkript létrehozására, hogy a konzul példányaink automatikusan elinduljanak az indításkor, és bármilyen probléma esetén újrainduljanak.

Mivel a fürt bootstrapelésével nem kell gyakran foglalkoznunk (legtöbbször maga a klaszter is fennmarad, és előfordulhat, hogy egyetlen csomópontot kell újraindítani és újra csatlakozni a fürthöz), nem fogjuk figyelembe venni a bootstrap-ot az upstart szkriptben. Hamarosan megmutatjuk, hogyan lehet manuálisan befejezni ezt a folyamatot.

Az indító szkriptünk hasonló lesz a szervereinken és az ügyfélen is. Az egyik konzuli kiszolgálón hozzon létre egy fájlt az/etc/init könyvtárban a konzuli konfiguráció megőrzéséhez:

A fájl tartalmát átmásoljuk a többi szerverre, majd kliens konfigurációnk alapjául is felhasználjuk. Ezen a fájlon belül az első ügyintézés a folyamat leírásának elkészítése. Szervereinken a következőket fogjuk használni:

Ezután meghatározzuk azokat a feltételeket, amelyek mellett a folyamat elindul. Ehhez a szolgáltatáshoz azt akarjuk, hogy a szolgáltatás a helyi fájlrendszer csatlakoztatásakor és a nyilvános hálózati felület futásakor kezdődjön.

Azt is meg akarjuk határozni, hogy mikor álljon le a folyamat. A szokásos Linux futási szintek használatával megmondhatjuk neki, hogy állítsa le a folyamatot, ha éppen nem a szokásos üzemmódban van (állítsa le a folyamatot a szerver leállításakor vagy újraindításakor):

Mondhatjuk az init rendszernek, hogy indítsa újra a folyamatot, ha az váratlanul meghal. Meg szeretnénk adni azt a felhasználót és csoportot is, amely alatt a folyamatnak futnia kell. Ne feledje, hogy a folyamat elkülönítésére hoztuk létre a konzul felhasználót és csoportot:

Végül meg kell adnunk a tényleges futtatni kívánt parancsot. Ez egyszerűen az ügynök módban futtatott konzul parancs lesz. A kiszolgáló konfigurációs specifikációkat argumentumként tartalmazó könyvtárban adjuk át a parancsnak:

Ha elkészült, mentse a fájlt.

Másolja át a fájl tartalmát az /etc/init/consul.conf nevű fájlba minden szerverén és az ügyfélen is.

A kliensen csak kicsit módosítanunk kell a fájlt. Meg kell változtatnunk a leírást, hogy hivatkozzunk arra a tényre, hogy ez egy kliens gép. Meg kell változtatnunk azt a konfigurációs könyvtárat is, amelyet a tényleges konzul parancs átad.

A végfájlnak ilyennek kell kinéznie:

Mikor elkészült, mentse és zárja be a fájlt.

A fürt elindítása

Most már minden megvan a helyén ahhoz, hogy a konzul klaszter gyorsan működésbe lépjen. A folyamat viszonylag egyszerű.

Azon a kiszolgálón, amely tartalmazza a bootstrap konfigurációs fájlt (esetünkben a server1-et), használja a su billentyűt, hogy röviden áttérjen a konzul felhasználójára. Ezután hívhatjuk a consul-t és átadhatjuk a bootstrap könyvtárban argumentumként:

A szolgáltatásnak be kell indulnia, és el kell foglalnia a terminál ablakát. Indítópult módban ez a kiszolgáló önállóan választja meg vezetőnek, megalapozva ezzel a fürt kialakítását.

A többi konzuli kiszolgálón gyökérként indítsa el az imént létrehozott konzuli szolgáltatást az upstart szkript segítségével, beírva:

Ezek a kiszolgálók csatlakoznak a rendszerindító szerverhez, befejezve a fürtöt. Ezen a ponton három kiszolgálónk van, amelyek közül kettő normálisan működik, és az egyik bootstrap módban van, vagyis végrehajtó döntéseket hozhat a többi szerverrel való konzultáció nélkül.

Nem ezt akarjuk. Mindegyik szervert egyenlő feltételekkel akarjuk elérni. Most, hogy a fürt létrejött, leállíthatjuk a bootstrapped konzulpéldányt, majd normál szerverként újra beléphetünk a fürtbe.

Ehhez nyomja meg a CTRL-C gombot a rendszerindító szerver terminálján:

Most lépjen vissza a root munkamenetbe, és indítsa el a konzuli szolgáltatást, mint a többi szerverrel:

Ez azt eredményezi, hogy a korábban bootstrapolt kiszolgáló nem emelt jogosultságokkal csatlakozik a fürthöz, és végső állapotba hozza a fürtöt.

Most, hogy a fürt teljes mértékben működik, az ügyfélgépek csatlakozhatnak. Az ügyfélgépen hajtsa végre ugyanazt az eljárást, mint a root:

Az ügyfél kliensként csatlakozik a fürthöz. A fürt tagjait (kiszolgálókat és klienseket) úgy tekintheti meg, hogy bármelyik gépen konzult kér a tagjaitól:

Csatlakozás a webes felhasználói felülethez

Konfiguráltuk kliens gépünket egy webes felület tárolására a fürtön. Ezt azonban a helyi felületen szolgálják ki, vagyis nem elérhető számunkra a gép nyilvános felületét használva.

A webes felhasználói felülethez való hozzáférés érdekében létrehozunk egy SSH alagutat az ügyfélgéphez, amely az UI fájlokat tárolja. A konzul a HTTP interfészt szolgálja a 8500-as porton. A 8500-as helyi portunkat alagútba juttatjuk az ügyfélgép 8500-as portjához. Írja be a helyi számítógépre:

Ez csatlakozik a távoli géphez, alagutat hoz létre a helyi portunk és a távoli port között, majd háttérbe szorítja a kapcsolatot.

A helyi webböngészőben most a következőket írja be:

Ez megadja az alapértelmezett webes felhasználói felület oldalt:

termelési

Ezzel a felülettel ellenőrizheti szervereinek állapotát, és áttekintést kaphat a szolgáltatásairól és az infrastruktúráról.

Ha befejezte a webes felhasználói felület használatát, bezárhatja az SSH alagutat. Keresse meg a folyamat pid számát a ps parancs és a grep segítségével az átirányított portszám megkereséséhez:

A fenti kimenet kiemelt száma (azon a vonalon, amely az általunk használt alagútparancsot tartalmazza) a keresett pid szám. Ezután átadhatjuk ezt a kill parancsnak az alagút bezárásához:

Következtetés

Mostantól stabil módon kell kezelnie konzuli tagjait. A konzul fürt gyorsan és egyszerűen indítható és indítható. További csomópontok gyorsan konfigurálhatók a meglévő szerverek konfigurációs fájljainak (consul config és upstart script) másolásával.

Bár a konzuli környezetünket most úgy állítottuk be, hogy lehetővé tegyük szolgáltatásaink egyszerű kezelését, a kommunikációnkat még nem biztosítottuk teljes mértékben. A következő útmutatóban arra összpontosítunk, hogyan állítsuk be az SSL tanúsítvány érvényesítését a tagok RPC kommunikációjának titkosítása és érvényesítése érdekében.