{"id":136180,"date":"2024-02-16T16:43:00","date_gmt":"2024-02-16T15:43:00","guid":{"rendered":"https:\/\/fotc.com\/?p=136180"},"modified":"2024-02-18T18:47:37","modified_gmt":"2024-02-18T17:47:37","slug":"load-balancer","status":"publish","type":"post","link":"https:\/\/fotc.com\/pl\/blog\/load-balancer\/","title":{"rendered":"Load balancer od Google Cloud – co to jest i jak u\u017cywa\u0107? [TUTORIAL]"},"content":{"rendered":"\n

<\/p>\n\n\n\n

R\u00f3wnowa\u017cenie obci\u0105\u017cenia, czyli w\u0142a\u015bnie load balancing, jest technik\u0105 u\u017cywan\u0105 w sieciach komputerowych oraz systemach informatycznych do roz\u0142o\u017cenia obci\u0105\u017cenia na wiele zasob\u00f3w lub serwer\u00f3w. Obci\u0105\u017ceniem mo\u017ce by\u0107 np. ruch sieciowy czy \u017c\u0105dania klient\u00f3w, a celem load balancingu jest zoptymalizowanie wydajno\u015bci, zapewnienie niezawodno\u015bci i dost\u0119pno\u015bci us\u0142ug. <\/p>\n\n\n\n

Szczeg\u00f3lnym przypadkiem load balancingu jest r\u00f3wnowa\u017cenie obci\u0105\u017cenia w chmurze. Je\u017celi jeste\u015b tw\u00f3rc\u0105 aplikacji, kt\u00f3ra zaczyna odnosi\u0107 skuces i staje si\u0119 popularna na ca\u0142ym \u015bwiecie, to w pewnym momenci mo\u017ce pojawi\u0107 si\u0119 obawa o w\u0142a\u015bciwe skalowanie, optymalizacj\u0119 i zabezpieczenie aplikacji przy utrzymaniu zadowolenia u\u017cytkownik\u00f3w. W tym momencie do dzie\u0142a wkracza load balancing.<\/p>\n\n\n\n

Co to jest r\u00f3wnowa\u017cenie obci\u0105\u017cenia w chmurze?<\/h2>\n\n\n\n

R\u00f3wnowa\u017cenie obci\u0105\u017cenia, czyli load balancing w chmurze, to w pe\u0142ni rozproszone, definiowane programowo rozwi\u0105zanie, kt\u00f3re r\u00f3wnowa\u017cy ruch u\u017cytkownik\u00f3w do wielu backend\u00f3w, aby unikn\u0105\u0107 zator\u00f3w i zapewni\u0107 niskie op\u00f3\u017anienia (latencj\u0119). Istniej\u0105 r\u00f3\u017cne rodzaje r\u00f3wnowa\u017cenia obci\u0105\u017cenia, w zale\u017cno\u015bci od rodzaju ruchu, z kt\u00f3rym masz do czynienia, globalnego lub regionalnego. <\/p>\n\n\n\n

Jak dzia\u0142a load balancer w chmurze?<\/h2>\n\n\n\n

Za\u0142\u00f3\u017cmy, \u017ce jeden z u\u017cytkowni\u00f3w aplikacji znajduje si\u0119 w Nowym Jorku, czyli w regionie us-east4. \u017beby Twoja aplikacja mog\u0142a dzia\u0142a\u0107 najefektywniej, dobrze je\u017celi wdro\u017cysz w tym regionie instanck\u0119 backendow\u0105 i skonfigurujesz wirtualny adres IP r\u00f3wnowa\u017c\u0105cy obci\u0105\u017cenie. <\/p>\n\n\n\n

Je\u017celi odkryjesz, \u017ce w innych regionach r\u00f3nie\u017c przybywa u\u017cytkownik\u00f3w, to r\u00f3wnie\u017c tam utw\u00f3rz instacje backendowe. Robi\u0105c to mo\u017cesz by\u0107 pewien, \u017ce nie pojawi\u0105 si\u0119 zmiany w wirtualnym adresie IP ani ustawieniach us\u0142ugi DNS. <\/p>\n\n\n\n

Tworzenie instancji w r\u00f3\u017cnych regionach daj\u0119 Ci pewn\u0105 elastyczno\u015b\u0107. Co si\u0119 stanie, je\u017celi przyk\u0142adowo Twoi u\u017cytkownicy z Indii, kt\u00f3rzy kierowani s\u0105 do instacji w tamtejszym regionie trafi\u0105 na ich przeci\u0105\u017cenie? W tamim przypadku instancj\u0119 zaczna si\u0119 automatycznie skalowa\u0107 w g\u00f3r\u0119, aby odpowiedzie\u0107 na dodatkowe obci\u0105\u017cenie, a sami u\u017cytkownicy na czas tej zmiany zostan\u0105 przekierowani do instancji backendowych w innym refgionie. Po bezproblemowym przeskalowaniu instancji w pierwotnym regionie, u\u017cytkownicy zostan\u0105 z powrotem przypisani do oryginalnych instancji.<\/p>\n\n\n\n

R\u00f3wnowa\u017cenie obci\u0105\u017cenia w chmurze wykorzystuje wirtualne adresy IP typu anycast, zapewniaj\u0105c pojedynczy, globalny wirtualny adres IP frontonu. To co jest szczeg\u00f3lnie wa\u017cne dla u\u017cytkownik\u00f3w, to fakt i\u017c load balancing w chmruze zapewnia mi\u0119dzyregionalne prze\u0142\u0105czanie awaryjne, szybkie automatyczne skalowanie i skalowanie do milion\u00f3w zapyta\u0144 na sekund\u0119. Mamy tu do czynienia z zewn\u0119trznym r\u00f3wnowa\u017ceniem obci\u0105\u017cenia w warstwie 7. <\/p>\n\n\n\n

W przypadku aplikacjki tr\u00f3jwarstwowej, po frontendzie trafiasz na oprogramowanie po\u015brednicz\u0105ce (middleware) oraz \u017ar\u00f3d\u0142a danych, z kt\u00f3rymi mo\u017cesz wchodzi\u0107 w interakcj\u0119, aby spe\u0142ni\u0107 \u017c\u0105danie u\u017cytkownika. Tutaj potrzebujesz dodatkowej, czwartej warstwy, kt\u00f3r\u0105 stanowi wewn\u0119trzny load balancer, umiejscowiony mi\u0119dzy frontendem a pozosta\u0142ymi warstwami wewn\u0119trznymi.<\/p>\n\n\n\n

Wewn\u0119trzne r\u00f3wnowa\u017cenie obci\u0105\u017cenia warstwy 4 jest przeznaczone dla ruchu TCP\/UDP za RFC 1918 VIP, gdzie zachowany jest adres IP klienta. To co otrzymujesz to m.in. automatyczne kontrole stanu przy braku \u015brodkowego serwera proxy (middle proxy). Do r\u00f3nowa\u017cenia obci\u0105\u017cenia wykorzystywane s\u0105 zdefiniowane programowo elementy steruj\u0105ce sieci\u0105 i p\u0142aszczyzn\u0105 danych.<\/p>\n\n\n\n

Jak korzysta\u0107 z load balancingu w chmurze?<\/h2>\n\n\n\n

Przyjrzyjmy si\u0119 modelowi dzia\u0142ania danych Cloud Load Balancingu w praktyce, czyli w chmurze Google Cloud<\/a>.  Do globalnego r\u00f3wnowa\u017cenia obci\u0105\u017cenia HTTP(S) dost\u0119pne s\u0105 globalne wirtualne adresy IP anycast, IPv4 lub IPv6, powi\u0105zane z regu\u0142\u0105 przekazywania (forwarding rule), kt\u00f3ra kieruje ruch do docelowego serwera proxy, kt\u00f3y ko\u0144czy sesj\u0119 klienta. Oczywi\u015bcie w przypadku protoko\u0142u HTTP(S) jest to te\u017c miejsce, w kt\u00f3ym wdra\u017casz certyfikaty.<\/p>\n\n\n\n

\"\"\/<\/figure>\n\n\n\n

Co wa\u017cne, nie m\u00f3wimy w tym wypadku o pojedynczym urz\u0105dzeniu, ale logice rozproszonej w ca\u0142ej infrastrukturze. Skonfigurowana mapa URL zapewnia routing w warstwie 7 i kieruje \u017c\u0105danie klienta do odpowiedniej us\u0142ugi backendu. Us\u0142ugami backendu mog\u0105 by\u0107 zarz\u0105dzane grupy instancji lub grupy punkt\u00f3w ko\u0144cowych sieci dla konteneryzowanych obci\u0105\u017ce\u0144. <\/p>\n\n\n\n

Jest to r\u00f3wnie\u017c miejsce, w kt\u00f3ym okre\u015bla si\u0119 pojemno\u015b\u0107 i kondycj\u0119 us\u0142ugi, a Cloud CDN umo\u017cliwia buforowanie tre\u015bci w celu poprawy wydajno\u015bci. To w\u0142a\u015bnie tutaj mo\u017cesz skonfigurowa\u0107 regu\u0142y zapory sieciowej, aby kontrolowa\u0107 ruch do i z backendu. <\/p>\n\n\n\n

Wewn\u0119trzna konfiguracja load balancingu dzia\u0142a w ten sam spos\u00f3b. Nadal mamy regu\u0142\u0119 przekazywania, ale tutaj wskazuje ona bezpo\u015brednio na us\u0142ug\u0119 backendu. Regu\u0142a przekazywania ma wirtualny adres IP, protok\u00f3\u0142 i maksymalnie pi\u0119\u0107 port\u00f3w.<\/p>\n\n\n\n

Jak zadba\u0107 o bezpiecze\u0144stwo?<\/h2>\n\n\n\n

Google w kwestiach bezpiecze\u0144stwa cz\u0119sto odnosi si\u0119 do dobrych praktyk. Jak wygl\u0105daj\u0105 one w tym przypadku? Po pierwsze, postaraj si\u0119 wsz\u0119dzie zastosowa\u0107 protok\u00f3\u0142 SSL. Dzi\u0119ki r\u00f3wnowa\u017ceniu obci\u0105\u017cenia proxy HTTP(S) i SSL mo\u017cesz korzysta\u0107 z certyfikat\u00f3w zarz\u0105dzanych przez Google. W och przypadku Google zajmuje si\u0119 dostarczaniem i zarz\u0105dzaniem cyklem \u017cycia certyfikatu SSL. <\/p>\n\n\n\n

Us\u0142uga Cloud Load Balancing pozwala tak\u017ce na obs\u0142ug\u0119 wielu certyfikat\u00f3w SSL, co sprawdzi si\u0119 szczeg\u00f3lnie w sytuacji, w kt\u00f3rej chcesz obs\u0142ugiwa\u0107 wiele domen przy u\u017cyciu tego samego adresu IP i portu r\u00f3wnowa\u017c\u0105cego obci\u0105\u017cenie. Globalne r\u00f3wnowa\u017cenie obci\u0105\u017cenia absorbuje i rozprasza ataki wolumetryczne z warstwy 3, 4 na globaln\u0105 infrastruktur\u0119 r\u00f3wnowa\u017cenia obci\u0105\u017cenia Google. Dodatkowo, korzystaj\u0105c z Cloud Armor, mo\u017cesz chroni\u0107 si\u0119 przed atakami na poziomie aplikacji od warstwy 3 do 7. U\u017cywaj\u0105c Identity Aware Proxy i zap\u00f3r sieciowych, mo\u017cesz uwierzytelnia\u0107 i autoryzowa\u0107 dost\u0119p do swoich backend\u00f3w.<\/p>\n\n\n

\r\n
\r\n
\r\n
\r\n Skonfiguruj Load Balancer<\/span>\r\n <\/div>\r\n
\r\n \r\n <\/div>\r\n <\/div>\r\n
\r\n

Skorzystaj z pomocy certyfikowanych architekt\u00f3w Google Cloud<\/p><\/div>\r\n

\r\n Porozmawiajmy<\/a>\r\n \r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n<\/div>\n\n\n

Uruchamianie klasycznego load balancera dla aplikacji w chmurze<\/h2>\n\n\n\n

Zobaczmy jak w kilku krokach skonfigurowa\u0107 zewn\u0119trzny modu\u0142 r\u00f3wnowa\u017cenia obci\u0105\u017cenia apliakcji za pomoc\u0105 backendu grupy instancji zarz\u0105dzanej przez Compute Engine. <\/p>\n\n\n\n

Konfiguracja zasobu certyfikatu SSL<\/h3>\n\n\n\n

Zanim rozpoczniesz tworzenie load balancera koniecznie skonfiguruj zas\u00f3b certyfikatu SSL. Google rekomenduje skorzystanie z certyfikat\u00f3w zarz\u0105dzanych przez Google.  <\/p>\n\n\n\n

Konfiguracja uprawnie\u0144<\/h3>\n\n\n\n

Pami\u0119taj, \u017ce musisz mie\u0107 uprawnienia do tworzenia instancji Compute Engine, regu\u0142 zapory sieciowej oraz zarezerwowanych adres\u00f3w IP w projekcie. Uznawane role to w\u0142a\u015bciciel projektu lub redaktor. Mo\u017cesz te\u017c posiada\u0107 poni\u017csze role, w zale\u017cno\u015bci od zadania:<\/p>\n\n\n\n