{"id":56387,"date":"2020-02-12T00:00:00","date_gmt":"2020-02-11T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev"},"modified":"2020-02-18T14:04:39","modified_gmt":"2020-02-18T11:04:39","slug":"service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","title":{"rendered":"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>V\u0103 invit s\u0103 lua\u021bi cuno\u0219tin\u021b\u0103 de transcrierea raportului lui Alexander Sigachev despre Service Discovery \u00een sistemele distribuite, folosind ca exemplu Consul.<\/strong><\/p>\n<p><\/p>\n<p>Service Discovery este creat pentru a permite conectarea unui nou aplica\u021bie \u00een deja existentul nostru mediu cu costuri minime. Folosind Service Discovery, putem separa maximum fie un container sub form\u0103 de Docker, fie un serviciu virtual de mediu \u00een care este lansat. <\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"IYWsZ8HFrCw\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/IYWsZ8HFrCw\/hqdefault.jpg\" alt=\"Reda\u021bi video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Salut tuturor! Sunt Alexander Sigachev \u0219i lucrez la compania Inventos. Ast\u0103zi v\u0103 voi familiariza cu conceptul de Service Discovery, pe care \u00eel vom analiza prin intermediul exemplului Consul.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/8078ef6ee7af4e52e977deed5f1f42ab.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce probleme rezolv\u0103 Service Discovery? Service Discovery este creat pentru a permite conectarea unui nou aplica\u021bie \u00een deja existentul nostru mediu cu costuri minime. Folosind Service Discovery, putem separa maximum fie un container sub form\u0103 de Docker, fie un serviciu virtual de mediu \u00een care este lansat. <\/p>\n<p><\/p>\n<p>Cum arat\u0103 acest lucru? \u00centr-un exemplu clasic pe web - este frontend-ul care prime\u0219te solicit\u0103rile utilizatorului. Apoi, acesta efectueaz\u0103 rutarea c\u0103tre backend. \u00cen acest exemplu, un load-balancer echilibreaz\u0103 \u00eentre dou\u0103 backend-uri.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/10d23c4c51543161fc2034145776461b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aici vedem c\u0103 lans\u0103m a treia instan\u021b\u0103 a aplica\u021biei. Astfel, c\u00e2nd aplica\u021bia este lansat\u0103, aceasta se \u00eenregistreaz\u0103 \u00een Service Discovery. Service Discovery notific\u0103 load-balancer-ul. Load-balancer-ul \u00ee\u0219i schimb\u0103 automat configura\u021bia, iar noul backend \u00eencepe s\u0103 func\u021bioneze. Astfel, backend-uri pot fi ad\u0103ugate sau, dimpotriv\u0103, excluse din func\u021bionare.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/88a768894d79449ffb06fbbfa5cd32a8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce altceva este convenabil s\u0103 facem cu ajutorul Service Discovery? \u00cen Service Discovery pot fi stocate configura\u021biile Nginx, certificatele \u0219i lista serverelor backend active.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/8ebfb5f1c8cf44999904159af9695da9.jpeg\" style=\"display:block;margin: 0 auto;\" \/>De asemenea, Service Discovery permite detectarea unui e\u0219ec, identificarea defec\u021biunilor. Ce scheme pot exista pentru a detecta e\u0219ecurile?<\/p>\n<p><\/p>\n<ul>\n<li>Aceasta este aplica\u021bia pe care am dezvoltat-o, care notific\u0103 singur\u0103 Service Discovery c\u0103 este \u00eenc\u0103 func\u021bional\u0103. <\/li>\n<li>Service Discovery, la r\u00e2ndul s\u0103u, interogheaz\u0103 aplica\u021bia pentru a verifica disponibilitatea acesteia.<\/li>\n<li>Sau se folose\u0219te un script sau o aplica\u021bie extern\u0103 care verific\u0103 disponibilitatea aplica\u021biei noastre \u0219i notific\u0103 Service Discovery c\u0103 totul este bine \u0219i poate func\u021biona sau, dimpotriv\u0103, c\u0103 ceva nu este \u00een regul\u0103 \u0219i este necesar\u0103 excluderea acestei instan\u021be a aplica\u021biei din balansare.<\/li>\n<\/ul>\n<p><\/p>\n<p>Fiecare schem\u0103 poate fi aplicat\u0103 \u00een func\u021bie de software-ul pe care \u00eel folosim. De exemplu, dac\u0103 am \u00eenceput s\u0103 dezvolt\u0103m un nou proiect, putem s\u0103 asigur\u0103m f\u0103r\u0103 probleme o schem\u0103 \u00een care aplica\u021bia noastr\u0103 notific\u0103 Service Discovery. Sau putem conecta Service Discovery pentru a efectua verificarea.<\/p>\n<p><\/p>\n<p>Dac\u0103 aplica\u021bia ne-a fost l\u0103sat\u0103 \u00een urma altcuiva sau a fost dezvoltat\u0103 de o ter\u021b\u0103 parte, atunci se potrive\u0219te a treia variant\u0103, c\u00e2nd scriem un handler, iar totul se integreaz\u0103 automat \u00een munca noastr\u0103.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/ce4c5b452d526058b552a65926b9de58.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aceasta este unul dintre exemple. Load-balancerul sub form\u0103 de nginx se re\u00eencarc\u0103. Este o utilitate suplimentar\u0103 care vine \u00eempreun\u0103 cu Consul. Acesta este consul-template. Descriem o regul\u0103. Spunem c\u0103 folosim un \u0219ablon (\u0218ablonizator Golang). La efectuarea evenimentelor, la notific\u0103rile c\u0103 s-au produs modific\u0103ri, acesta se reg\u0103se\u0219te \u0219i Service Discovery prime\u0219te comanda \u201ereload\u201d. Un exemplu simplu, c\u00e2nd nginx se reconfigureaz\u0103 \u0219i se reporne\u0219te la un eveniment.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/d829f882a52c97420750893f78bacc18.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce este Consul?<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>\u00cen primul r\u00e2nd, este un Service Discovery. <\/p>\n<p>\n<\/li>\n<li>\n<p>Are un mecanism de verificare a disponibilit\u0103\u021bii \u2013 Health Checking.<\/p>\n<p>\n<\/li>\n<li>\n<p>De asemenea, are un KV Store.<\/p>\n<p>\n<\/li>\n<li>\n<p>\u0218i \u00een baza sa este posibil\u0103 utilizarea Multi Datacenter.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>La ce poate fi folosit tot acest lucru? \u00cen KV Store putem stoca exemple de configur\u0103ri. Prin Health Checking putem verifica serviciul local \u0219i trimite notific\u0103ri. Multi Datacenter este folosit pentru a construi o hart\u0103 a serviciilor. De exemplu, Amazon are mai multe zone \u0219i \u00ee\u0219i rooteaz\u0103 traficul cel mai optim, pentru a evita cererile suplimentare \u00eentre data center-e, care sunt tarifate separat de traficul local \u0219i, prin urmare, au o laten\u021b\u0103 mai mic\u0103. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/7594fcb0dfd05193d95214d9694c39e8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>S\u0103 ne familiariz\u0103m pu\u021bin cu termenii folosi\u021bi \u00een Consul. <\/p>\n<p><\/p>\n<ul>\n<li>Consul este un serviciu scris \u00een Go. Unul dintre avantajele program\u0103rii \u00een Go este faptul c\u0103 avem un singur fi\u0219ier binar pe care \u00eel descarci. \u00cel rulezi din orice loca\u021bie \u0219i nu ai dependen\u021be. <\/li>\n<li>Apoi, folosind cheile, putem porni acest serviciu fie \u00een modul client, fie \u00een modul server. <\/li>\n<li>De asemenea, atributul \u201edatacenter\u201d permite semnalarea la ce data center apar\u021bine acest server. <\/li>\n<li>Consensus se bazeaz\u0103 pe protocolul raft. Dac\u0103 cineva este interesat, poate citi mai multe despre acesta pe site-ul Consul. Este un protocol care permite definirea unui lider \u0219i determinarea datelor care s\u0103 fie considerate valide \u0219i disponibile.<\/li>\n<li>Gossip este un protocol care faciliteaz\u0103 interac\u021biunea \u00eentre noduri. Acest sistem este descentralizat. \u00cen cadrul unui singur centru de date, toate nodurile comunic\u0103 cu vecinii lor, iar informa\u021biile despre starea actual\u0103 sunt transmise reciproc. Putem spune c\u0103 este vorba de gossip-uri \u00eentre vecini. <\/li>\n<li>LAN Gossip \u2013 schimb local de date \u00eentre vecini \u00een cadrul unui singur centru de date. <\/li>\n<li>WAN Gossip \u2013 este utilizat atunci c\u00e2nd trebuie s\u0103 sincroniz\u0103m informa\u021biile \u00eentre dou\u0103 centre de date. Informa\u021bia circul\u0103 \u00eentre noduri marcate ca servere. <\/li>\n<li>RPC \u2013 permite efectuarea de cereri prin client la server. <\/li>\n<\/ul>\n<p><\/p>\n<p>Descrierea RPC. S\u0103 presupunem c\u0103 pe o ma\u0219in\u0103 virtual\u0103 sau pe un server fizic ruleaz\u0103 Consul ca un client. Ne adres\u0103m acestuia local. Apoi, clientul local solicit\u0103 informa\u021bii de la server \u0219i se sincronizeaz\u0103. Informa\u021bia, \u00een func\u021bie de configura\u021bii, poate fi oferit\u0103 din cache-ul local sau poate fi sincronizat\u0103 cu liderul, cu masterul serverului. <\/p>\n<p><\/p>\n<p>Aceste dou\u0103 scheme au at\u00e2t avantaje, c\u00e2t \u0219i dezavantaje. Dac\u0103 lucr\u0103m cu cache-ul local, atunci este rapid. Dac\u0103 lucr\u0103m cu date stocate pe server, atunci dureaz\u0103 mai mult, dar ob\u021binem informa\u021bii mai actuale.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/6ab034093708c0b1739af21015e50742.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dac\u0103 am ilustra grafic, ar ar\u0103ta astfel pe site. Vedem c\u0103 avem trei mastere pornite. Unul este marcat cu stea ca lider. \u00cen acest exemplu, trei clien\u021bi schimb\u0103 \u00eentre ei informa\u021bii local prin UDP\/TCP. Informa\u021bia \u00eentre centrele de date este transmis\u0103 \u00eentre servere. Aici, clien\u021bii interac\u021bioneaz\u0103 local \u00eentre ei. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/24a8f749195447c54e4405ad0be5728e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce API ofer\u0103 Consul? Pentru a ob\u021bine informa\u021bii, Consul are dou\u0103 tipuri de API-uri.<\/p>\n<p><\/p>\n<p>Acesta este DNS API. \u00cen mod implicit, Consul ruleaz\u0103 pe portul 8600. Putem configura proxying pentru cerere \u0219i asigura accesul prin rezolvarea local\u0103, prin DNS local. Putem solicita pe domeniu \u0219i vom primi ca r\u0103spuns informa\u021bii despre adresa IP.<\/p>\n<p><\/p>\n<p>HTTP API \u2013 sau putem solicita local pe portul 8500 informa\u021bii despre un anumit serviciu \u0219i vom primi un r\u0103spuns JSON, ce IP are serverul, ce host, ce port este \u00eenregistrat. Informa\u021bii suplimentare pot fi transmise prin token.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/6af7cc95a392c5d2fe278131245b8f5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce este necesar pentru a porni Consul?<\/p>\n<p><\/p>\n<p>\u00cen prima variant\u0103, \u00een modul dezvoltator, specific\u0103m un steag care indic\u0103 faptul c\u0103 acesta este modul dezvoltator. Agentul porne\u0219te ca server. \u0218i \u00eentreaga func\u021bie este deja \u00eendeplinit\u0103 de el \u00eensu\u0219i pe o singur\u0103 ma\u0219in\u0103. Convenabil, rapid \u0219i f\u0103r\u0103 practic nicio configura\u021bie suplimentar\u0103 necesar\u0103 pentru prima pornire.<\/p>\n<p><\/p>\n<p>A doua variant\u0103 este pornirea \u00een production. Aici, pornirea este pu\u021bin mai complicat\u0103. Dac\u0103 nu avem nicio versiune a consolei, trebuie s\u0103 aducem \u00een bootstrap prima ma\u0219in\u0103, adic\u0103 aceast\u0103 ma\u0219in\u0103 care va prelua responsabilit\u0103\u021bile liderului. O ridic\u0103m, apoi ridic\u0103m al doilea exemplar al serverului, transmi\u021b\u00e2ndu-i informa\u021bii despre unde se afl\u0103 masterul. Ridic\u0103m al treilea. Dup\u0103 ce avem trei ma\u0219ini active, pe prima ma\u0219in\u0103 din bootstrap-ul pornit, o repornim \u00een modul obi\u0219nuit. Datele sunt sincronizate \u0219i clusterul ini\u021bial este deja ridicat. <\/p>\n<p><\/p>\n<p>Se recomand\u0103 s\u0103 ruleze \u00eentre trei \u0219i \u0219apte exemplare \u00een modul server. Acest lucru se datoreaz\u0103 faptului c\u0103, pe m\u0103sur\u0103 ce num\u0103rul serverelor cre\u0219te, timpul de sincronizare a informa\u021biilor \u00eentre ele se m\u0103re\u0219te. Num\u0103rul de noduri trebuie s\u0103 fie impar pentru a asigura quorum. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/6d0a230bd31980d78e73041cbac3496f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cum se asigur\u0103 Health Checks? \u00cen directorul pentru configura\u021bia Consul, scriem \u00een format Json regula de verificare. Prima variant\u0103 este disponibilitatea \u00een acest exemplu a domeniului google.com. \u0218i spunem c\u0103, la un interval de 30 de secunde, trebuie s\u0103 efectueze aceast\u0103 verificare. Astfel ne asigur\u0103m c\u0103 nodul nostru are acces la re\u021beaua extern\u0103.<\/p>\n<p><\/p>\n<p>A doua variant\u0103 este auto-verificarea. Facem o solicitare curl c\u0103tre localhost pe portul specificat la un interval de 10 secunde. <\/p>\n<p><\/p>\n<p>Aceste verific\u0103ri se sumaz\u0103 \u0219i sunt transmise \u00een Service Discovery. Pe baza disponibilit\u0103\u021bii, aceste noduri sunt fie excluse, fie apar \u00een lista ma\u0219inilor disponibile \u0219i care func\u021bioneaz\u0103 corect. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/551d98ded7111f48afd0a6406b83cba0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De asemenea, Consul ofer\u0103 o interfa\u021b\u0103 UI, care porne\u0219te cu un steag separat \u0219i va fi disponibil\u0103 pe ma\u0219in\u0103. Aceasta permite vizualizarea informa\u021biilor, iar unele modific\u0103ri pot fi de asemenea efectuate. <\/p>\n<p><\/p>\n<p>\u00cen acest exemplu, este deschis tab-ul \u201eServiciu\u201d. Se arat\u0103 c\u0103 sunt active trei servicii, unul dintre ele fiind Consul. Num\u0103rul de verific\u0103ri efectuate. \u0218i exist\u0103 trei centre de date \u00een care se afl\u0103 ma\u0219inile.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Descoperirea serviciilor \u00een sistemele distribuite folosind exemplul Consul. Alexandr Sigacev\" src=\"\/wp-content\/uploads\/2020\/02\/cd684146191a7b262df76d1b88f7df7c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Acesta este un exemplu de tab nou\u0103 \u201eNodes\u201d. Se observ\u0103 c\u0103 au denumiri compuse care implic\u0103 centre de date. Aici sunt prezentate \u0219i serviciile active, adic\u0103 observ\u0103m c\u0103 etichetele nu sunt setate. \u00cen aceste etichete suplimentare, poate fi specificat\u0103 o anumit\u0103 informa\u021bie pe care dezvoltatorul o poate utiliza pentru a indica parametrii suplimentari. <\/p>\n<p><\/p>\n<p>De asemenea, se poate transmite informa\u021bii \u00een Consul despre starea discurilor \u0219i despre \u00eenc\u0103rcarea medie.<\/p>\n<p><\/p>\n<p>\u00centreb\u0103ri<\/p>\n<p><\/p>\n<p>\u00centrebare: Avem un container Docker, cum \u00eel putem folosi cu Consul?<\/p>\n<p><\/p>\n<p>R\u0103spuns: Pentru containerul Docker exist\u0103 mai multe abord\u0103ri. Una dintre cele mai comune este utilizarea unui container Docker de ter\u021b\u0103 parte responsabil pentru \u00eenregistrare. La lansare, acesta prime\u0219te un socket Docker. Toate evenimentele de \u00eenregistrare \u0219i de publicare a containerului sunt salvate \u00een Consul.<\/p>\n<p><\/p>\n<p>\u00centrebare: A\u0219adar, Consul porne\u0219te singur containerul Docker?<\/p>\n<p><\/p>\n<p>R\u0103spuns: Nu. Noi pornim containerul Docker. \u0218i la configurare specific\u0103m \u2013 ascult\u0103 acel socket. Este aproximativ la fel ca atunci c\u00e2nd lucr\u0103m cu un certificat, c\u00e2nd transmitem informa\u021bii despre unde \u0219i ce avem. <\/p>\n<p><\/p>\n<p>\u00centrebare: Deci, \u00een interiorul containerului Docker, pe care \u00eencerc\u0103m s\u0103-l conect\u0103m la Service Discovery, ar trebui s\u0103 existe o logic\u0103 care poate s\u0103 returneze date c\u0103tre Consul?<\/p>\n<p><\/p>\n<p>R\u0103spuns: Nu neap\u0103rat. Atunci c\u00e2nd porne\u0219te, transmitem variabilele prin mediul \u00eenconjur\u0103tor. De exemplu, numele serviciului, portul serviciului. Registry-ul ascult\u0103 aceste informa\u021bii \u0219i le \u00eenregistreaz\u0103 \u00een Consul.<\/p>\n<p><\/p>\n<p>\u00centrebare: Am o \u00eentrebare despre UI. Am desf\u0103\u0219urat UI, s\u0103 zicem, pe serverul de produc\u021bie. Ce se \u00eent\u00e2mpl\u0103 cu securitatea? Unde sunt stocate datele? Exist\u0103 vreo modalitate de a acumula date?<\/p>\n<p><\/p>\n<p>R\u0103spuns: \u00cen UI, datele provin din baza de date \u0219i din Service Discovery. Parolele le set\u0103m noi \u00een configura\u021bii. <\/p>\n<p><\/p>\n<p>\u00centrebare: Este permis s\u0103 fie publicat pe internet?<\/p>\n<p><\/p>\n<p>R\u0103spuns: \u00cen mod implicit, Consul porne\u0219te pe localhost. Pentru a publica pe internet, va trebui s\u0103 configur\u0103m un proxy. Noi ne asum\u0103m responsabilitatea pentru regulile de securitate.<\/p>\n<p><\/p>\n<p>\u00centrebare: Ofer\u0103 date istorice din cutie? M-ar interesa s\u0103 v\u0103d statistici despre Health Checks. Se pot diagnostica problemele, dac\u0103 serverul se opre\u0219te frecvent.<\/p>\n<p><\/p>\n<p>R\u0103spuns: Nu sunt sigur c\u0103 exist\u0103 detalii despre verific\u0103ri acolo. <\/p>\n<p><\/p>\n<p>\u00centrebare: Nu este at\u00e2t de important starea actual\u0103, c\u00e2t dinamica.<\/p>\n<p><\/p>\n<p>R\u0103spuns: Pentru analiz\u0103 \u2013 da.<\/p>\n<p><\/p>\n<p>\u00centrebare: Este mai bine s\u0103 nu utiliz\u0103m Service Discovery pentru docker \u00een Consul?<\/p>\n<p><\/p>\n<p>R\u0103spuns: Nu a\u0219 recomanda s\u0103-l folose\u0219ti. Scopul raportului este de a te familiariza cu acest concept. Istoric, el a parcurs un drum p\u00e2n\u0103 la versiunea 1. Acum exist\u0103 solu\u021bii mai complete, cum ar fi Kubernetes, care include toate acestea \u00een fundal. \u00cen cadrul Kubernetes, descoperirea serviciilor este inferioar\u0103 Etcd. Dar nu m\u0103 cunosc la fel de bine cu acesta ca \u0219i cu Consul. De aceea am decis s\u0103 fac descoperirea serviciilor pe exemplul Consul.<\/p>\n<p><\/p>\n<p>\u00centrebare: Schema cu serverul lider nu \u00eencetine\u0219te pornirea aplica\u021biei \u00een ansamblu? \u0218i cum determin\u0103 Consul un nou lider dac\u0103 acesta este c\u0103zut?<\/p>\n<p><\/p>\n<p>R\u0103spuns: Ei au un protocol \u00eentreaga descris. Dac\u0103 e\u0219ti interesat, po\u021bi citi.<\/p>\n<p><\/p>\n<p>\u00centrebare: Consul ac\u021bioneaz\u0103 ca un server complet \u0219i toate cererile trec prin el?<\/p>\n<p><\/p>\n<p>R\u0103spuns: El nu ac\u021bioneaz\u0103 ca un server complet, ci preia o zon\u0103 specific\u0103. Aceasta, de obicei, se termin\u0103 cu service.consul. Apoi ne ghid\u0103m dup\u0103 logica specific\u0103. Nu utiliz\u0103m nume de domeniu \u00een produc\u021bie, ci o infrastructur\u0103 intern\u0103, care de obicei este ascuns\u0103 \u00een spatele serverului de caching, atunci c\u00e2nd lucr\u0103m prin DNS.<\/p>\n<p><\/p>\n<p>\u00centrebare: Adic\u0103, dac\u0103 dorim s\u0103 ne conect\u0103m la baza de date, trebuie s\u0103 consult\u0103m Consul pentru a g\u0103si mai \u00eent\u00e2i aceast\u0103 baz\u0103, corect?<\/p>\n<p><\/p>\n<p>R\u0103spuns: Da. Dac\u0103 lucr\u0103m prin DNS, atunci asta func\u021bioneaz\u0103 la fel ca f\u0103r\u0103 Consul, atunci c\u00e2nd folosim nume DNS. De obicei, aplica\u021biile moderne nu interogheaz\u0103 numele de domeniu la fiecare cerere, pentru c\u0103 am stabilit o conexiune \u0219i totul func\u021bioneaz\u0103, iar \u00een perioada apropiat\u0103 NU utiliz\u0103m practic. Dac\u0103 conexiunea s-a rupt, atunci - da, \u00eentreb\u0103m din nou unde se afl\u0103 baza noastr\u0103 \u0219i mergem c\u0103tre ea.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ru_hashicorp\">Chat despre produsele Hashicorp<\/a><\/noindex> \u2014 Chatul utilizatorilor Hashicorp: Consul, Nomad, Terraform<\/p>\n<p><\/p>\n<p>P.S. \u00cen ceea ce prive\u0219te verific\u0103rile de s\u0103n\u0103tate. \u00cen Consul, la fel ca \u0219i \u00een Kubernetes, se folose\u0219te un sistem similar de verificare a s\u0103n\u0103t\u0103\u021bii serviciului bazat pe codul de stare.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">200 OK pentru s\u0103n\u0103tos\n503 Serviciu indisponibil pentru nes\u0103n\u0103tos<\/code><\/pre>\n<p><\/p>\n<p>Surse:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.consul.io\/docs\/agent\/checks.html\">https:\/\/www.consul.io\/docs\/agent\/checks.html<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-startup-probes\/\">https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-startup-probes\/<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/thoslin.github.io\/microservice-health-check-in-kubernetes\/\">https:\/\/thoslin.github.io\/microservice-health-check-in-kubernetes\/<\/a><\/noindex><\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/487706\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0421\u0438\u0433\u0430\u0447\u0435\u0432\u0430 Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. Service Discovery \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043d\u0430\u0448\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Service Discovery, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043b\u0438\u0431\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432 \u0432\u0438\u0434\u0435 \u0434\u043e\u043a\u0435\u0440\u0430, \u043b\u0438\u0431\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u0442 \u0442\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u0437\u0430\u043f\u0443\u0449\u0435\u043d. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-56387","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0421\u0438\u0433\u0430\u0447\u0435\u0432\u0430 Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. Service Discovery \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0421\u0438\u0433\u0430\u0447\u0435\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0421\u0438\u0433\u0430\u0447\u0435\u0432\u0430 Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. Service Discovery \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-11T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:04:39+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Descoperirea Serviciilor \u00een sistemele distribuite pe exemplul Consul. Aleksandr Sigacev | ProHoster","description":"\u00ce\u021bi recomand s\u0103 te familiarizezi cu dezv\u0103luirea raportului lui Aleksandr Sigacev despre Descoperirea Serviciilor \u00een sistemele distribuite pe exemplul Consul. Descoperirea Serviciilor a fost creat\u0103 pentru a aduce un minim.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0421\u0438\u0433\u0430\u0447\u0435\u0432 | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0421\u0438\u0433\u0430\u0447\u0435\u0432\u0430 Service Discovery \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Consul. Service Discovery \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-11T21:00:00+00:00","article:modified_time":"2020-02-18T11:04:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"56387","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:25:40","updated":"2022-10-01 05:49:52","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/56387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=56387"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/56387\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=56387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=56387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=56387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}