{"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\/pl\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","title":{"rendered":"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Zach\u0119cam do zapoznania si\u0119 z transkrypcj\u0105 wyk\u0142adu Aleksandra Sigaczewa na temat Service Discovery w systemach rozproszonych na przyk\u0142adzie Consul.<\/strong><\/p>\n<p><\/p>\n<p>Service Discovery zosta\u0142 stworzony, aby z minimalnymi kosztami mo\u017cna by\u0142o pod\u0142\u0105czy\u0107 nowe aplikacje do ju\u017c istniej\u0105cego \u015brodowiska. Dzi\u0119ki Service Discovery mo\u017cemy maksymalnie oddzieli\u0107 zar\u00f3wno kontener w postaci Dockera, jak i wirtualn\u0105 us\u0142ug\u0119 od \u015brodowiska, w kt\u00f3rym jest uruchomiona. <\/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=\"Odtwarzaj wideo\" 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>Witam wszystkich! Nazywam si\u0119 Aleksandr Sigaczew, pracuj\u0119 w firmie Inventos. Dzi\u015b zapoznacie si\u0119 z poj\u0119ciem, jakim jest Service Discovery. Om\u00f3wimy Service Discovery na przyk\u0142adzie Consul.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/8078ef6ee7af4e52e977deed5f1f42ab.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jakie problemy rozwi\u0105zuje Service Discovery? Service Discovery zosta\u0142 stworzony, aby z minimalnymi kosztami mo\u017cna by\u0142o pod\u0142\u0105czy\u0107 nowe aplikacje do ju\u017c istniej\u0105cego \u015brodowiska. Dzi\u0119ki Service Discovery mo\u017cemy maksymalnie oddzieli\u0107 zar\u00f3wno kontener w postaci Dockera, jak i wirtualn\u0105 us\u0142ug\u0119 od \u015brodowiska, w kt\u00f3rym jest uruchomiona. <\/p>\n<p><\/p>\n<p>Jak to wygl\u0105da? Na klasycznym przyk\u0142adzie w sieci \u2013 to front-end, kt\u00f3ry przyjmuje zapytania od u\u017cytkownik\u00f3w. Nast\u0119pnie wykonuje ich routowanie na backend. W tym przypadku \u2013 load-balancer rozk\u0142ada obci\u0105\u017cenie na dwa backendy.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/10d23c4c51543161fc2034145776461b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tutaj widzimy, \u017ce uruchamiamy trzeci\u0105 instancj\u0119 aplikacji. Gdy aplikacja jest uruchamiana, rejestruje si\u0119 w Service Discovery. Service Discovery informuje load-balancer. Load-balancer automatycznie zmienia swoj\u0105 konfiguracj\u0119, a nowy backend zostaje pod\u0142\u0105czony do pracy. W ten spos\u00f3b mo\u017cna dodawa\u0107 backendy lub, wr\u0119cz przeciwnie, wy\u0142\u0105cza\u0107 je z pracy.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/88a768894d79449ffb06fbbfa5cd32a8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jakie inne wygodne funkcje oferuje Service Discovery? W Service Discovery mo\u017cna przechowywa\u0107 konfiguracje nginx, certyfikaty oraz list\u0119 aktywnych serwer\u00f3w backendowych.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/8ebfb5f1c8cf44999904159af9695da9.jpeg\" style=\"display:block;margin: 0 auto;\" \/>Ponadto Service Discovery pozwala na wykrywanie awarii i problem\u00f3w. Jakie mog\u0105 by\u0107 schematy wykrywania awarii?<\/p>\n<p><\/p>\n<ul>\n<li>Ta aplikacja, kt\u00f3r\u0105 opracowali\u015bmy, sama powiadamia Service Discovery, \u017ce nadal dzia\u0142a. <\/li>\n<li>Service Discovery z kolei pyta aplikacj\u0119 o dost\u0119pno\u015b\u0107.<\/li>\n<li>Mo\u017cna tak\u017ce u\u017cy\u0107 zewn\u0119trznego skryptu lub aplikacji, kt\u00f3ra sprawdza dost\u0119pno\u015b\u0107 naszej aplikacji i informuje Service Discovery, \u017ce wszystko jest w porz\u0105dku i mo\u017cna pracowa\u0107, lub wr\u0119cz przeciwnie, \u017ce co\u015b nie dzia\u0142a i ta instancja aplikacji powinna by\u0107 wy\u0142\u0105czona z r\u00f3wnowa\u017cenia obci\u0105\u017cenia.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ka\u017cdy z schemat\u00f3w mo\u017cna zastosowa\u0107 w zale\u017cno\u015bci od tego, jakie oprogramowanie u\u017cywamy. Na przyk\u0142ad, gdy dopiero zaczynamy rozwija\u0107 nowy projekt, bez problemu mo\u017cemy zapewni\u0107 schemat, w kt\u00f3rym nasze aplikacje powiadamiaj\u0105 Service Discovery. Mo\u017cemy te\u017c pod\u0142\u0105czy\u0107, \u017ce Service Discovery przeprowadza kontrol\u0119.<\/p>\n<p><\/p>\n<p>Je\u015bli aplikacja trafi\u0142a do nas w spadku lub zosta\u0142a opracowana przez kogo\u015b innego, to tutaj odpowiedni jest trzeci wariant, gdy piszemy obs\u0142ug\u0119, a wszystko to wchodzi w nasz\u0105 prac\u0119 automatycznie.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/ce4c5b452d526058b552a65926b9de58.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>To jeden z przyk\u0142ad\u00f3w. Load-balancer w postaci nginx jest prze\u0142adowywany. To dodatkowe narz\u0119dzie, kt\u00f3re jest dostarczane razem z Consul. To consul-template. Opisujemy regu\u0142\u0119. M\u00f3wimy, \u017ce u\u017cywamy szablonu (Szablon Golanga). Przy wyst\u0105pieniu zdarze\u0144, przy powiadomieniach, \u017ce zasz\u0142y zmiany, jest on regenerowany, a Service Discovery otrzymuje komend\u0119 \u201ereload\u201d. Najprostszy przyk\u0142ad, kiedy po zdarzeniu nginx jest rekonfigurowany i ponownie uruchamiany.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/d829f882a52c97420750893f78bacc18.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Czym jest Consul?<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>Przede wszystkim \u2013 to Service Discovery. <\/p>\n<p>\n<\/li>\n<li>\n<p>Ma mechanizm sprawdzania dost\u0119pno\u015bci \u2013 Health Checking.<\/p>\n<p>\n<\/li>\n<li>\n<p>Zawiera r\u00f3wnie\u017c KV Store.<\/p>\n<p>\n<\/li>\n<li>\n<p>Na jego podstawie mo\u017cna korzysta\u0107 z Multi Datacenter.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Do czego to wszystko mo\u017cna wykorzysta\u0107? W KV Store mo\u017cemy przechowywa\u0107 przyk\u0142ady konfiguracji. Health Checking mo\u017cemy przeprowadza\u0107 testy lokalnej us\u0142ugi i powiadamia\u0107. Multi Datacenter s\u0142u\u017cy do budowy mapy us\u0142ug. Na przyk\u0142ad Amazon ma kilka stref i kieruje ruch w najbardziej optymalny spos\u00f3b, aby nie generowa\u0107 dodatkowych zapyta\u0144 mi\u0119dzy centrami danych, za kt\u00f3re s\u0105 oddzielnie naliczane op\u0142aty, a co za tym idzie maj\u0105 mniejsze op\u00f3\u017anienia. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/7594fcb0dfd05193d95214d9694c39e8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Troch\u0119 przyjrzymy si\u0119 terminom, kt\u00f3re s\u0105 u\u017cywane w Consul. <\/p>\n<p><\/p>\n<ul>\n<li>Consul \u2013 serwis napisany w Go. Jedn\u0105 z zalet program\u00f3w w Go jest to, \u017ce to jeden plik binarny, kt\u00f3ry po prostu pobierasz. Uruchamiasz z dowolnego miejsca i nie masz \u017cadnych zale\u017cno\u015bci. <\/li>\n<li>Nast\u0119pnie przy pomocy kluczy mo\u017cemy uruchomi\u0107 ten serwis w trybie klienta lub serwera. <\/li>\n<li>Atrybut \u201edatacenter\u201d pozwala oznaczy\u0107, do kt\u00f3rego centrum danych nale\u017cy dany serwer. <\/li>\n<li>Consensus \u2013 oparty na protokole raft. Je\u015bli kogo\u015b to interesuje, mo\u017cna poczyta\u0107 o tym wi\u0119cej na stronie Consul. To protok\u00f3\u0142, kt\u00f3ry pozwala okre\u015bli\u0107 lidera i ustali\u0107, kt\u00f3re dane mo\u017cna uzna\u0107 za wa\u017cne i dost\u0119pne.<\/li>\n<li>Gossip \u2013 to protok\u00f3\u0142, kt\u00f3ry zapewnia interakcj\u0119 mi\u0119dzy w\u0119z\u0142ami. System ten jest zdecentralizowany. W obr\u0119bie jednego centrum danych wszystkie w\u0119z\u0142y komunikuj\u0105 si\u0119 z s\u0105siadami, przekazuj\u0105c sobie nawzajem informacje o aktualnym stanie. Mo\u017cna powiedzie\u0107, \u017ce to plotki mi\u0119dzy s\u0105siadami. <\/li>\n<li>LAN Gossip \u2013 lokalna wymiana danych mi\u0119dzy s\u0105siadami w obr\u0119bie jednego centrum danych. <\/li>\n<li>WAN Gossip \u2013 u\u017cywany, gdy potrzebujemy synchronizowa\u0107 informacje mi\u0119dzy dwoma centrami danych. Informacje przep\u0142ywaj\u0105 mi\u0119dzy w\u0119z\u0142ami oznaczonymi jako serwer. <\/li>\n<li>RPC \u2013 pozwala na wysy\u0142anie zapyta\u0144 przez klienta do serwera. <\/li>\n<\/ul>\n<p><\/p>\n<p>Opis RPC. Za\u0142\u00f3\u017cmy, \u017ce na maszynie wirtualnej lub fizycznym serwerze uruchomiony jest Consul jako klient. Zwracamy si\u0119 do niego lokalnie. Nast\u0119pnie lokalny klient wysy\u0142a zapytanie do serwera i synchronizuje si\u0119. Informacje, w zale\u017cno\u015bci od ustawie\u0144, mog\u0105 pochodzi\u0107 z lokalnej pami\u0119ci podr\u0119cznej lub mog\u0105 by\u0107 synchronizowane z liderem, g\u0142\u00f3wnym serwerem. <\/p>\n<p><\/p>\n<p>Obie te schemy maj\u0105 swoje plusy i minusy. Je\u015bli pracujemy z lokaln\u0105 pami\u0119ci\u0105 podr\u0119czn\u0105, to jest szybko. Je\u015bli pracujemy z danymi przechowywanymi na serwerze, to trwa d\u0142u\u017cej, ale uzyskujemy bardziej aktualne informacje.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/6ab034093708c0b1739af21015e50742.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Gdyby to zobrazowa\u0107 graficznie, wygl\u0105da\u0142oby to tak: uruchomione s\u0105 trzy w\u0119z\u0142y g\u0142\u00f3wne. Jeden oznaczony gwiazdk\u0105 jest liderem. W tym przyk\u0142adzie trzy klient\u00f3w wymieniaj\u0105 si\u0119 lokalnie informacjami przez UDP\/TCP. A informacje mi\u0119dzy centrami danych s\u0105 przesy\u0142ane mi\u0119dzy serwerami. Klienci wsp\u00f3\u0142dzia\u0142aj\u0105 lokalnie. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/24a8f749195447c54e4405ad0be5728e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jakie API oferuje Consul? Aby uzyska\u0107 informacje, Consul ma dwa rodzaje API.<\/p>\n<p><\/p>\n<p>To API DNS. Domy\u015blnie Consul dzia\u0142a na porcie 8600. Mo\u017cemy skonfigurowa\u0107 proxy zapyta\u0144 i zapewni\u0107 dost\u0119p przez lokalne rozwi\u0105zywanie, przez lokalny DNS. Mo\u017cemy zapyta\u0107 o domen\u0119 i otrzymamy informacje o adresie IP.<\/p>\n<p><\/p>\n<p>API HTTP \u2013 mo\u017cemy lokalnie na porcie 8500 zapyta\u0107 o konkretn\u0105 us\u0142ug\u0119 i otrzyma\u0107 odpowied\u017a w formacie JSON zawieraj\u0105c\u0105 jaki adres IP ma serwer, jaki host i jaki port jest zarejestrowany. Dodatkowe informacje mog\u0105 by\u0107 przesy\u0142ane przez token.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/6af7cc95a392c5d2fe278131245b8f5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Co jest potrzebne, aby uruchomi\u0107 Consul?<\/p>\n<p><\/p>\n<p>W pierwszej opcji w trybie dewelopera wskazujemy flag\u0119, \u017ce to jest tryb dewelopera. Agent uruchamia si\u0119 jako serwer. I ca\u0142\u0105 funkcj\u0119 wykonuje ju\u017c samodzielnie na jednej maszynie. Wygodne, szybkie i praktycznie \u017cadnych dodatkowych ustawie\u0144 na pierwszy start nie jest wymagane.<\/p>\n<p><\/p>\n<p>Drugi tryb to uruchomienie w produkcji. Tutaj uruchomienie jest nieco bardziej skomplikowane. Je\u015bli nie mamy \u017cadnej wersji konsula, musimy wprowadzi\u0107 bootstrap w pierwszej maszynie, tzn. ta maszyna, kt\u00f3ra przejmie obowi\u0105zki lidera. Podnosimy j\u0105, nast\u0119pnie podnosimy drugi egzemplarz serwera, przekazuj\u0105c mu informacje, gdzie znajduje si\u0119 master. Podnosimy trzeci\u0105. Po tym, jak mamy trzy maszyny uruchomione, na pierwszej maszynie z uruchomionego bootstrapu, uruchamiamy j\u0105 w normalnym trybie. Dane synchronizuj\u0105 si\u0119, a pocz\u0105tkowy klaster ju\u017c jest uruchomiony. <\/p>\n<p><\/p>\n<p>Zaleca si\u0119 uruchamianie od trzech do siedmiu egzemplarzy w trybie serwera. Jest to uzasadnione tym, \u017ce je\u015bli liczba serwer\u00f3w wzrasta, to wyd\u0142u\u017ca si\u0119 czas synchronizacji informacji mi\u0119dzy nimi. Liczba w\u0119z\u0142\u00f3w powinna by\u0107 nieparzysta, aby zapewni\u0107 quorum. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/6d0a230bd31980d78e73041cbac3496f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jak zapewniane s\u0105 Health Checks? W katalogu do konfiguracji Consul zapisujemy w formacie Json zasady sprawdzania. Pierwsza opcja to dost\u0119pno\u015b\u0107 w tym przyk\u0142adzie domeny google.com. I m\u00f3wimy, \u017ce co 30 sekund nale\u017cy wykonywa\u0107 to sprawdzenie. W ten spos\u00f3b sprawdzamy, czy nasz w\u0119ze\u0142 ma dost\u0119p do sieci zewn\u0119trznej.<\/p>\n<p><\/p>\n<p>Druga opcja to sprawdzanie samego siebie. U\u017cywamy zwyk\u0142ego curl, aby zapyta\u0107 localhost na wskazanym porcie co 10 sekund. <\/p>\n<p><\/p>\n<p>Te kontrole s\u0105 sumowane i trafiaj\u0105 do Service Discovery. Na podstawie dost\u0119pno\u015bci te w\u0119z\u0142y s\u0105 albo wykluczane, albo pojawiaj\u0105 si\u0119 na li\u015bcie dost\u0119pnych i poprawnie dzia\u0142aj\u0105cych maszyn. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/551d98ded7111f48afd0a6406b83cba0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Consul udost\u0119pnia tak\u017ce interfejs UI, kt\u00f3ry z oddzieln\u0105 flag\u0105 uruchamia si\u0119 i b\u0119dzie dost\u0119pny na maszynie. Umo\u017cliwia to przegl\u0105danie informacji oraz wprowadzanie niekt\u00f3rych zmian. <\/p>\n<p><\/p>\n<p>W tym przyk\u0142adzie otwarta jest zak\u0142adka \"Us\u0142uga\". Pokazuje, \u017ce uruchomione s\u0105 trzy us\u0142ugi, z czego jedna to Consul. Liczba przeprowadzonych kontroli. I s\u0105 trzy centra danych, w kt\u00f3rych znajduj\u0105 si\u0119 maszyny.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odkrywanie us\u0142ug w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Sigaczew\" src=\"\/wp-content\/uploads\/2020\/02\/cd684146191a7b262df76d1b88f7df7c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>To jest przyk\u0142adowa zak\u0142adka \u201eW\u0119z\u0142y\u201d. Widzimy, \u017ce maj\u0105 z\u0142o\u017cone nazwy zwi\u0105zane z centrum danych. Pokazuje to r\u00f3wnie\u017c, jakie us\u0142ugi s\u0105 uruchomione, tj. widzimy, \u017ce tagi nie s\u0105 ustawione. W tych dodatkowych tagach mo\u017cna poda\u0107 jak\u0105\u015b informacj\u0119, kt\u00f3r\u0105 programista mo\u017ce wykorzysta\u0107 do okre\u015blenia dodatkowych parametr\u00f3w. <\/p>\n<p><\/p>\n<p>Mo\u017cna r\u00f3wnie\u017c przesy\u0142a\u0107 informacje do Consul o stanie dysk\u00f3w, o \u015brednim obci\u0105\u017ceniu.<\/p>\n<p><\/p>\n<p>Pytania<\/p>\n<p><\/p>\n<p>Pytanie: Mamy kontener dockerowy, jak go u\u017cy\u0107 z Consul?<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Dla kontenera dockerowego jest kilka podej\u015b\u0107. Jednym z najcz\u0119stszych jest u\u017cycie zewn\u0119trznego kontenera dockerowego, kt\u00f3ry odpowiada za rejestracj\u0119. Podczas uruchamiania przekazuje si\u0119 mu gniazdo dockera. Wszystkie zdarzenia dotycz\u0105ce rejestracji i dejestracji kontenera s\u0105 zapisywane w Consul.<\/p>\n<p><\/p>\n<p>Pytanie: Tzn. Consul sam uruchamia kontener dockerowy?<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Nie. My uruchamiamy kontener dockerowy. I w konfiguracji wskazujemy \u2013 s\u0142uchaj tego gniazda. To mniej wi\u0119cej tak, jak dzia\u0142a praca z certyfikatem, kiedy przekazujemy informacje, gdzie i co mamy. <\/p>\n<p><\/p>\n<p>Pytanie: Czyli w kontenerze dockerowym, kt\u00f3ry pr\u00f3bujemy pod\u0142\u0105czy\u0107 do Odkrywania Us\u0142ug, powinna by\u0107 jaka\u015b logika, kt\u00f3ra potrafi zwraca\u0107 dane do Consul?<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Nie do ko\u0144ca. Kiedy si\u0119 uruchamia, za pomoc\u0105 zmiennych \u015brodowiskowych przekazujemy zmienne. Powiedzmy, nazwa us\u0142ugi, port us\u0142ugi. W rejestrze odbieraj\u0105 te informacje i zapisuj\u0105 w Consul.<\/p>\n<p><\/p>\n<p>Pytanie: Mam jeszcze pytanie o UI. Rozwin\u0119li\u015bmy UI, powiedzmy, na serwerze produkcyjnym. Co z bezpiecze\u0144stwem? Gdzie s\u0105 przechowywane dane? Czy mo\u017cna jako\u015b akumulowa\u0107 dane?<\/p>\n<p><\/p>\n<p>Odpowied\u017a: W UI dane pochodz\u0105 z bazy i z Odkrywania Us\u0142ug. Has\u0142a ustawiamy w ustawieniach samodzielnie. <\/p>\n<p><\/p>\n<p>Pytanie: Czy mo\u017cna to publikowa\u0107 w internecie?<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Domy\u015blnie Consul startuje na localhost. Aby publikowa\u0107 to w internecie, trzeba b\u0119dzie postawi\u0107 jaki\u015b proxy. Za zasady bezpiecze\u0144stwa odpowiadamy sami.<\/p>\n<p><\/p>\n<p>Pytanie: Czy dane historyczne s\u0105 wydawane od razu? Interesuje mnie, aby zobaczy\u0107 statystyki dotycz\u0105ce Health Checks. Mo\u017cna przecie\u017c diagnozowa\u0107 problemy, je\u015bli serwer cz\u0119sto si\u0119 wy\u0142\u0105cza.<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Nie jestem pewien, czy s\u0105 tam szczeg\u00f3\u0142y kontroli. <\/p>\n<p><\/p>\n<p>Pytanie: Nie tak wa\u017cny jest aktualny stan, co wa\u017cna jest dynamika.<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Do analizy \u2013 tak.<\/p>\n<p><\/p>\n<p>Pytanie: Czy Odkrywanie Us\u0142ug dla dockera w Consul lepiej nie u\u017cywa\u0107?<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Nie poleca\u0142bym go u\u017cywa\u0107. Celem referatu jest zapoznanie z poj\u0119ciem. Historycznie przeszed\u0142, moim zdaniem, do wersji 1.0. Teraz istniej\u0105 ju\u017c bardziej zaawansowane rozwi\u0105zania, takie jak Kubernetes, kt\u00f3re maj\u0105 to wszystko w zanadrzu. W przypadku Kubernetes Service Discovery ust\u0119puje Etcd. Jednak nie znam go tak dobrze, jak Consul. Dlatego Service Discovery postanowi\u0142em przedstawi\u0107 na przyk\u0142adzie Consul.<\/p>\n<p><\/p>\n<p>Pytanie: Schemat z serwerem liderem nie spowalnia startu aplikacji w og\u00f3le? Jak Consul okre\u015bla nowego lidera, je\u015bli dzisiejszy jest niedost\u0119pny?<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Opisano ca\u0142y protok\u00f3\u0142. Je\u015bli to interesuj\u0105ce, mo\u017cna poczyta\u0107.<\/p>\n<p><\/p>\n<p>Pytanie: Consul dzia\u0142a jako pe\u0142noprawny serwer i wszystkie zapytania przechodz\u0105 przez niego?<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Nie pe\u0142ni roli pe\u0142noprawnego serwera, a zajmuje okre\u015blon\u0105 stref\u0119. Ko\u0144czy si\u0119 ona zazwyczaj na service.consul. A dalej idziemy ju\u017c wed\u0142ug logiki. Nie u\u017cywamy w produkcji nazw domenowych, a w\u0142a\u015bnie wewn\u0119trzn\u0105 infrastruktur\u0119, kt\u00f3ra zazwyczaj jest ukryta za serwerem buforuj\u0105cym, je\u015bli pracujemy w DNS.<\/p>\n<p><\/p>\n<p>Pytanie: Tzn. je\u015bli chcemy odwo\u0142a\u0107 si\u0119 do bazy danych, to w ka\u017cdym przypadku b\u0119dziemy musieli najpierw zwr\u00f3ci\u0107 si\u0119 do Consul, aby znale\u017a\u0107 t\u0119 baz\u0119, prawda?<\/p>\n<p><\/p>\n<p>Odpowied\u017a: Tak. Je\u015bli dzia\u0142amy w DNS, to dzia\u0142a bez Consul, gdy u\u017cywamy nazw DNS. Zazwyczaj nowoczesne aplikacje nie wywo\u0142uj\u0105 nazwy domenowej w ka\u017cdym zapytaniu, poniewa\u017c nawi\u0105za\u0142y\u015bmy po\u0142\u0105czenie, wszystko dzia\u0142a i w najbli\u017cszym czasie praktycznie tego nie u\u017cywamy. Je\u015bli po\u0142\u0105czenie zostanie zerwane, to tak, ponownie pytamy, gdzie znajdujemy baz\u0119 i idziemy do niej.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ru_hashicorp\">Czat dotycz\u0105cy produkt\u00f3w hashicorp<\/a><\/noindex> \u2014 Czat u\u017cytkownik\u00f3w Hashicorp: Consul, Nomad, Terraform<\/p>\n<p><\/p>\n<p>P.S. W sprawie health checks. W Consul, tak jak w Kubernetes, u\u017cywa si\u0119 tego samego systemu sprawdzania stanu \u017cywotno\u015bci us\u0142ugi na podstawie kodu statusu.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">200 OK dla zdrowych\n503 Service Unavailable dla chorych<\/code><\/pre>\n<p><\/p>\n<p>\u0179r\u00f3d\u0142a:<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>\u0179r\u00f3d\u0142o: <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.1.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\/pl\/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.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47Service Discovery w rozproszonych systemach na przyk\u0142adzie Consul. Aleksandr Siga\u0107ew | ProHoster","description":"Zach\u0119cam do zapoznania si\u0119 z analiz\u0105 referatu Aleksandra Siga\u0107ewa na temat Service Discovery w rozproszonych systemach na przyk\u0142adzie Consul. Service Discovery zosta\u0142 stworzony po to, aby z minimalnym.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/service-discovery-v-raspredelennyh-sistemah-na-primere-consul-aleksandr-sigachev","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/56387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=56387"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/56387\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=56387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=56387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=56387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}