Voľby do vedenia s konzulom

1. Prehľad

V tomto návode uvidíme, ako vedenie volieb s konzulom pomôže zabezpečiť stabilitu údajov. Poskytneme praktický príklad toho, ako spravovať distribuované blokovanie v súbežných aplikáciách.

2. Čo je konzul?

Consul je nástroj otvoreného zdroja, ktorý poskytuje register služieb a zisťovanie založené na kontrole stavu. Ďalej obsahuje webové grafické užívateľské rozhranie (GUI) na prezeranie a ľahkú interakciu s konzulom. Pokrýva tiež ďalšie možnosti správy relácií a ukladania kľúčov / hodnôt (KV).

V ďalších častiach sa zameriame na to, ako môžeme použite Consul na správu relácií a KV obchod na výber lídra v aplikáciách s viacerými inštanciami.

3. Základy konzula

Agent Consul je najdôležitejšou súčasťou bežiacou na každom uzle klastra Consul. Má na starosti kontrolu zdravia; registrácia, objavovanie a riešenie služieb; ukladanie konfiguračných údajov; a oveľa viac.

Môže nabehnúť konzulský agent dva rôzne režimy - Server a agent.

Hlavný zodpovednosti servera Consul majú odpovedať na otázky prichádzajúce od agentov a zvoliť si vodcu. Vedenie je vybrané pomocou protokolu konsenzu, aby sa zaistila konzistencia (definovaná v CAP) na základe Raftovho algoritmu.

Tento článok sa netýka podrobností o tom, ako konsenzus funguje. Napriek tomu stojí za zmienku, že uzly môžu byť v jednom z troch stavov: vodca, kandidát alebo nasledovník. Tiež ukladá údaje a reaguje na dotazy prichádzajúce od agentov.

Agent je ľahší ako server Consul. Je zodpovedný za kontrolu stavu zaregistrovaných služieb a za preposielanie dotazov na server. Pozrime sa na jednoduchý diagram klastra konzulov:

Konzul môže pomôcť aj inými spôsobmi - napríklad pri súbežných aplikáciách, v ktorých musí byť vodcom jedna inštancia.

Pozrime sa v nasledujúcich častiach, ako môže Consul prostredníctvom správy relácií a obchodu KV poskytnúť túto dôležitú funkciu.

4. Voľby do vedenia s konzulom

V distribuovaných nasadeniach je vedúcou služba držiaca zámok. Preto je pre vysoko dostupné systémy rozhodujúce riadenie zámkov a vedúcich.

Consul poskytuje ľahko použiteľnú správu KV obchodov a relácií. Tieto funkcie slúžia na budovanie volieb vodcov, takže sa poďme naučiť zásady, ktoré sú za nimi.

4.1. Súboj o vedenie

Prvá vec, ktorú všetky inštancie patriace do distribuovaného systému urobia, je súťaž o vedenie. Tvrdenie, že ste vodcom, obsahuje sériu krokov:

  1. Všetky inštancie sa musia zhodnúť na spoločnom kľúči na zápas.
  2. Ďalej inštancia vytvorí reláciu pomocou dohodnutého kľúča prostredníctvom správy relácií Consul a schopností KV.
  3. Po tretie, mali by získať sedenie. Ak je návratná hodnota pravda, zámok patrí inštancii, a ak nepravdivé, inštancia je nasledovníkom.
  4. Prípady musia neustále sledovať, či relácia znovu získa vedenie v prípade zlyhania alebo uvoľnenia.
  5. Nakoniec môže vedúci reláciu uvoľniť a proces sa začína odznova.

Len čo je vedúci zvolený, zvyšné inštancie používajú konzula KV a správu relácií na zistenie vedúceho pomocou:

  • Získanie dohodnutého kľúča
  • Získanie informácií o relácii s cieľom spoznať vedúceho

4.2. Praktický príklad

Kľúč a hodnotu musíme vytvoriť spolu s reláciou v konzole s viacerými spustenými inštanciami. Aby sme tomu pomohli, použijeme otvorenú implementáciu Java od spoločnosti Kinguin Digital Limited Leadership Consul.

Najprv zahrňme závislosť:

 com.github.kinguinltdhk vedenie-konzul $ {kinguinltdhk.version} com.ecwid.consul consul-api 

Vylúčili sme konzul-api závislosť, aby sa zabránilo kolíziám na rôznych verziách v Jave.

Pre spoločný kľúč použijeme:

služby /% s / vedúci

Vyskúšajme celý postup pomocou jednoduchého úryvku:

nový SimpleConsulClusterFactory () .mode (SimpleConsulClusterFactory.MODE_MULTI) .debug (true) .build () .asObservable () .subscribe (i -> System.out.println (i));

Potom vytvoríme klaster s viacerými inštanciami s asObservable () na prístup k udalostiam predplatiteľom. Vedúci vytvorí reláciu v konzule a všetky inštancie reláciu overia, aby potvrdili vedenie.

Nakoniec prispôsobíme konfiguráciu konzula a správu reláciea dohodnutý kľúč medzi inštanciami voľby vodcu:

cluster: leader: serviceName: cluster serviceId: node-1 consul: host: localhost port: 8500 discovery: enabled: false session: ttl: 15 refresh: 7 voleb: envelopeTemplate: services /% s / leader

4.3. Ako to otestovať

Existuje niekoľko možností na inštaláciu konzula a spustenie agenta.

Jednou z možností nasadenia konzula je prostredníctvom kontajnerov. Použijeme obraz Consul Docker dostupný v Docker Hub, najväčšom úložisku na svete pre obrázky kontajnerov.

Consula nasadíme pomocou Dockeru spustením príkazu:

docker run -d --name consul -p 8500: 8500 -e CONSUL_BIND_INTERFACE = eth0 konzul

Konzul teraz beží a mal by byť k dispozícii na adrese localhost: 8500.

Vykonajme úryvok a skontrolujte vykonané kroky:

  1. Vedúci vytvorí zasadnutie v konzule.
  2. Potom je zvolený (zvolený.prvý).
  3. Zvyšok inštancií sleduje, kým sa relácia neuvoľní:
INFO: aktívny viac režim INFO INFO: Relácia bola vytvorená e11b6ace-9dc7-4e51-b673-033f8134a7d4 INFO: Obnova relácie je naplánovaná na frekvenciu 7 sekúnd INFO: Nastavenie frekvencie hlasovania na frekvenciu 10 sekúnd ElectionMessage (stav = zvolený, hlasovanie = Hlasovanie {sessionId = 'e11b6ace -9dc7-4e51-b673-033f8134a7d4 ', serviceName = "cluster-app", serviceId = "node-1"}, chyba = null) ElectionMessage (status = zvolený.prvý, hlas = hlasovať {sessionId =' e11b6ace-9dc7- 4e51-b673-033f8134a7d4 ', serviceName = "cluster-app", serviceId = "node-1"}, chyba = null) ElectionMessage (status = zvolený, hlasovať = hlasovať {sessionId =' e11b6ace-9dc7-4e51-b673-033f8134a7d4 ', serviceName = "cluster-app", serviceId = "node-1"}, chyba = null) 

Consul taktiež poskytuje webové grafické užívateľské rozhranie dostupné na // localhost: 8500 / ui.

Otvorme prehliadač a kliknutím na sekciu kľúč - hodnota potvrdíme, že sa relácia vytvorila:

Jeden zo súbežných inštancií preto vytvoril reláciu pomocou dohodnutého kľúča pre aplikáciu. Iba po uvoľnení relácie sa môže proces začať odznova a nová inštancia sa môže stať lídrom.

5. Záver

V tomto článku sme si ukázali základy vodcovských volieb vo vysoko výkonných aplikáciách s viacerými inštanciami. Predviedli sme, ako môžu funkcie Consul pre správu relácií a ukladanie KV pomôcť získať zámok a zvoliť vodcu.

Ako vždy, kód je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found