Índice analítico[Ocultar][Mostrar]
Nunca se tomou en serio a dispoñibilidade de aplicacións como hoxe en día cando usamos aplicacións para algo máis que para comunicarse, xa sexa persoal ou profesional e cando as aplicacións son o negocio.
As aplicacións que non están constantemente en liña, ou son inestables, perden os seus usuarios e relevancia, quedando finalmente obsoletas. Ocorreu nun flash. Como Internet nunca dorme e funciona as 24 horas do día, os 7 días da semana, a mesma idea debe aplicarse ás aplicacións.
A escalabilidade é fundamental para facelo e garantir a dispoñibilidade das aplicacións. O balance de carga é un dos compoñentes máis importantes para garantir a dispoñibilidade. Moitas persoas aínda cren que o equilibrio de carga pódese conseguir cun simple script.
Non obstante, este non é o caso. Só proporciona acceso a programas en todo o mundo, en calquera momento e desde calquera dispositivo.
Nesta publicación, analizaremos en profundidade o equilibrio de carga, os seus algoritmos e como se relaciona cos microservizos, entre outras cousas. Imos comezar!
Que é o equilibrio de carga?
A medida que crece a demanda dun sitio web ou dunha aplicación empresarial, un único servidor pronto non poderá xestionar toda a carga. As organizacións distribúen a carga de traballo en numerosos servidores para satisfacer a demanda. Este método, coñecido como "equilibrio de carga", evita que un único servidor se sobrecargue, o que pode provocar que se ralentice, que abandone as solicitudes ou que se bloquee.
O balance de carga distribúe o tráfico de rede de forma equitativa para evitar fallos debido á sobrecarga de recursos. As aplicacións, sitios web, bases de datos e outros recursos informáticos funcionan mellor e están máis dispoñibles mediante este método. Tamén axuda a tramitar adecuadamente e oportunamente as solicitudes dos usuarios.
Desde a perspectiva do usuario, o equilibrio de carga serve como un intermediario invisible entre un cliente e unha colección de servidores, garantindo que non se descartan as solicitudes de conexión. As aplicacións, sitios web, bases de datos e servizos en liña probablemente colapsarían se a demanda fose demasiado grande sen o equilibrio de carga.
Pódense enviar centos de miles de solicitudes de usuarios a un único sitio web de alto tráfico ao mesmo tempo. Son necesarios varios servidores para encher correctamente as páxinas web co contido solicitado, como texto, imaxes, vídeo e transmisión de audio. O equilibrio de carga úsase habitualmente en granxas de servidores de sitios web de alto tráfico, así como en servidores DNS, bases de datos e sitios de protocolo de transferencia de ficheiros (FTP).
Se un único servidor está sobrecargado, isto podería funcionar mal ou mesmo fallar. Os equilibradores de carga reducen a posibilidade de tempo de inactividade distribuíndo as solicitudes dos usuarios de forma uniforme entre unha colección de servidores. Se un dos servidores do grupo falla, o tráfico desvíase a outros servidores do grupo. Un equilibrador de carga engade automaticamente novos servidores no proceso de distribución de tráfico cando se engaden ao grupo de servidores.
Como funciona o equilibrio de carga?
Funciona do seguinte xeito:
- Cando un cliente recibe unha solicitude, como a través dun navegador ou dunha aplicación, tenta conectarse co servidor.
- Cando un equilibrador de carga recibe unha solicitude, envíaa a un dos servidores dun grupo de servidores en función dos patróns establecidos polo algoritmo (ou granxa).
- O servidor recibe a solicitude de conexión e responde ao cliente a través do equilibrador de carga.
- Cando o equilibrador de carga recibe a resposta, fai coincidir o enderezo IP do cliente co enderezo IP do servidor seleccionado. Despois diso, a resposta transmítese co paquete.
- A descarga SSL é o proceso de descifrado de datos mediante o protocolo de cifrado Security Socket Layer para que os servidores non teñan que facelo.
- O proceso repítese ata rematar a sesión.
Métodos de equilibrio de carga
Para seleccionar cal dos servidores dunha granxa de servidores recibe a seguinte solicitude, cada técnica de equilibrio de carga utiliza un conxunto de criterios. Hai cinco enfoques típicos para o equilibrio de carga:
- Round Robin: Este é o enfoque predeterminado e funciona tal e como parece. O equilibrador de carga distribúe as solicitudes nun patrón rotativo, comezando polo primeiro servidor do grupo e baixando ata abaixo, onde agarda a ser chamado de novo. Este método garante que cada servidor manexa aproximadamente o mesmo número de conexións.
- Round Robin ponderado: Este enfoque atribúe a cada servidor un peso (ou preferencia) que é xeralmente proporcional á súa capacidade. Cantas máis solicitudes reciba un servidor, maior será o peso. Por exemplo, un servidor cun valor de peso de dous recibe o dobre de solicitudes que un servidor cun valor de peso de un.
- Sesión pegajosa: Este enfoque, tamén coñecido como persistencia da sesión, conecta certos clientes e servidores durante a duración dunha sesión. Para establecer a ligazón, o equilibrador de carga utiliza unha cookie ou o enderezo IP do usuario para identificar un atributo de usuario. Unha vez establecida a conexión, as solicitudes do usuario diríxense ao mesmo servidor ata que remate a sesión. Isto optimiza os recursos da rede ao mesmo tempo que mellora a experiencia do usuario.
- Conexións mínimas: Esta estratexia asume que todas as solicitudes resultan nunha carga de servidor igual. Como resultado, o servidor con menor número de solicitudes recibe a seguinte solicitude.
- Hash IP: Este algoritmo xera unha clave hash única baseada nos enderezos IP de orixe e destino do cliente e do servidor. A chave úsase para encamiñar a solicitude e permite retomar unha conexión perdida co mesmo servidor.
Hardware vs. Balanceadores de carga de software
Balanceador de carga de hardware
O hardware físico, como un dispositivo, constitúe os equilibradores de carga de hardware. Estes encamiñan o tráfico aos servidores dependendo de factores como o número de conexións existentes, o uso do procesador e o rendemento do servidor. Os equilibradores de carga de hardware teñen firmware propietario que debe manterse e actualizarse cando estean dispoñibles novas versións e correccións de seguranza.
Os equilibradores de carga de hardware adoitan ofrecer un maior rendemento e control, así como unha gama máis ampla de capacidades, como a autenticación Kerberos e a aceleración de hardware SSL, pero requiren certo nivel de experiencia en xestión e mantemento. Dado que os equilibradores de carga de hardware son menos flexibles e escalables que os equilibradores de carga de software, hai unha propensión a sobreabastecer os equilibradores de carga de hardware.
Balanceador de carga de software
Os equilibradores de carga de software adoitan ser máis fáciles de configurar que os seus homólogos de hardware. Tamén son máis rendibles e adaptables, e funcionan ben con ambientes de desenvolvemento de software. O método de software permítelle personalizar o equilibrador de carga segundo os requisitos exactos do seu contorno. A maior flexibilidade pode producirse a costa do tempo adicional dedicado a configurar o equilibrador de carga.
Os equilibradores de software ofrécenche unha maior flexibilidade para facer modificacións e actualizacións que os de hardware, que teñen un enfoque de caixa máis pechada. As máquinas virtuais preempaquetadas pódense usar como equilibradores de carga de software (VM). As máquinas virtuais aforrarán tempo de configuración, pero é posible que non teñan todas as funcións dispoñibles nos seus homólogos de hardware.
Implementación sinxela de balance de carga
Usaremos a biblioteca Spring Cloud para crear aplicacións que se conectan a outras aplicacións dun xeito equilibrado de carga. Mentres procesamos solicitudes de servizos remotos, podemos construír facilmente o equilibrio de carga usando a técnica que nos guste. Considere o seguinte código como exemplo. Comezaremos cunha aplicación de servidor básica.
O servidor só terá un punto final HTTP e operarase en varias instancias. A continuación, crearemos unha aplicación cliente que utilice Load Balancer para distribuír solicitudes en varias instancias do servidor.
servidor
Comezamos cun básico Bota de primavera aplicación para o noso servidor de exemplo:
Para comezar, inxectamos unha variable personalizable chamada instance_ID. Isto axúdanos a distinguir entre numerosas instancias que están a funcionar. Despois diso, creamos un único punto final HTTP GET que devolve unha mensaxe e unha ID de instancia.
A instancia predeterminada con ID 1 funcionará no porto 8080. Só necesitamos engadir algúns parámetros do programa para iniciar unha segunda instancia:
Cliente
Vexamos agora o código do cliente. Aquí é onde entra Load Balancer, entón imos comezar por incorporalo á nosa aplicación:
Despois diso, desenvolvemos unha implementación de ServiceInstanceListSupplier. Esta é unha das interfaces máis importantes de Load Balancer. Especifica como localizamos instancias de servizo accesibles.
Codificaremos dúas instancias separadas do noso servidor de exemplo na nosa aplicación de exemplo. Funcionan no mesmo sistema pero utilizan portos separados:
Crea agora unha clase de LoadBalancerConfiguration:
Esta clase só ten un propósito: crea un creador de WebClient con carga equilibrada para facer solicitudes remotas. A nosa anotación emprega un nome ficticio para o servizo.
Isto débese ao feito de que probablemente non saibamos os nomes de host e os portos precisos para executar instancias antes de tempo. Como resultado, utilizamos un nome ficticio como marcador de posición e o marco substituirá a información real cando seleccione unha instancia en execución.
A continuación, fagamos unha clase de configuración que se usará para crear unha instancia da nosa oferta de instancias de servizo. Teña en conta que usamos o mesmo alias que antes:
Agora podemos construír a aplicación cliente real. Enviemos 10 consultas ao servidor de mostra usando o bean WebClient anterior:
Na saída podemos ver que estamos equilibrando a carga entre dúas instancias separadas:
Equilibrio de carga en microservizos
A arquitectura de microservizos está a ser utilizada por varias empresas, como Netflix e Amazon, para desenvolver aplicacións empresariais como un conxunto de servizos pouco conectados. A hiperescala e a entrega continua para aplicacións complicadas son só dúas das razóns para pasar a esta arquitectura distribuída e pouco conectada.
Os equipos destas empresas implementaron estratexias Agile e DevOps para producir aplicacións máis rápido e cunha taxa de fracaso menor que os métodos tradicionais. Non obstante, debes atopar un equilibrio entre a complexidade da arquitectura distribuída e as demandas da aplicación, os requisitos de escala e as limitacións de tempo de comercialización.
Durante tantos anos, os controladores de entrega de aplicacións (ADC) foron fundamentais para cumprir os requisitos de nivel de servizo das aplicacións corporativas aloxadas na instalación ou na nube. Un cliente que interactúa cunha aplicación baseada en microservizos non precisa saber sobre as instancias que a están a proporcionar para facer crecer o cliente e os microservizos de forma independente.
Este é precisamente o desacoplamento proporcionado por un proxy inverso ou un equilibrador de carga. De novo, o equilibrio de carga é a solución para garantir que os microservizos poidan xestionar a demanda, a seguridade e a dispoñibilidade.
Cando combinas o equilibrio de carga tradicional Norte-Sur entre aplicacións baseadas en clientes e microservizos coa implementación Este-Oeste para a escalabilidade horizontal, obtén un impulso substancial. O obxectivo é manter o ambiente seguro e regulado que require a TI sen sacrificar a axilidade de desenvolvemento ou Automatización DevOps requisitos.
Beneficios
O equilibrio de carga ofrece varios beneficios ao mellorar a utilización dos recursos, a entrega de datos e o tempo de resposta para sitios web e aplicacións de alto tráfico, así como para bases de datos que reciben un gran número de consultas. O balance de carga garante que as solicitudes dos usuarios se atendan de forma rápida e correcta en escenarios de alto tráfico.
Aforran aos usuarios o agravamento de tratar con programas e recursos lentos. O equilibrio de carga tamén axuda a evitar o tempo de inactividade e simplifica a seguridade, reducindo o risco de perda de produtividade e ganancias para a túa empresa.
- O balance de carga ofrece a flexibilidade para engadir e eliminar servidores segundo a demanda, ademais de xestionar o tráfico de forma óptima. Dado que o tráfico se desvía a outros servidores durante o mantemento, tamén é factible realizar o mantemento do servidor sen interromper os usuarios.
- O equilibrio de carga proporciona redundancia integrada ao dividir o tráfico entre un conxunto de servidores. Pode desviar inmediatamente a carga a outros servidores se un falla, minimizando o impacto nos usuarios.
- Se o uso dunha aplicación ou sitio web crece, o aumento do tráfico pode degradar o seu rendemento se non se xestiona de forma eficaz. Co equilibrio de carga, pode engadir un servidor real ou virtual para satisfacer a demanda sen interromper o servizo. O equilibrador de carga identifica novos servidores a medida que se conectan e incorpóraos sen esforzo á operación. Este método é preferible a migrar un sitio web dun servidor sobrecargado a un novo, o que con frecuencia implica un tempo de inactividade.
Conclusión
O balance de carga é un compoñente crítico dos sistemas contemporáneos tolerantes a fallos. Simplemente podemos construír aplicacións que distribúan solicitudes a varias instancias de servizo utilizando varios enfoques de equilibrio de carga. As empresas deben soportar sistemas informáticos complicados para proporcionar aplicacións de forma segura.
A configuración, a implantación e o mantemento de microservizos entre dominios poden ser propensos a erros, ser caros e levar moito tempo. A TI debería utilizar as mellores prácticas e tecnoloxías de automatización, visibilidade, análise e orquestración que sexan compatibles cos seus procesos áxiles e DevOps para facilitar a configuración e o mantemento destes microservizos.
Deixe unha resposta