Taula de continguts[Amaga][Espectacle]
La disponibilitat d'aplicacions mai s'ha pres tan seriosament com ho és avui quan fem servir les aplicacions per a més que per a la comunicació, ja sigui personal o professional i quan les aplicacions són el negoci.
Les aplicacions que no estan constantment en línia, o són inestables, perden els seus usuaris i rellevància i, finalment, queden obsoletes. Va passar en un instant. Com que Internet mai dorm i funciona les 24 hores del dia, els 7 dies de la setmana, la mateixa idea s'ha d'aplicar a les aplicacions.
L'escalabilitat és fonamental per fer-ho i garantir la disponibilitat de les aplicacions. L'equilibri de càrrega és un dels components més importants per garantir la disponibilitat. Molta gent encara creu que l'equilibri de càrrega es pot aconseguir amb un script senzill.
No obstant això, aquest no és el cas. Només proporciona accés a programes d'arreu del món, en qualsevol moment i des de qualsevol dispositiu.
En aquesta publicació, analitzarem en profunditat l'equilibri de càrrega, els seus algorismes i com es relaciona amb els microserveis, entre altres coses. Anem a començar!
Què és l'equilibri de càrrega?
A mesura que la demanda d'un lloc web o d'una aplicació empresarial creixi, un sol servidor aviat no podrà gestionar tota la càrrega. Les organitzacions distribueixen la càrrega de treball en nombrosos servidors per tal de satisfer la demanda. Aquest mètode, conegut com a "equilibri de càrrega", evita que un únic servidor es sobrecarregui, cosa que pot provocar que s'alenteixi, sol·liciti sol·licituds o fins i tot es bloquegi.
L'equilibri de càrrega distribueix el trànsit de xarxa per igual per evitar errors a causa de la sobrecàrrega de recursos. Les aplicacions, llocs web, bases de dades i altres recursos informàtics funcionen millor i estan més disponibles amb aquest mètode. També ajuda a la tramitació adequada i oportuna de les sol·licituds dels usuaris.
Des de la perspectiva de l'usuari, l'equilibri de càrrega serveix com a intermediari invisible entre un client i una col·lecció de servidors, assegurant que les sol·licituds de connexió no s'eliminin. Les aplicacions, els llocs web, les bases de dades i els serveis en línia probablement es col·lapsarien si la demanda fos massa gran sense l'equilibri de càrrega.
Centenars de milers de sol·licituds d'usuari es poden enviar a un únic lloc web d'alt trànsit alhora. Es requereixen diversos servidors per omplir correctament les pàgines web amb el contingut sol·licitat, com ara text, imatges, vídeo i streaming d'àudio. L'equilibri de càrrega s'utilitza habitualment en granges de servidors de llocs web d'alt trànsit, així com en servidors DNS, bases de dades i llocs de protocol de transferència de fitxers (FTP).
Si un únic servidor està sobrecarregat, això podria funcionar malament o fins i tot fallar. Els equilibradors de càrrega redueixen la possibilitat de temps d'inactivitat distribuint les sol·licituds dels usuaris de manera uniforme entre una col·lecció de servidors. Si un dels servidors del grup falla, el trànsit es redirigeix a altres servidors del grup. Un equilibrador de càrrega afegeix automàticament nous servidors al procés de distribució del trànsit quan s'afegeixen a l'agrupació de servidors.
Com funciona l'equilibri de càrrega?
Funciona de la següent manera:
- Quan un client rep una sol·licitud, com per exemple mitjançant un navegador o una aplicació, intenta connectar-se amb el servidor.
- Quan un equilibrador de càrrega rep una sol·licitud, l'encamina a un dels servidors d'un grup de servidors en funció dels patrons establerts per l'algorisme (o granja).
- El servidor rep la sol·licitud de connexió i respon al client mitjançant l'equilibrador de càrrega.
- Quan l'equilibrador de càrrega rep la resposta, fa coincidir l'adreça IP del client amb l'adreça IP del servidor seleccionat. A continuació, la resposta es transmet amb el paquet.
- La descàrrega SSL és el procés de desxifrar les dades mitjançant el protocol de xifratge de la capa de socket de seguretat perquè els servidors no hagin de fer-ho.
- El procés es repeteix fins que s'acaba la sessió.
Mètodes d'equilibri de càrrega
Per seleccionar quins dels servidors d'una granja de servidors rep la següent sol·licitud, cada tècnica d'equilibri de càrrega utilitza un conjunt de criteris. Hi ha cinc enfocaments típics per a l'equilibri de càrrega:
- Round Robin: Aquest és l'enfocament predeterminat i funciona tal com sembla. L'equilibrador de càrrega distribueix les sol·licituds en un patró rotatiu, començant pel primer servidor del grup i baixant fins a la part inferior, on espera ser cridat de nou. Aquest mètode garanteix que cada servidor gestioni aproximadament el mateix nombre de connexions.
- Round Robin ponderat: Aquest enfocament assigna a cada servidor un pes (o preferència) que és generalment proporcional a la seva capacitat. Com més sol·licituds rep un servidor, més gran serà el pes. Per exemple, un servidor amb un valor de pes de dos rep el doble de sol·licituds que un servidor amb un valor de pes d'un.
- Sessió enganxosa: aquest enfocament, també conegut com a persistència de sessió, connecta determinats clients i servidors durant la durada d'una sessió. Per establir l'enllaç, l'equilibrador de càrrega utilitza una galeta o l'adreça IP de l'usuari per identificar un atribut d'usuari. Un cop establerta la connexió, les peticions de l'usuari es dirigeixen al mateix servidor fins que finalitza la sessió. Això optimitza els recursos de la xarxa alhora que millora l'experiència de l'usuari.
- Menys connexions: aquesta estratègia suposa que totes les sol·licituds donen lloc a una càrrega del servidor igual. Com a resultat, el servidor amb el menor nombre de peticions rep la següent sol·licitud.
- IP Hash: aquest algorisme genera una clau hash única basada en les adreces IP d'origen i de destinació del client i del servidor. La clau s'utilitza per encaminar la sol·licitud i permet reprendre una connexió perduda amb el mateix servidor.
Maquinari vs. Equilibradors de càrrega de programari
Equilibrador de càrrega de maquinari
El maquinari físic, com ara un aparell, constitueix els equilibradors de càrrega de maquinari. Aquests encaminen el trànsit als servidors en funció de factors com ara el nombre de connexions existents, l'ús del processador i el rendiment del servidor. Els equilibradors de càrrega de maquinari tenen un microprogramari propietari que s'ha de mantenir i actualitzar quan estiguin disponibles noves versions i solucions de seguretat.
Els equilibradors de càrrega de maquinari solen oferir un major rendiment i control, així com una gamma més àmplia de capacitats, com ara l'autenticació Kerberos i l'acceleració de maquinari SSL, però requereixen un cert nivell d'experiència en gestió i manteniment. Com que els equilibradors de càrrega de maquinari són menys flexibles i escalables que els equilibradors de càrrega de programari, hi ha una propensió a sobreprovisionar els equilibradors de càrrega de maquinari.
Equilibrador de càrrega de programari
Els equilibradors de càrrega de programari solen ser més fàcils de configurar que els seus homòlegs de maquinari. També són més rendibles i adaptables, i funcionen bé amb entorns de desenvolupament de programari. El mètode del programari us permet personalitzar l'equilibrador de càrrega segons els requisits exactes del vostre entorn. L'augment de la flexibilitat es pot produir a costa del temps addicional dedicat a configurar l'equilibrador de càrrega.
Els equilibradors de programari us proporcionen una major flexibilitat per fer modificacions i actualitzacions que els de maquinari, que tenen un enfocament més tancat. Les màquines virtuals preempaquetades es poden utilitzar com a equilibradors de càrrega de programari (VM). Les màquines virtuals us estalviaran una mica de temps de configuració, però és possible que no tinguin totes les funcionalitats disponibles als seus homòlegs de maquinari.
Implementació simple d'equilibri de càrrega
Utilitzarem la biblioteca Spring Cloud per crear aplicacions que es connecten a altres aplicacions d'una manera equilibrada de càrrega. Mentre processem les sol·licituds de servei remot, podem construir fàcilment l'equilibri de càrrega utilitzant la tècnica que ens agradi. Considereu el codi següent com a exemple. Començarem amb una aplicació de servidor bàsica.
El servidor només tindrà un punt final HTTP i funcionarà en diversos casos. A continuació, crearem una aplicació client que utilitzi Load Balancer per distribuir sol·licituds entre diverses instàncies del servidor.
Server
Comencem amb un bàsic Arrencada de primavera aplicació per al nostre servidor d'exemple:
Per començar, injectem una variable personalitzable anomenada instance_ID. Això ens ajuda a distingir entre nombroses instàncies que estan operant. Després d'això, creem un únic punt final HTTP GET que retorna un missatge i un ID d'instància.
La instància predeterminada amb ID 1 funcionarà al port 8080. Només hem d'afegir uns quants paràmetres del programa per iniciar una segona instància:
client
Fem ara una ullada al codi del client. Aquí és on entra Load Balancer, així que comencem per incorporar-lo a la nostra aplicació:
Després d'això, desenvolupem una implementació de ServiceInstanceListSupplier. Aquesta és una de les interfícies més importants de Load Balancer. Especifica com localitzem les instàncies de servei accessibles.
Codificarem dues instàncies separades del nostre servidor d'exemple a la nostra aplicació d'exemple. S'executen al mateix sistema però utilitzen ports separats:
Creeu una classe LoadBalancerConfiguration ara:
Aquesta classe només té un objectiu: crea un constructor WebClient amb equilibri de càrrega per fer sol·licituds remotes. La nostra anotació utilitza un nom fictici per al servei.
Això es deu al fet que probablement no sabrem els noms d'amfitrió i els ports precisos per executar instàncies amb antelació. Com a resultat, utilitzem un nom fictici com a marcador de posició i el marc substituirà la informació real quan selecciona una instància en execució.
A continuació, fem una classe de configuració que s'utilitzarà per crear una instancia del nostre subministrament d'instàncies de servei. Tingueu en compte que utilitzem el mateix àlies que abans:
Ara podem construir l'aplicació client real. Enviem 10 consultes al servidor de mostra mitjançant el bean WebClient d'anterior:
Podem veure a la sortida que estem equilibrant la càrrega entre dues instàncies separades:
Equilibri de càrrega en microserveis
Diverses empreses, com Netflix i Amazon, estan utilitzant l'arquitectura de microserveis per desenvolupar aplicacions empresarials com un conjunt de serveis poc connectats. La hiperescala i el lliurament continu per a aplicacions complicades són només dues de les raons per passar a aquesta arquitectura distribuïda i poc connectada.
Els equips d'aquestes empreses han implementat estratègies Agile i DevOps per tal de produir aplicacions més ràpidament i amb una taxa de fracàs més baixa que els mètodes tradicionals. Tanmateix, heu d'aconseguir un equilibri entre la complexitat de l'arquitectura distribuïda i les demandes de l'aplicació, els requisits d'escala i les limitacions de temps de llançament al mercat.
Durant tants anys, els controladors de lliurament d'aplicacions (ADC) han estat fonamentals per complir els requisits de nivell de servei per a les aplicacions corporatives allotjades a les instal·lacions o al núvol. Un client que interacciona amb una aplicació basada en microserveis no necessita saber sobre les instàncies que la proporcionen per tal de fer créixer el client i els microserveis de manera independent.
Aquest és precisament el desacoblament proporcionat per un servidor intermediari invers o un equilibrador de càrrega. De nou, l'equilibri de càrrega és la solució per garantir que els microserveis puguin gestionar la demanda, la seguretat i la disponibilitat.
Quan combineu l'equilibri de càrrega tradicional Nord-Sud entre aplicacions basades en clients i microserveis amb el desplegament Est-Oest per a una escalabilitat horitzontal, obteniu un impuls substancial. L'objectiu és mantenir l'entorn segur i regulat que requereix TI sense sacrificar l'agilitat de desenvolupament o Automatització DevOps requisits.
Beneficis
L'equilibri de càrrega ofereix diversos avantatges en millorar l'ús dels recursos, l'entrega de dades i el temps de resposta per a llocs web i aplicacions d'alt trànsit, així com per a bases de dades que reben un gran nombre de consultes. L'equilibri de càrrega garanteix que les sol·licituds dels usuaris es compleixin ràpidament i correctament en escenaris d'alt trànsit.
Estalvien als usuaris l'agreujament de fer front a programes i recursos lents. L'equilibri de càrrega també ajuda a evitar temps d'inactivitat i simplifica la seguretat, reduint el risc de pèrdua de productivitat i guanys per a la vostra empresa.
- L'equilibri de càrrega proporciona la flexibilitat per afegir i eliminar servidors segons la demanda, a més de gestionar el trànsit amb una eficiència òptima. Com que el trànsit es desvia a altres servidors durant el manteniment, també és factible dur a terme el manteniment del servidor sense interrompre els usuaris.
- L'equilibri de càrrega proporciona redundància integrada dividint el trànsit entre un conjunt de servidors. Podeu desviar immediatament la càrrega a altres servidors si un falla, minimitzant l'impacte sobre els usuaris.
- Si creix l'ús d'una aplicació o lloc web, l'augment del trànsit pot degradar el seu rendiment si no es gestiona de manera eficaç. Amb l'equilibri de càrrega, podeu afegir un servidor real o virtual per satisfer la demanda sense interrompre el servei. L'equilibrador de càrrega identifica nous servidors a mesura que es connecten i els incorpora sense esforç a l'operació. Aquest mètode és preferible a migrar un lloc web des d'un servidor sobrecarregat a un de nou, que sovint implica un temps d'inactivitat.
Conclusió
L'equilibri de càrrega és un component crític dels sistemes contemporanis tolerants a errors. Simplement podem construir aplicacions que distribueixen sol·licituds a diverses instàncies de servei mitjançant diversos enfocaments d'equilibri de càrrega. Les empreses han de donar suport a sistemes informàtics complicats per oferir aplicacions de manera segura.
La configuració, el desplegament i el manteniment de microserveis entre dominis poden ser propensos a errors, costosos i consumint temps. La TI hauria d'utilitzar les millors pràctiques i tecnologies d'automatització, visibilitat, anàlisi i orquestració que siguin compatibles amb els seus processos àgils i DevOps per facilitar la configuració i el manteniment d'aquests microserveis.
Deixa un comentari