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:
- Všetky inštancie sa musia zhodnúť na spoločnom kľúči na zápas.
- Ďalej inštancia vytvorí reláciu pomocou dohodnutého kľúča prostredníctvom správy relácií Consul a schopností KV.
- 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.
- Prípady musia neustále sledovať, či relácia znovu získa vedenie v prípade zlyhania alebo uvoľnenia.
- 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:
- Vedúci vytvorí zasadnutie v konzule.
- Potom je zvolený (zvolený.prvý).
- 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.