Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Kuv xav kom koj nyeem cov ntawv sau tseg ntawm Alexander Sigachev tsab ntawv ceeb toom Service Discovery hauv kev faib khoom siv Consul ua piv txwv.

Kev Pabcuam Discovery tau tsim kom tus nqi tsawg koj tuaj yeem txuas tau daim ntawv thov tshiab rau peb ib puag ncig uas twb muaj lawm. Siv Kev Tshawb Fawb Kev Tshawb Fawb, peb tuaj yeem sib cais ntau yam ntawm lub thawv docker lossis ib qho kev pabcuam virtual los ntawm ib puag ncig uas nws tab tom khiav.

Kuv txais tos sawv daws! Kuv yog Alexander Sigachev, Kuv ua haujlwm ntawm Inventos. Thiab hnub no kuv yuav qhia koj txog lub tswv yim zoo li Service Discovery. Cia peb saib ntawm Service Discovery siv Consul ua piv txwv.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Service Discovery daws teeb meem dab tsi? Kev Pabcuam Discovery tau tsim kom tus nqi tsawg koj tuaj yeem txuas tau daim ntawv thov tshiab rau peb ib puag ncig uas twb muaj lawm. Siv Kev Tshawb Fawb Kev Tshawb Fawb, peb tuaj yeem sib cais ntau yam ntawm lub thawv docker lossis ib qho kev pabcuam virtual los ntawm ib puag ncig uas nws tab tom khiav.

Nws zoo li cas? Hauv qhov piv txwv classic ntawm lub vev xaib, qhov no yog qhov kawg hauv ntej uas lees txais tus neeg siv qhov kev thov. Tom qab ntawd nws coj nws mus rau lub backend. Hauv qhov piv txwv no, qhov load-balancer sib npaug ob lub backends.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Ntawm no peb pom tias peb tab tom tso ib qho piv txwv thib peb ntawm daim ntawv thov. Raws li, thaum daim ntawv thov pib, nws sau npe nrog Service Discovery. Service Discovery ceeb toom load-balancer. Load-balancer hloov nws cov config txiav thiab cov backend tshiab tau muab tso rau hauv kev ua haujlwm. Nyob rau hauv txoj kev no, backends tuaj yeem ntxiv, lossis, hloov pauv, tsis suav nrog kev ua haujlwm.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Dab tsi ntxiv yog yooj yim ua nrog Service Discovery? Kev Pabcuam Discovery tuaj yeem khaws nginx configs, daim ntawv pov thawj, thiab cov npe ntawm cov servers ua haujlwm.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander SigachevKev Pabcuam Discovery tseem tso cai rau koj los txheeb xyuas qhov ua tsis tiav thiab tshawb xyuas qhov ua tsis tiav. Dab tsi yog cov txheej txheem ua tau los ntsuas qhov ua tsis tiav?

  • Daim ntawv thov no uas peb tsim cia li ceeb toom Service Discovery tias nws tseem ua haujlwm.
  • Service Discovery, rau nws feem, xaiv daim ntawv thov kom muaj.
  • Lossis peb siv tsab ntawv thib peb lossis daim ntawv thov uas tshuaj xyuas peb daim ntawv thov kom muaj thiab ceeb toom rau Service Discovery tias txhua yam zoo thiab tuaj yeem ua haujlwm, lossis, hloov pauv, txhua yam tsis zoo thiab qhov piv txwv ntawm daim ntawv thov no yuav tsum raug cais tawm ntawm kev sib npaug.

Txhua lub tswv yim tuaj yeem siv tau nyob ntawm seb peb siv software dab tsi. Piv txwv li, peb nyuam qhuav pib tsim ib txoj haujlwm tshiab, ces peb tuaj yeem muab cov tswv yim yooj yim thaum peb daim ntawv thov ceeb toom Service Discovery. Los yog peb tuaj yeem txuas qhov Service Discovery yog kuaj.

Yog tias peb tau txais daim ntawv thov los yog tsim los ntawm lwm tus, ces qhov kev xaiv thib peb yog qhov tsim nyog thaum peb sau tus tuav, thiab tag nrho cov no los rau hauv peb txoj haujlwm tau txais.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Nov yog ib qho piv txwv. Load-balancer nyob rau hauv daim ntawv ntawm nginx yog rebooted. Qhov no yog ib qho khoom siv xaiv tau uas yog muab nrog Consul. Qhov no yog consul-template. Peb piav txog txoj cai. Peb hais tias peb tab tom siv tus qauv (Golang Template Cav). Thaum cov xwm txheej tshwm sim, thaum cov ntawv ceeb toom uas hloov pauv tau tshwm sim, nws tau rov tsim dua thiab cov lus txib "reload" raug xa mus rau Service Discovery. Qhov piv txwv yooj yim tshaj plaws yog thaum nginx tau teeb tsa los ntawm qhov xwm txheej thiab rov pib dua.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Consul yog dab tsi?

  • Ua ntej tshaj plaws, qhov no yog Service Discovery.

  • Nws muaj cov txheej txheem kuaj xyuas muaj - Kev kuaj mob.

  • Nws kuj muaj KV Khw.

  • Thiab nws yog raws li lub peev xwm los siv Multi Datacenter.

Tag nrho cov no tuaj yeem siv rau dab tsi? Hauv KV Khw peb tuaj yeem khaws cov qauv teeb tsa. Kev Ntsuam Xyuas Kev Noj Qab Haus Huv peb tuaj yeem tshawb xyuas cov kev pabcuam hauv zos thiab ceeb toom. Multi Datacenter yog siv los ua daim ntawv qhia kev pabcuam. Piv txwv li, Amazon muaj ntau thaj chaw thiab kev tsheb khiav hauv txoj kev zoo tshaj plaws kom tsis muaj kev thov tsis tsim nyog ntawm cov chaw zov me nyuam, uas raug them cais los ntawm cov tsheb khiav hauv zos thiab, raws li, muaj tsawg latency.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Cia peb nkag siab me ntsis txog cov ntsiab lus uas siv hauv Consul.

  • Consul yog ib qho kev pabcuam sau hauv Go. Ib qho ntawm qhov zoo ntawm Go program yog 1 binary file uas koj nyuam qhuav rub tawm. Tua tawm los ntawm txhua qhov chaw thiab koj tsis muaj kev vam khom.
  • Tom qab ntawd, siv cov yuam sij, peb tuaj yeem pib qhov kev pabcuam no hauv hom neeg siv lossis hauv hom server.
  • Tsis tas li ntawd, tus cwj pwm "datacenter" tso cai rau koj los teeb tsa tus chij rau qhov twg cov ntaub ntawv chaw no server belongs rau.
  • Kev pom zoo - raws li txoj cai raft. Yog tias leej twg txaus siab, koj tuaj yeem nyeem ntxiv txog qhov no ntawm Consul lub vev xaib. Qhov no yog tus txheej txheem uas tso cai rau koj los txiav txim siab tus thawj coj thiab txiav txim siab seb cov nyiaj twg yog qhov siv tau thiab siv tau.
  • Kev hais lus ntxhi yog ib txoj cai uas ua rau muaj kev sib cuam tshuam ntawm cov nodes. Ntxiv mus, qhov system no yog decentralized. Nyob rau hauv ib lub chaw cov ntaub ntawv, tag nrho cov nodes sib txuas lus nrog lawv cov neeg nyob ze. Thiab, raws li, cov ntaub ntawv hais txog lub xeev tam sim no raug xa mus rau ib leeg. Peb tuaj yeem hais tias qhov no yog lus xaiv ntawm cov neeg nyob sib ze.
  • LAN Gossip - Cov ntaub ntawv hauv zos sib pauv ntawm cov neeg nyob sib ze hauv tib lub chaw cov ntaub ntawv.
  • WAN Gossip - siv thaum peb xav tau synchronize cov ntaub ntawv ntawm ob lub chaw cov ntaub ntawv. Cov ntaub ntawv ntws nruab nrab ntawm cov nodes uas tau cim tias yog server.
  • RPC - tso cai rau koj ua cov lus thov los ntawm tus neeg siv khoom ntawm lub server.

Kev piav qhia ntawm RPC. Cia peb hais tias Consul tab tom khiav raws li tus neeg siv khoom ntawm lub tshuab virtual lossis lub cev server. Peb hu rau nws hauv zos. Thiab tom qab ntawd tus neeg siv hauv zos thov cov ntaub ntawv los ntawm lub server thiab synchronized. Nyob ntawm qhov chaw, cov ntaub ntawv tuaj yeem muab rov qab los ntawm cov cache hauv zos, lossis tuaj yeem synchronized nrog tus thawj coj, nrog tus tswv server.

Ob lub tswv yim no muaj ob qho zoo thiab qhov tsis zoo. Yog hais tias peb ua hauj lwm nrog ib lub zos cache, ces nws yog ceev. Yog tias peb ua haujlwm nrog cov ntaub ntawv khaws cia hauv server, nws yuav siv sijhawm ntev dua, tab sis peb tau txais cov ntaub ntawv tseem ceeb dua.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Yog hais tias koj depict no graphically, ces qhov no yog daim duab ntawm lub site. Peb pom tias peb muaj peb tus tswv khiav. Ib qho yog cim nrog lub hnub qub ua tus thawj coj. Hauv qhov piv txwv no, muaj peb tus neeg siv khoom sib pauv cov ntaub ntawv hauv zos nrog ib leeg ntawm UDP / TCP. Thiab cov ntaub ntawv ntawm cov chaw zov me nyuam yog pauv ntawm cov servers. Ntawm no cov neeg siv khoom sib cuam tshuam nrog ib leeg hauv zos.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Consul muab API dab tsi? Txhawm rau kom tau txais cov ntaub ntawv, Consul muaj ob hom API.

Qhov no yog DNS API. Los ntawm lub neej ntawd, Consul khiav ntawm chaw nres nkoj 8600. Peb tuaj yeem teeb tsa kev thov npe thiab muab kev nkag mus los ntawm kev daws teeb meem hauv zos, los ntawm DNS hauv zos. Peb tuaj yeem nug los ntawm sau npe thiab tau txais cov ntaub ntawv IP chaw nyob hauv cov lus teb.

HTTP API - lossis peb tuaj yeem thov cov ntaub ntawv hauv zos hais txog ib qho kev pabcuam tshwj xeeb ntawm chaw nres nkoj 8500 thiab tau txais JSON cov lus teb, IP server muaj dab tsi, tus tswv tsev twg, qhov chaw nres nkoj twg tau sau npe. Thiab cov ntaub ntawv ntxiv tuaj yeem kis tau los ntawm token.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Koj xav tau dab tsi los khiav Consul?

Hauv thawj qhov kev xaiv, hauv hom tsim tawm peb qhia tus chij tias qhov no yog hom tsim tawm. Tus neeg sawv cev pib ua lub server. Thiab nws ua haujlwm tag nrho ntawm nws tus kheej ntawm ib lub tshuab. Yooj yim, nrawm thiab xyaum tsis muaj qhov chaw ntxiv ntxiv rau qhov pib thawj zaug.

Qhov thib ob hom yog tso tawm nyob rau hauv ntau lawm. Qhov no yog qhov chaw pib tau me ntsis nyuaj. Yog hais tias peb tsis muaj ib qho version ntawm tus consul, ces peb yuav tsum coj thawj lub tshuab mus rau hauv bootstrap, piv txwv li lub tshuab no, uas yuav coj lub luag hauj lwm ntawm tus thawj coj. Peb tsa nws, ces peb tsa qhov piv txwv thib ob ntawm tus neeg rau zaub mov, dhau nws cov ntaub ntawv uas peb tus tswv nyob. Peb tsa tus thib peb. Tom qab peb muaj peb lub tshuab nce, peb rov pib dua hauv hom qub ntawm thawj lub tshuab los ntawm kev khiav bootstrap. Cov ntaub ntawv yog synchronized thiab thawj pawg twb tau.

Nws raug pom zoo kom khiav peb mus rau xya zaus hauv hom server. Qhov no yog vim lub fact tias yog hais tias tus naj npawb ntawm servers loj hlob, ces lub sij hawm rau synchronizing cov ntaub ntawv ntawm lawv nce. Tus naj npawb ntawm cov nodes yuav tsum yog khib kom ntseeg tau pawg.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Kev kuaj mob zoo li cas? Peb sau txoj cai pov thawj hauv daim ntawv ntawm Json hauv Consul configuration directory. Thawj qhov kev xaiv yog qhov muaj nyob ntawm google.com sau hauv qhov piv txwv no. Thiab peb hais tias qhov kev kuaj xyuas no yuav tsum tau ua nyob rau ntawm 30 vib nas this. Txoj kev no peb xyuas tias peb cov node tau nkag mus rau lwm lub network.

Qhov kev xaiv thib ob yog kuaj koj tus kheej. Peb siv cov curl li niaj zaus hu rau localhost ntawm qhov chaw nres nkoj teev ntawm lub sijhawm ntawm 10 vib nas this.

Cov tshev no tau sau tseg thiab xa mus rau Service Discovery. Raws li qhov muaj, cov nodes raug cais tawm lossis tshwm sim hauv cov npe ntawm cov tshuab ua haujlwm raug thiab raug.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Consul tseem muab UI interface, uas tau pib nrog tus chij cais thiab yuav muaj nyob rau ntawm lub tshuab. Qhov no tso cai rau koj saib cov ntaub ntawv thiab koj tuaj yeem hloov qee yam.

Hauv qhov piv txwv no, "Kev Pabcuam" tab qhib. Nws tau pom tias peb qhov kev pabcuam tau ua haujlwm, ib qho ntawm lawv yog Consul. Tus naj npawb ntawm cov tshev tau ua. Thiab muaj peb lub chaw cov ntaub ntawv nyob rau hauv uas cov cav tov nyob.

Kev Tshawb Nrhiav Kev Pabcuam hauv kev faib khoom siv cov piv txwv ntawm Consul. Alexander Sigachev

Nov yog ib qho piv txwv ntawm Nodes tab. Peb pom tias lawv muaj cov npe sib xyaw nrog cov chaw khaws ntaub ntawv. Nws kuj qhia tau hais tias cov kev pabcuam twg khiav, piv txwv li peb pom tias tsis muaj cov cim npe tau teeb tsa. Cov cim npe ntxiv no tuaj yeem muab qee cov ntaub ntawv uas tus tsim tawm tuaj yeem siv los qhia cov kev txwv ntxiv.

Koj tseem tuaj yeem xa cov ntaub ntawv mus rau Consul txog cov xwm txheej ntawm cov disks thiab nruab nrab load.

Lus nug

Lus Nug: Peb muaj lub thawv docker, yuav siv li cas nrog Consul?

Teb: Muaj ntau txoj hauv kev rau docker thawv. Ib qho ntawm feem ntau yog siv lub thawv thib peb docker lub luag haujlwm rau kev sau npe. Thaum pib, lub qhov (socket) docker raug xa mus rau nws. Tag nrho cov thawv sau npe thiab kev tshaj tawm cov xwm txheej raug kaw hauv Consul.

Lo lus nug: Yog li Consul nws tus kheej pib lub thawv docker?

Teb: Tsis yog. Peb tab tom khiav lub thawv docker. Thiab thaum configuring peb qhia - mloog zoo li thiab xws li ib tug socket. Qhov no yog kwv yees ib yam li peb ua haujlwm nrog daim ntawv pov thawj, thaum peb upload cov ntaub ntawv hais txog qhov twg thiab peb muaj dab tsi.

Lo lus nug: Nws hloov tawm tias hauv Docker thawv uas peb tab tom sim txuas rau Service Discovery yuav tsum muaj qee yam kev xav uas tuaj yeem xa cov ntaub ntawv mus rau Consul?

Teb: Tsis yog tiag. Thaum nws pib, peb dhau qhov sib txawv los ntawm ib puag ncig hloov pauv. Cia peb hais lub npe kev pabcuam, chaw pabcuam. Tus sau npe mloog cov ntaub ntawv no thiab nkag mus rau hauv Consul.

Lus Nug: Kuv muaj lwm lo lus nug txog UI. Peb xa cov UI, piv txwv li, ntawm lub server tsim khoom. Yuav ua li cas txog kev ruaj ntseg? Cov ntaub ntawv khaws cia nyob qhov twg? Puas muaj peev xwm ua tau qee cov ntaub ntawv khaws tseg?

Teb: Hauv UI muaj cov ntaub ntawv los ntawm database thiab los ntawm Service Discovery. Peb teeb tus password hauv qhov chaw peb tus kheej.

Lus Nug: Qhov no puas tuaj yeem luam tawm hauv Is Taws Nem?

Teb: Los ntawm lub neej ntawd, Consul pib ntawm localhost. Txhawm rau tshaj tawm hauv Is Taws Nem, koj yuav tsum tau nruab qee hom npe. Peb muaj lub luag haujlwm rau peb tus kheej txoj cai kev nyab xeeb.

Lus Nug: Puas yog nws muab cov ntaub ntawv keeb kwm tawm ntawm lub thawv? Nws yog qhov nthuav kom saib cov txheeb cais ntawm Kev Ntsuam Xyuas Kev Noj Qab Haus Huv. Koj tuaj yeem kuaj xyuas cov teeb meem yog tias lub server feem ntau ua tsis tiav.

Teb: Kuv tsis paub meej tias muaj cov ntsiab lus ntawm cov tshev nyob ntawd.

Nqe Lus Nug: Lub xeev tam sim no tsis tseem ceeb npaum li qhov dynamics.

Teb: Rau kev tsom xam – yog.

Lus Nug: Puas yog nws zoo dua tsis siv Service Discovery rau Consul docker?

Teb: Kuv tsis xav kom siv nws. Lub hom phiaj ntawm tsab ntawv ceeb toom yog los qhia seb lub tswv yim no muaj li cas. Keeb kwm, nws tau ua nws txoj hauv kev, hauv kuv lub tswv yim, mus rau 1st version. Tam sim no muaj ntau cov kev daws teeb meem, piv txwv li, Kubernetes, uas muaj tag nrho cov no hauv qab hood. Raws li ib feem ntawm Kubernetes Service Discovery yog qis dua Etcd. Tab sis kuv tsis paub zoo li kuv nrog Consul. Yog li ntawd, kuv txiav txim siab ua Service Discovery siv Consul ua piv txwv.

Nqe Lus Nug: Puas yog lub tswv yim nrog tus thawj coj server qeeb qeeb pib ntawm daim ntawv thov tag nrho? Thiab Consul yuav txiav txim siab li cas tus thawj coj tshiab yog tias tus no dag?

Teb: Lawv muaj tag nrho cov txheej txheem piav qhia. Yog koj txaus siab nyeem tau.

Lus Nug: Consul ua tus neeg rau zaub mov puv rau peb thiab txhua qhov kev thov ya mus los ntawm nws?

Teb: Nws tsis ua raws li tus neeg rau zaub mov tag nrho, tab sis yuav siv sij hawm dhau ib cheeb tsam. Nws feem ntau xaus nrog service.consul. Thiab tom qab ntawd peb tsiv mus rau qhov laj thawj. Peb tsis siv cov npe sau npe hauv kev tsim khoom, tab sis theej cov txheej txheem sab hauv, uas feem ntau muab zais tom qab server caching yog tias peb ua haujlwm siv DNS.

Nqe Lus Nug: Qhov ntawd yog, yog tias peb xav nkag mus rau lub database, ces nyob rau hauv txhua rooj plaub peb yuav rub Consul mus nrhiav cov ntaub ntawv no ua ntej, puas yog?

Teb: Yog. Yog tias peb ua haujlwm siv DNS, ces nws ua haujlwm zoo ib yam li tsis muaj Consul thaum peb siv DNS npe. Feem ntau, cov ntawv thov niaj hnub tsis rub lub npe sau npe hauv txhua qhov kev thov, vim tias peb tau teeb tsa kev sib txuas, txhua yam ua haujlwm thiab yav tom ntej peb xyaum tsis siv nws. Yog tias kev sib txuas tau tawg, ces yog, peb rov nug seb peb lub hauv paus nyob qhov twg thiab mus rau nws.

hashicorp cov khoom sib tham - Hashicorp tus neeg siv tham: Consul, Nomad, Terraform

PS Hais txog kev kuaj mob. Consul, zoo li Kubernetes, siv tib lub kaw lus rau kev tshuaj xyuas qhov muaj sia nyob ntawm cov kev pabcuam raws li txoj cai lij choj.

200 OK for healthy
503 Service Unavailable for unhealthy

Qhov chaw:
https://www.consul.io/docs/agent/checks.html
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
https://thoslin.github.io/microservice-health-check-in-kubernetes/

Tau qhov twg los: www.hab.com

Ntxiv ib saib