Kazalo[Skrij][Pokaži]
Razpoložljivost aplikacij še nikoli ni jemala tako resno kot danes, ko aplikacije uporabljamo za več kot samo komunikacijo, bodisi osebno ali profesionalno in ko so aplikacije posel.
Aplikacije, ki niso stalno na spletu ali so nestabilne, izgubijo svoje uporabnike in ustreznost ter sčasoma zastarijo. Zgodilo se je v hipu. Ker internet nikoli ne spi in deluje 24 ur na dan, 7 dni v tednu, mora ista ideja veljati za aplikacije.
Razširljivost je ključnega pomena za to in zagotavljanje razpoložljivosti aplikacij. Uravnavanje obremenitve je ena najpomembnejših komponent pri zagotavljanju razpoložljivosti. Mnogi ljudje še vedno verjamejo, da je mogoče izravnavo obremenitve doseči s preprostim skriptom.
Vendar temu ni tako. Samo zagotavlja dostop do programov po vsem svetu – kadarkoli in iz katere koli naprave.
V tej objavi si bomo med drugim podrobno ogledali uravnoteženje obremenitve, njegove algoritme in kako je povezano z mikro storitvami. Začnimo!
Kaj je uravnoteženje obremenitve?
Ker povpraševanje po spletnem mestu ali poslovni aplikaciji raste, en sam strežnik kmalu ne bo mogel prenesti celotne obremenitve. Organizacije porazdelijo delovno obremenitev na številne strežnike, da bi zadovoljile povpraševanje. Ta metoda, znana kot »uravnoteženje obremenitve«, preprečuje preobremenitev posameznega strežnika, kar lahko povzroči, da se upočasni, zavrne zahteve ali se celo zruši.
Uravnavanje obremenitve enakomerno porazdeli omrežni promet, da se izogne napakam zaradi preobremenitve virov. Aplikacije, spletna mesta, baze podatkov in drugi računalniški viri delujejo bolje in so bolj dostopni s to metodo. Pomaga tudi pri pravilni in pravočasni obdelavi zahtev uporabnikov.
Z vidika uporabnika uravnavanje obremenitve služi kot neviden posrednik med odjemalcem in zbirko strežnikov, ki zagotavlja, da zahteve za povezavo ne odpadejo. Aplikacije, spletna mesta, baze podatkov in spletne storitve bi se najverjetneje zrušile, če bi povpraševanje postalo preveliko brez uravnoteženja obremenitve.
Na eno spletno mesto z veliko prometa je mogoče hkrati poslati na stotine tisoč zahtev uporabnikov. Za pravilno zapolnitev spletnih strani z zahtevano vsebino, kot so besedilo, slike, video in zvok, je potrebnih več strežnikov. Uravnavanje obremenitve se običajno uporablja v farmah strežnikov spletnih mest z velikim prometom, pa tudi v strežnikih DNS, bazah podatkov in mestih s protokolom za prenos datotek (FTP).
Če je en sam strežnik preobremenjen, lahko ta deluje slabo ali se celo zruši. Uravnavalniki obremenitve zmanjšajo možnost izpada z enakomerno porazdelitvijo uporabniških zahtev med zbirko strežnikov. Če eden od strežnikov v skupini odpove, se promet preusmeri na druge strežnike v skupini. Uravnavalec obremenitve samodejno doda nove strežnike v proces distribucije prometa, ko so dodani v področje strežnikov.
Kako deluje uravnoteženje obremenitve?
Deluje na naslednji način:
- Ko odjemalec prejme zahtevo, na primer prek brskalnika ali aplikacije, se poskuša povezati s strežnikom.
- Ko uravnavalec obremenitve prejme zahtevo, jo usmeri na enega od strežnikov v skupini strežnikov na podlagi vzpostavljenih vzorcev z algoritmom (ali farmo).
- Strežnik prejme zahtevo za povezavo in odgovori odjemalcu prek izravnalnika obremenitve.
- Ko izenačevalnik obremenitve prejme odgovor, poveže naslov IP odjemalca z naslovom IP izbranega strežnika. Po tem se odgovor pošlje s paketom.
- SSL offload je postopek dešifriranja podatkov z uporabo protokola za šifriranje Security Socket Layer, tako da strežnikom ni treba.
- Postopek se ponavlja do konca seje.
Metode uravnavanja obremenitve
Če želite izbrati, kateri od strežnikov v farmi strežnikov prejme naslednjo zahtevo, vsaka tehnika uravnavanja obremenitve uporablja niz meril. Obstaja pet tipičnih pristopov za uravnoteženje obremenitve:
- round Robin: To je privzeti pristop in deluje tako, kot se sliši. Uravnavalec obremenitve porazdeli zahteve v vrtečem se vzorcu, začenši s prvim strežnikom v skupini in nadaljuje do dna, kjer čaka na ponovni klic. Ta metoda zagotavlja, da vsak strežnik obravnava približno enako število povezav.
- Uteženi krog: Ta pristop vsakemu strežniku dodeli težo (ali prednost), ki je na splošno sorazmerna z njegovo zmogljivostjo. Več zahtev prejme strežnik, večja je teža. Na primer, strežnik z vrednostjo teže dva prejme dvakrat več zahtev kot strežnik z vrednostjo teže ena.
- Lepljiva seja: Ta pristop, znan tudi kot obstojnost seje, povezuje določene odjemalce in strežnike za čas trajanja seje. Za vzpostavitev povezave uravnavalec obremenitve uporablja piškotek ali naslov IP uporabnika za prepoznavanje uporabniškega atributa. Ko je povezava vzpostavljena, so zahteve uporabnika usmerjene na isti strežnik, dokler se seja ne zaključi. To optimizira omrežne vire, hkrati pa izboljša uporabniško izkušnjo.
- Najmanj povezav: Ta strategija predpostavlja, da vse zahteve povzročijo enako obremenitev strežnika. Posledično strežnik z najmanjšim številom zahtev prejme naslednjo zahtevo.
- IP Hash: Ta algoritem ustvari edinstven hash ključ na podlagi odjemalčevega in strežniškega izvornega in ciljnega naslova IP. Ključ se uporablja za usmerjanje zahteve in omogoča nadaljevanje izgubljene povezave z istim strežnikom.
Strojna oprema vs. Programska oprema za uravnoteženje obremenitve
Izravnava obremenitve strojne opreme
Fizična strojna oprema, kot je naprava, sestavlja uravnoteženje obremenitve strojne opreme. Ti usmerjajo promet na strežnike glede na dejavnike, kot so število obstoječih povezav, uporaba procesorja in zmogljivost strežnika. Uravnavalniki obremenitve strojne opreme imajo lastniško vdelano programsko opremo, ki jo je treba vzdrževati in posodabljati, ko so na voljo nove različice in varnostni popravki.
Uravnavalniki obremenitve strojne opreme pogosto zagotavljajo večjo zmogljivost in nadzor ter širši nabor zmožnosti, kot sta preverjanje pristnosti Kerberos in pospeševanje strojne opreme SSL, vendar zahtevajo določeno raven strokovnega znanja za upravljanje in vzdrževanje. Ker so strojne naprave za uravnoteženje obremenitve manj prilagodljive in razširljive kot programske naprave za uravnoteženje obremenitve, obstaja nagnjenost k prekomernemu zagotavljanju strojne opreme za uravnoteženje obremenitve.
Programska oprema za uravnoteženje obremenitve
Programska oprema za uravnoteženje obremenitve je običajno enostavnejša za nastavitev kot njihove kolege strojne opreme. So tudi bolj stroškovno učinkoviti in prilagodljivi ter dobro delujejo z okolji za razvoj programske opreme. Programska metoda vam omogoča, da prilagodite balansirnik obremenitve natančnim zahtevam vašega okolja. Večja prilagodljivost lahko pride na račun dodatnega časa, porabljenega za nastavitev izravnalnika obremenitve.
Programski balansirji vam zagotavljajo večjo fleksibilnost pri spreminjanju in posodobitvah kot tisti za strojno opremo, ki imajo bolj zaprt pristop. Predpakirane navidezne stroje je mogoče uporabiti kot uravnoteženje obremenitve programske opreme (VM). Navidezni stroji vam bodo prihranili nekaj časa za nastavitev, vendar morda ne bodo imeli vseh funkcij, ki so na voljo v svojih kolegih strojne opreme.
Preprosta izvedba uravnoteženja obremenitve
Knjižnico Spring Cloud bomo uporabili za gradite aplikacije ki se povezujejo z drugimi aplikacijami na način z uravnoteženo obremenitvijo. Med obdelavo zahtev za storitve na daljavo lahko enostavno zgradimo uravnoteženje obremenitve s katero koli tehniko, ki nam je všeč. Upoštevajte naslednjo kodo kot primer. Začeli bomo z osnovno strežniško aplikacijo.
Strežnik bo imel samo eno končno točko HTTP in bo deloval v več primerih. Nato bomo zgradili odjemalsko aplikacijo, ki uporablja Load Balancer za distribucijo zahtev med več primerki strežnika.
Server
Začnemo z osnovnim Pomladni čevelj aplikacija za naš primer strežnika:
Za začetek vbrizgamo prilagodljivo spremenljivko, imenovano instance_ID. To nam pomaga razlikovati med številnimi primeri, ki delujejo. Po tem ustvarimo eno končno točko HTTP GET, ki vrne sporočilo in ID primerka.
Privzeti primerek z ID-jem 1 bo deloval na vratih 8080. Za zagon drugega primerka moramo dodati le nekaj parametrov programa:
Pomoč
Zdaj si oglejmo kodo odjemalca. Tu pride na vrsto Load Balancer, zato ga začnimo z vključitvijo v našo aplikacijo:
Po tem razvijemo implementacijo ServiceInstanceListSupplier. To je eden najpomembnejših vmesnikov v Load Balancer. Določa, kako najdemo dostopne primerke storitev.
V naši vzorčni aplikaciji bomo trdo kodirali dva ločena primerka našega primernega strežnika. Delujejo v istem sistemu, vendar uporabljajo ločena vrata:
Zdaj ustvarite razred LoadBalancerConfiguration:
Ta razred ima samo en namen: ustvari gradilnik WebClient z uravnoteženo obremenitvijo za izdelavo zahtev na daljavo. Naša opomba uporablja izmišljeno ime za storitev.
To je posledica dejstva, da najverjetneje ne bomo vedeli natančnih imen gostiteljev in vrat za zagon instanc pred časom. Posledično uporabljamo izmišljeno ime kot nadomestno mesto, okvir pa bo nadomestil dejanske informacije, ko izbere delujoči primerek.
Nato naredimo razred Configuration, ki bo uporabljen za instanciranje naše ponudbe primerka storitve. Upoštevajte, da uporabljamo isti vzdevek kot prej:
Zdaj lahko zgradimo pravo odjemalsko aplikacijo. Pošljimo 10 poizvedb vzorčnemu strežniku z uporabo bean WebClient iz prejšnjega:
Iz izhoda lahko vidimo, da uravnavamo obremenitev med dvema ločenima primerkoma:
Uravnavanje obremenitve v mikro storitvah
Mikroservisno arhitekturo uporablja več podjetij, kot sta Netflix in Amazon, za razvoj poslovnih aplikacij kot niza ohlapno povezanih storitev. Hiperrazširjena in neprekinjena dostava za zapletene aplikacije sta le dva od razlogov za prehod na to porazdeljeno, ohlapno povezano arhitekturo.
Ekipe teh podjetij so uvedle strategije Agile in DevOps, da bi ustvarile aplikacije hitreje in z nižjo stopnjo napak kot tradicionalne metode. Vendar pa morate najti ravnovesje med kompleksnostjo porazdeljene arhitekture in zahtevami aplikacije, zahtevami po obsegu in časovnimi omejitvami na trg.
Toliko let so bili krmilniki dostave aplikacij (ADC) ključnega pomena za izpolnjevanje zahtev na ravni storitev za korporativne aplikacije, ki gostujejo na mestu ali v oblaku. Odjemalcu, ki se ukvarja z aplikacijo, ki temelji na mikro storitvah, ni treba vedeti o primerkih, ki jo zagotavljajo, da bi lahko samostojno razvijali odjemalca in mikrostoritve.
Točno to je ločitev, ki jo zagotavlja povratni proxy ali balansirnik obremenitve. Ponovno je uravnoteženje obremenitve rešitev za zagotavljanje, da lahko mikrostoritve obravnavajo povpraševanje, varnost in razpoložljivost.
Ko združite tradicionalno izravnavo obremenitve sever-jug med aplikacijami, ki temeljijo na odjemalcu in mikro storitvah, z uvajanjem vzhod-zahod za horizontalno razširljivost, dobite znatno povečanje. Cilj je ohraniti varno in urejeno okolje, ki ga zahteva IT, ne da bi pri tem žrtvovali razvojno agilnost oz Avtomatizacija DevOps zahteve.
prednosti
Uravnavanje obremenitve zagotavlja različne prednosti z izboljšanjem izrabe virov, dostave podatkov in odzivnega časa za spletna mesta in aplikacije z velikim prometom ter baze podatkov, ki prejemajo veliko število poizvedb. Uravnavanje obremenitve zagotavlja, da so zahteve uporabnikov hitro in pravilno izpolnjene v scenarijih z velikim prometom.
Uporabnikom prihranijo poslabšanje obravnave počasnih programov in virov. Uravnavanje obremenitve prav tako pomaga preprečiti izpade in poenostavi varnost ter zmanjša tveganje izgube produktivnosti in zaslužka za vaše podjetje.
- Uravnavanje obremenitve zagotavlja prilagodljivost za dodajanje in odstranjevanje strežnikov, kot narekuje povpraševanje, poleg upravljanja prometa z optimalno učinkovitostjo. Ker je promet med vzdrževanjem preusmerjen na druge strežnike, je mogoče tudi vzdrževati strežnike, ne da bi motili uporabnike.
- Uravnavanje obremenitve zagotavlja vgrajeno redundanco z razdelitvijo prometa med nabor strežnikov. Če eden od njih ne uspe, lahko obremenitev takoj preusmerite na druge strežnike, kar zmanjša vpliv na uporabnike.
- Če se uporaba aplikacije ali spletnega mesta poveča, lahko povečan promet poslabša njeno delovanje, če se ne obravnava učinkovito. Z uravnoteženjem obremenitve lahko dodate resnični ali virtualni strežnik, da zadovoljite povpraševanje, ne da bi motili storitev. Uravnavalec obremenitve prepozna nove strežnike, ko pridejo na splet, in jih brez težav vključi v delovanje. Ta metoda je boljša kot selitev spletnega mesta s preobremenjenega strežnika na novega, kar pogosto vključuje nekaj izpadov.
zaključek
Uravnavanje obremenitve je kritična komponenta sodobnih sistemov, ki so odporni na napake. Preprosto lahko izdelamo aplikacije, ki distribuirajo zahteve več primerkom storitev z uporabo različnih pristopov uravnoteženja obremenitve. Podjetja morajo podpirati zapletene IT sisteme, da lahko varno zagotavljajo aplikacije.
Konfiguracija, uvajanje in vzdrževanje mikrostoritev med domenami so lahko nagnjeni k napakam, dragi in dolgotrajni. IT bi moral uporabljati najboljše prakse in tehnologije za avtomatizacijo, vidnost, analitiko in orkestracijo, ki so združljive z njihovimi agilnimi in DevOps procesi, da bi olajšali nastavitev in vzdrževanje teh mikrostoritev.
Pustite Odgovori