Vezetőválasztás konzullal
1. Áttekintés
Ebben az oktatóanyagban meglátjuk, hogyan segít a Consul vezetői választása az adatok stabilitásának biztosításában. Praktikus példát adunk arra, hogyan kezelhető az elosztott zárolás egyidejű alkalmazásokban.
2. Mi a konzul?
A Consul egy nyílt forráskódú eszköz, amely szolgáltatás-nyilvántartást és felderítést biztosít az állapotfelmérés alapján. Ezenkívül tartalmaz egy webes grafikus felhasználói felületet (GUI), amely lehetővé teszi a Consul megtekintését és a vele való egyszerű interakciót. Ez magában foglalja a munkamenet-kezelés és a Key-Value (KV) tárolás extra képességeit is.
A következő szakaszokban arra összpontosítunk, hogy hogyan tudunk a Consul munkamenet-kezelésével és a KV-tárolóval válassza ki a vezetőt a több példánnyal rendelkező alkalmazásokban.
3. A konzul alapjai
A Consul ügynök a legfontosabb összetevő, amely a Consul-fürt minden csomópontján fut. Feladata az egészségügyi ellenőrzés; szolgáltatások regisztrálása, felfedezése és megoldása; konfigurációs adatok tárolása; és még sok más.
A konzuli ügynök befuthat két különböző mód - Szerver és ügynök.
A fő a Consul Server felelősségei hogy megválaszolják az ügynökök kérdéseit és megválasztják a vezetőt. A vezetést a konszenzusos protokoll segítségével választják ki, hogy biztosítsák a konzisztenciát (a CAP meghatározása szerint) a Raft algoritmus alapján.
A cikk nem terjed ki a konszenzus működésének részleteire. Mindazonáltal érdemes megemlíteni, hogy a csomópontok a három állam egyikében lehetnek: vezető, jelölt vagy követő. Ezenkívül tárolja az adatokat és válaszol az ügynököktől érkező kérdésekre.
Az ügynök könnyebb mint a Consul szerver. Felelős a regisztrált szolgáltatások állapotának ellenőrzéséért és a lekérdezések továbbításáról a szerverre. Nézzük meg a Consul-fürt egyszerű diagramját:
A konzul más módon is segíthet - például egyidejű alkalmazásokban, amelyekben egy példánynak kell vezetőnek lennie.
Lássuk a következő szakaszokban, hogy a Consul miként tudja a munkamenet-kezelés és a KV tárolás révén biztosítani ezt a fontos képességet.
4. Vezetőválasztás konzullal
Elosztott telepítéseknél a zárat tartó szolgáltatás a vezető. Ezért a jól elérhető rendszerek esetében létfontosságú a zárak és vezetők kezelése.
A konzul könnyen használható KV tárolást és munkamenet-kezelést biztosít. Ezek a funkciók a vezetőválasztás kiépítését szolgálják, ezért ismerjük meg a mögöttük álló elveket.
4.1. Vezetői verseny
Az első dolog, hogy az elosztott rendszerhez tartozó összes példány versenyez a vezetésért. A vezetővé válás számos lépést tartalmaz:
- Valamennyi példánynak meg kell állapodnia egy közös vitatható kulcsban.
- Ezután a példány a megbeszélt kulccsal létrehoz egy munkamenetet a Consul-munkamenet-kezelés és a KV-képességek révén.
- Harmadszor, meg kell szerezniük az ülést. Ha a visszatérési érték igaz, a zár a példányhoz tartozik, és ha hamis, a példány követője.
- Az eseteknek folyamatosan figyelniük kell a munkamenetre, hogy kudarc vagy elengedés esetén ismét megszerezzék a vezetést.
- Végül a vezető elengedheti a munkamenetet, és a folyamat újra kezdődik.
Miután megválasztották a vezetőt, a többi példány a KV konzult és a munkamenet-menedzsmentet használja a vezető felfedezéséhez:
- A megbeszélt kulcs lekérése
- A munkamenettel kapcsolatos információk megismerése a vezetővel
4.2. Gyakorlati példa
A kulcsot és az értéket együtt kell létrehoznunk a Consul munkamenetével, több futó példánnyal. Ebben segítünk a Kinguin Digital Limited Leadership Consul nyílt forráskódú Java megvalósításában.
Először tegyük bele a függőséget:
com.github.kinguinltdhk vezetõ-konzul $ {kinguinltdhk.version} com.ecwid.consul consul-api
Kizártuk a konzul-api függőség az ütközések elkerülése érdekében a Java különböző verzióin.
A közös kulcshoz a következőket fogjuk használni:
szolgáltatások /% s / vezető
Teszteljük az egész folyamatot egy egyszerű kivonattal:
új SimpleConsulClusterFactory () .mode (SimpleConsulClusterFactory.MODE_MULTI) .debug (true) .build () .asObservable () .subscribe (i -> System.out.println (i));
Ezután létrehozunk egy fürtöt, amelynek több példánya van asObservable () hogy előfizetők hozzáférhessenek az eseményekhez. A vezető munkamenetet hoz létre a Consulban, és az összes példány igazolja a munkamenetet a vezetés megerősítéséhez.
Végül testre szabjuk a konzul konfigurációját és a munkamenet-kezelést, valamint a vezető megválasztásának példái közötti egyeztetett kulcs:
klaszter: vezető: serviceName: fürt serviceId: csomópont-1 konzul: host: localhost port: 8500 felfedezés: engedélyezve: hamis munkamenet: ttl: 15 frissítés: 7 választás: borítékSablon: services /% s / leader
4.3. Hogyan kell tesztelni
Számos lehetőség van a Consul telepítésére és egy ügynök futtatására.
A Consul bevetésének egyik lehetősége a konténerek. A világ legnagyobb konténerképek tárházában, a Docker Hubban elérhető Consul Docker képet fogjuk használni.
A Docker segítségével telepítjük a Consult a következő parancs futtatásával:
dokkoló futtatása -d - név konzul -p 8500: 8500 -e CONSUL_BIND_INTERFACE = eth0 konzul
A konzul most fut, és elérhetőnek kell lennie a címen helyi gazda: 8500.
Végezzük el a kódrészletet, és ellenőrizzük az elvégzett lépéseket:
- A vezető munkamenetet hoz létre a Consulban.
- Aztán megválasztják (megválasztották.először).
- A többi példány a munkamenet kiadásáig figyel:
INFO: több módú aktív INFO: A munkamenet létrehozva -9dc7-4e51-b673-033f8134a7d4 ', serviceName = "cluster-app", serviceId = "csomópont-1"}, hiba = null) ElectionMessage (status = választott.első, szavazás = Szavazás {sessionId =' e11b6ace-9dc7- 4e51-b673-033f8134a7d4 ', serviceName = "cluster-app", serviceId = "csomópont-1"}, hiba = null) ElectionMessage (állapot = megválasztva, szavazás = szavazás {sessionId =' e11b6ace-9dc7-4e51-b673-033f8134a7d4 ', serviceName = "cluster-app", serviceId = "node-1"}, error = null)
A konzul egy webes grafikus felhasználói felületet is biztosít, amely elérhető a címen // localhost: 8500 / ui.
Nyissunk meg egy böngészőt, és kattintsunk a kulcsérték szakaszra annak megerősítéséhez, hogy a munkamenet létrejött:
Ezért az egyik egyidejű példány létrehozott egy munkamenetet az alkalmazás egyeztetett kulcsával. Csak a munkamenet kiadása után indulhat el a folyamat újból, és egy új példány válhat vezetővé.
5. Következtetés
Ebben a cikkben bemutattuk a Leadership Election alapjait nagy teljesítményű alkalmazásokban, több példánnyal. Bemutattuk, hogy a Consul munkamenet-kezelése és KV tárolási képességei hogyan segíthetnek a zár megszerzésében és a vezető kiválasztásában.
Mint mindig, a kód elérhető a GitHubon.