Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Awgrymaf eich bod yn ymgyfarwyddo â thrawsgrifiad adroddiad Alexander Sigachev Service Discovery mewn systemau gwasgaredig gan ddefnyddio Conswl fel enghraifft.

Crëwyd Darganfod Gwasanaeth fel y gallwch gysylltu rhaglen newydd â'n hamgylchedd presennol heb fawr o gost. Gan ddefnyddio Darganfod Gwasanaeth, gallwn wahanu cynhwysydd ar ffurf dociwr neu wasanaeth rhithwir o'r amgylchedd y mae'n rhedeg ynddo i'r eithaf.

Rwy'n croesawu pawb! Alexander Sigachev ydw i, rwy'n gweithio i Inventos. A heddiw byddaf yn eich cyflwyno i gysyniad o'r fath â Darganfod Gwasanaeth. Byddwn yn ystyried Darganfod Gwasanaeth gan ddefnyddio Conswl fel enghraifft.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Pa broblemau mae Darganfod Gwasanaeth yn eu datrys? Crëwyd Darganfod Gwasanaeth fel y gallwch gysylltu rhaglen newydd â'n hamgylchedd presennol heb fawr o gost. Gan ddefnyddio Darganfod Gwasanaeth, gallwn wahanu cynhwysydd ar ffurf dociwr neu wasanaeth rhithwir o'r amgylchedd y mae'n rhedeg ynddo i'r eithaf.

Beth mae'n edrych fel? Mewn enghraifft glasurol ar y we, mae hwn yn frontend sy'n derbyn cais defnyddiwr. Yna mae'n ei gyfeirio i'r pen ôl. Yn yr enghraifft hon, mae'r cydbwysedd llwyth hwn yn cydbwyso dau gefn.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Yma gwelwn ein bod yn dechrau trydydd achos y cais. Yn unol â hynny, pan fydd y cais yn cychwyn, mae'n cofrestru gyda Darganfod Gwasanaeth. Mae Gwasanaeth Darganfod yn hysbysu'r cydbwysydd llwyth. Mae Load-balancer yn newid ei ffurfwedd yn awtomatig ac mae'r ôl-wyneb newydd eisoes wedi'i gysylltu â'r gwaith. Felly, gellir ychwanegu ôl-lenni, neu, i'r gwrthwyneb, eu heithrio o'r gwaith.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Beth arall sy'n gyfleus i'w wneud â Darganfod Gwasanaeth? Gall Service Discovery storio cyfluniadau nginx, tystysgrifau, a rhestr o weinyddion backend gweithredol.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander SigachevMae Darganfod Gwasanaeth hefyd yn caniatáu ichi ganfod methiant, canfod methiannau. Beth yw'r cynlluniau posibl pan fydd methiannau'n cael eu canfod?

  • Mae'r cymhwysiad hwn yr ydym wedi'i ddatblygu yn hysbysu Darganfod Gwasanaeth ei hun ei fod yn dal i fod yn weithredol.
  • Mae Service Discovery, o'i ran ei hun, yn pleidleisio ar y cais am argaeledd.
  • Neu, defnyddir sgript neu raglen trydydd parti sy'n gwirio ein cais am argaeledd ac yn hysbysu Darganfod Gwasanaeth bod popeth yn iawn ac yn gallu gweithio, neu, i'r gwrthwyneb, bod popeth yn ddrwg ac mae angen eithrio'r achos hwn o'r cais rhag cydbwyso.

Gellir cymhwyso pob un o'r cynlluniau yn dibynnu ar ba feddalwedd a ddefnyddiwn. Er enghraifft, rydym newydd ddechrau datblygu prosiect newydd, yna gallwn yn hawdd ddarparu cynllun ar gyfer pan fydd ein cais yn hysbysu Darganfod Gwasanaeth. Neu gallwn gysylltu bod Gwasanaeth Darganfod yn gwirio.

Os cafodd y cais ei etifeddu gennym ni neu ei ddatblygu gan rywun arall, yna mae'r trydydd opsiwn yn addas yma, pan fyddwn yn ysgrifennu triniwr, ac mae hyn i gyd yn mynd i mewn i'n gwaith yn awtomatig.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Dyma un enghraifft. Llwyth-balancer ar ffurf nginx yn cael ei ail-lwytho. Mae hwn yn gyfleustodau dewisol sy'n dod gyda Conswl. Templed conswl yw hwn. Rydym yn disgrifio'r rheol. Rydyn ni'n dweud ein bod ni'n defnyddio templed (peiriant templed Golang). Pan fydd digwyddiadau'n digwydd, pan fydd hysbysiadau bod newidiadau wedi digwydd, caiff ei adfywio ac anfonir y gorchymyn “ail-lwytho” i Service Discovery. Yr enghraifft symlaf yw pan fydd nginx yn cael ei ail-gyflunio ar ddigwyddiad a'i ailgychwyn.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Beth yw Conswl?

  • Yn gyntaf oll, Darganfod Gwasanaeth ydyw.

  • Mae ganddo fecanwaith gwirio argaeledd - Gwiriad Iechyd.

  • Mae ganddo hefyd Storfa KV.

  • Ac mae'n seiliedig ar y gallu i ddefnyddio Multi Datacenter.

Ar gyfer beth y gellir defnyddio hyn i gyd? Yn KV Store gallwn storio enghreifftiau ffurfweddu. Gwiriad Iechyd gallwn wirio gwasanaeth lleol a hysbysu. Defnyddir Multi Datacenter er mwyn gallu adeiladu map o wasanaethau. Er enghraifft, mae gan Amazon sawl parth a thraffig llwybrau yn y ffordd fwyaf optimaidd fel nad oes unrhyw geisiadau diangen rhwng canolfannau data, sy'n cael eu codi ar wahân i draffig lleol, ac, yn unol â hynny, yn cael llai o oedi.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Gadewch i ni edrych ychydig ar y termau a ddefnyddir yn Consul.

  • Gwasanaeth a ysgrifennwyd yn Go. Un o fanteision rhaglen Go yw 1 ffeil ddeuaidd yr ydych newydd ei lawrlwytho. Wedi'i lansio o unrhyw le ac nid oes gennych unrhyw ddibyniaethau.
  • Ymhellach, gan ddefnyddio'r allweddi, gallwn gychwyn y gwasanaeth hwn naill ai yn y modd cleient neu yn y modd gweinydd.
  • Hefyd, mae'r briodwedd "datacenter" yn caniatáu ichi osod baner i ba ganolfan ddata y mae'r gweinydd hwn yn perthyn.
  • Consensws - yn seiliedig ar y protocol rafft. Os oes gan unrhyw un ddiddordeb, gallwch ddarllen mwy am hyn ar wefan y Conswl. Mae hwn yn brotocol sy'n eich galluogi i benderfynu ar yr arweinydd a phenderfynu pa ddata a ystyrir yn ddilys ac sydd ar gael.
  • Mae clecs yn brotocol sy'n caniatáu cyfathrebu rhwng nodau. Ar ben hynny, mae'r system hon wedi'i datganoli. O fewn un ganolfan ddata, mae pob nod yn cyfathrebu â'u cymdogion. Ac, yn unol â hynny, mae gwybodaeth am y cyflwr presennol yn cael ei drosglwyddo i'w gilydd. Gallwn ddweud mai clecs rhwng cymdogion yw hyn.
  • Clecs LAN - cyfnewid data lleol rhwng cymdogion o fewn yr un ganolfan ddata.
  • Clecs WAN - yn cael ei ddefnyddio pan fydd angen i ni gydamseru gwybodaeth rhwng dwy ganolfan ddata. Mae gwybodaeth yn mynd rhwng nodau sydd wedi'u marcio fel gweinydd.
  • RPC - yn caniatáu ichi wneud ceisiadau trwy'r cleient ar y gweinydd.

Disgrifiad o RPC. Gadewch i ni ddweud bod Conswl yn rhedeg fel cleient ar beiriant rhithwir neu weinydd corfforol. Rydym yn mynd i'r afael ag ef yn lleol. Ac yna mae'r cleient lleol yn gofyn am wybodaeth gan y gweinydd ac yn cydamseru. Gellir cyhoeddi gwybodaeth, yn dibynnu ar y gosodiadau, o'r storfa leol, neu gellir ei chydamseru â'r arweinydd, gyda meistr y gweinydd.

Mae manteision a anfanteision i'r ddau gynllun hyn. Os ydym yn gweithio gyda storfa leol, yna mae hyn yn gyflym. Os ydym yn gweithio gyda data sy'n cael ei storio ar y gweinydd, yna mae'n cymryd mwy o amser, ond rydym yn cael gwybodaeth fwy diweddar.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Os yw hwn yn cael ei ddarlunio ar ffurf graff, yna dyma lun o'r wefan. Gwelwn fod gennym dri meistr yn rhedeg. Mae un wedi'i nodi â seren fel yr arweinydd. Yn yr enghraifft hon, mae tri chleient yn cyfathrebu â'i gilydd yn lleol trwy CDU/TCP. Ac mae gwybodaeth rhwng canolfannau data yn cael ei throsglwyddo rhwng gweinyddwyr. Yma, mae cleientiaid yn rhyngweithio â'i gilydd yn lleol.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Pa API y mae Consul yn ei ddarparu? Er mwyn cael gwybodaeth, mae gan Gonswl ddau fath o APIs.

Dyma'r API DNS. Yn ddiofyn, mae Consul yn rhedeg ar borthladd 8600. Gallwn ffurfweddu procsi ceisiadau a darparu mynediad trwy ddatrys lleol, trwy DNS lleol. Gallwn ymholi fesul parth a chael gwybodaeth ymateb am y cyfeiriad IP.

HTTP API - neu gallwn ofyn am wybodaeth am wasanaeth penodol yn lleol ar borthladd 8500 a chael ymateb JSON, pa IP sydd gan y gweinydd, pa westeiwr, pa borthladd sydd wedi'i gofrestru. A gellir trosglwyddo gwybodaeth ychwanegol trwy docyn.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Beth sydd ei angen arnoch i redeg Conswl?

Yn yr opsiwn cyntaf, rydym yn nodi'r faner yn y modd datblygwr mai dyma'r modd datblygwr. Asiant yn dechrau fel gweinydd. Ac mae'n cyflawni'r swyddogaeth gyfan ar ei ben ei hun ar un peiriant. Cyfleus, cyflym ac yn ymarferol dim angen gosodiadau ychwanegol ar gyfer y cychwyn cyntaf.

Mae'r ail fodd yn rhedeg wrth gynhyrchu. Dyma lle mae lansio yn mynd ychydig yn anodd. Os nad oes gennym unrhyw fersiwn o'r conswl, yna mae'n rhaid i ni ddod â'r peiriant cyntaf yn bootstrap, h.y. y peiriant hwn, a fydd yn cymryd drosodd dyletswyddau'r arweinydd. Rydym yn ei godi, yna rydym yn codi ail enghraifft y gweinydd, gan drosglwyddo gwybodaeth iddo lle mae gennym y meistr. Codwch y trydydd. Ar ôl i ni gael tri pheiriant i fyny, rydyn ni ar y peiriant cyntaf o redeg bootstrap, gan ei ailgychwyn yn y modd arferol. Mae'r data wedi'i gysoni ac mae'r clwstwr cychwynnol eisoes i fyny.

Argymhellir eich bod yn rhedeg tri i saith achos yn y modd gweinydd. Mae hyn oherwydd y ffaith, os bydd nifer y gweinyddwyr yn cynyddu, yna mae'r amser i gydamseru gwybodaeth rhyngddynt yn cynyddu. Rhaid i nifer y nodau fod yn od i ddarparu cworwm.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Sut mae Gwiriadau Iechyd yn cael eu darparu? Yn y cyfeiriadur cyfluniad Conswl, rydym yn ysgrifennu rheol ddilysu ar ffurf Json. Yr opsiwn cyntaf yw argaeledd parth google.com yn yr enghraifft hon. Ac rydyn ni'n dweud bod angen i chi wneud y gwiriad hwn ar ôl egwyl o 30 eiliad. Felly, rydym yn gwirio bod gan ein nod fynediad i'r rhwydwaith allanol.

Yr ail opsiwn yw profi'ch hun. Rydym yn defnyddio'r cyrl arferol i dynnu localhost ar y porthladd penodedig gydag egwyl o 10 eiliad.

Mae'r gwiriadau hyn yn cael eu crynhoi a'u bwydo i mewn i Ddarganfod Gwasanaeth. Yn seiliedig ar argaeledd, mae'r nodau hyn naill ai wedi'u heithrio neu'n ymddangos yn y rhestr o beiriannau sydd ar gael ac sy'n gweithio'n gywir.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Mae Consul hefyd yn darparu rhyngwyneb UI sy'n cael ei lansio gyda baner ar wahân a bydd ar gael ar y peiriant. Mae hyn yn eich galluogi i weld gwybodaeth, a gallwch hefyd wneud rhai newidiadau.

Yn yr enghraifft hon, mae'r tab Offer ar agor. Dangosir bod tri gwasanaeth yn rhedeg, un ohonynt yw Conswl. Nifer y gwiriadau a gyflawnwyd. Ac mae yna dair canolfan ddata lle mae'r peiriannau wedi'u lleoli.

Darganfod Gwasanaeth mewn systemau gwasgaredig ar enghraifft Conswl. Alexander Sigachev

Dyma enghraifft o'r tab "Nodau". Gwelwn fod ganddynt enwau cyfansawdd gyda chyfranogiad canolfannau data. Mae hefyd yn dangos pa wasanaethau sy'n rhedeg, h.y. gwelwn nad oes unrhyw dagiau wedi'u gosod. Yn y tagiau ychwanegol hyn, gallwch chi osod rhywfaint o wybodaeth y gall y datblygwr ei defnyddio i nodi paramedrau ychwanegol.

Gallwch hefyd anfon gwybodaeth at Gonswl am statws y disgiau, am y llwyth cyfartalog.

cwestiynau

Cwestiwn: Mae gennym gynhwysydd docwr, sut i'w ddefnyddio gyda Conswl?

Ateb: Mae yna sawl dull ar gyfer cynhwysydd docwr. Un o'r rhai mwyaf cyffredin yw defnyddio cynhwysydd dociwr trydydd parti sy'n gyfrifol am gofrestru. Wrth gychwyn, mae soced docwr yn cael ei daflu ato. Mae'r holl ddigwyddiadau ar gyfer cofrestru a dadgyhoeddi cynhwysydd yn cael eu mewngofnodi i Consul.

C: Felly a yw Conswl ei hun yn rhedeg y cynhwysydd docwr?

Ateb: Nac ydw. Rydym yn rhedeg cynhwysydd docwr. Ac wrth ffurfweddu, rydym yn nodi - gwrando ar y fath ac o'r fath soced. Mae hyn tua'r un peth â gweithio gyda thystysgrif pan fyddwn yn trosglwyddo gwybodaeth am ble a beth sydd gennym.

Cwestiwn: Mae'n ymddangos bod yn rhaid bod rhyw fath o resymeg a all roi data i Gonswl y tu mewn i'r cynhwysydd docwr yr ydym yn ceisio ei gysylltu â Darganfod Gwasanaeth?

Ateb: Ddim yn union. Pan fydd yn dechrau, rydyn ni'n pasio newidynnau trwy'r amgylchedd newidiol. Gadewch i ni ddweud enw gwasanaeth, porthladd gwasanaeth. Mae'n gwrando ar y wybodaeth hon yn y gofrestr ac yn ei chofnodi i'r Conswl.

Cwestiwn: Mae gen i gwestiwn UI arall. Rydym wedi defnyddio'r UI, er enghraifft, ar weinydd cynhyrchu. Beth am ddiogelwch? Ble mae'r data'n cael ei storio? A oes unrhyw ffordd i gronni data?

Ateb: Yn yr UI, dim ond data o'r gronfa ddata ac o Darganfod Gwasanaeth. Rydym yn gosod cyfrineiriau yn y gosodiadau ein hunain.

Cwestiwn: A ellir cyhoeddi hwn ar y Rhyngrwyd?

Ateb: Mae Conswl yn cychwyn ar localhost yn ddiofyn. I gyhoeddi i'r Rhyngrwyd hwn, bydd angen i chi roi rhyw fath o ddirprwy. Rydym yn gyfrifol am y rheolau diogelwch ein hunain.

Cwestiwn: A yw'n rhoi data hanesyddol allan o'r blwch? Mae’n ddiddorol gweld yr ystadegau ar Wiriadau Iechyd. Gallwch hefyd wneud diagnosis o broblemau os bydd y gweinydd yn damwain yn aml.

Ateb: Nid wyf yn siŵr a oes manylion y gwiriadau.

Cwestiwn: Nid yw'r cyflwr presennol mor bwysig gan fod y ddeinameg yn bwysig.

Ateb: Ar gyfer dadansoddi, ie.

Cwestiwn: A yw'n well peidio â defnyddio Gwasanaeth Darganfod ar gyfer Dociwr Conswl?

Ateb: Ni fyddwn yn argymell ei ddefnyddio. Pwrpas yr adroddiad yw cyflwyno beth yw cysyniad o’r fath. Yn hanesyddol, mae wedi dod yn bell, yn fy marn i, i'r fersiwn 1af. Nawr mae yna atebion mwy cyflawn eisoes, er enghraifft, Kubernetes, sydd â hyn i gyd o dan y cwfl. Fel rhan o Kubernetes Service Discovery yn israddol i Etcd. Ond dydw i ddim mor gyfarwydd ag ef ag ydw i gyda Conswl. Felly, penderfynais wneud Darganfod Gwasanaeth gan ddefnyddio Conswl fel enghraifft.

Cwestiwn: A yw'r cynllun gydag arweinydd y gweinydd yn arafu cychwyn y cais yn ei gyfanrwydd? A sut mae Conswl yn pennu arweinydd newydd os yw'r un hwn yn dweud celwydd?

Ateb: Maent wedi disgrifio protocol cyfan. Os oes gennych ddiddordeb, gallwch ddarllen.

Cwestiwn: Mae Conswl yn gweithredu fel gweinydd llawn ac mae pob cais yn hedfan drwyddo?

Ateb: Nid yw'n gweithredu fel gweinydd cyflawn, ond mae'n cymryd parth penodol. Fel arfer mae'n dod i ben gyda service.consul. Ac yna rydym yn mynd yn rhesymegol. Nid ydym yn defnyddio enwau parth wrth gynhyrchu, sef y seilwaith mewnol, sydd fel arfer wedi'i guddio y tu ôl i caching gweinyddwyr os ydym yn gweithio trwy DNS.

Cwestiwn: Hynny yw, os ydym am gael mynediad i'r gronfa ddata, yna beth bynnag byddwn yn tynnu Conswl i ddod o hyd i'r gronfa ddata hon yn gyntaf, iawn?

Ateb: Ydw. Os ydym yn gweithio ar DNS, yna mae'n gweithio fel heb Gonswl pan fyddwn yn defnyddio enwau DNS. Fel arfer, nid yw cymwysiadau modern yn tynnu'r enw parth ym mhob cais, oherwydd rydym wedi gosod cyswllt, mae popeth yn gweithio ac yn ymarferol nid ydym yn ei ddefnyddio yn y dyfodol agos. Os bydd cyswllt wedi'i dorri, yna - ie, gofynnwn eto ble mae ein sylfaen ac ewch ato.

Sgwrsio ar gynhyrchion hashicorp — Sgwrs am ddefnyddwyr Hashicorp: Consul, Nomad, Terraform

ON Ynglŷn â gwiriadau iechyd. Mae Conswl, fel Kubernetes, yn defnyddio'r un system ar gyfer gwirio statws iechyd gwasanaeth yn seiliedig ar statws cod.

200 OK for healthy
503 Service Unavailable for unhealthy

Ffynonellau:
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/

Ffynhonnell: hab.com

Ychwanegu sylw