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:

  1. Valamennyi példánynak meg kell állapodnia egy közös vitatható kulcsban.
  2. 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.
  3. 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.
  4. Az eseteknek folyamatosan figyelniük kell a munkamenetre, hogy kudarc vagy elengedés esetén ismét megszerezzék a vezetést.
  5. 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:

  1. A vezető munkamenetet hoz létre a Consulban.
  2. Aztán megválasztják (megválasztották.először).
  3. 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.