Всичко, което трябва да знаете

Балансиращите натоварването на приложения интелигентно осигуряват мащабируемост, производителност и наличност. Те също така гарантират, че вашите сървъри не са претоварени и са готови да се справят с пикове в трафика.

Инфраструктурата за сигурност на всеки ИТ екип е изградена около балансьори на натоварването. Load Balancers гарантират, че вашето приложение може да се справи с входящия трафик. В тази статия ще обсъдим по-подробно балансиращото натоварване на приложенията в AWS.

Какво е Application Load Balancer?

Application Load Balancer, известен още като ALB, е Еластичен балансьор на натоварването или ELB на AWS. Той работи на приложния слой (седмия слой) на модела за свързване на отворени системи (OSI).

ALB имат три компонента – слушатели, балансьор на натоварването и целевата група. След като получи заявка, инструментът за балансиране на натоварването оценява правилата на слушателя в приоритетен ред (за да избере кое правило да изпълни). След това избира цел от целевата група за действието на правилото.

Можете да настроите правила за слушане, за да изпращате заявки до различни целеви групи в зависимост от съдържанието на трафика на приложението. Алгоритъмът за маршрутизиране по подразбиране за ALBs е Round-robin; въпреки това можете да изберете техниката за маршрутизиране на най-малко неизпълнените заявки.

Тъй като вашите нужди се променят, можете да изтривате и добавяте цели от вашия балансьор на натоварването, без да прекъсвате общия поток от заявки на вашето приложение.

Еластичното балансиране на натоварването (ELB) ви позволява да мащабирате вашия балансьор на натоварването, тъй като трафикът на вашето приложение се променя с течение на времето. Всички Elastic Load Balancers могат автоматично да се мащабират до по-голямата част от работните натоварвания.

Можете също така да създадете проверки на изправността, за да наблюдавате състоянието на вашето приложение върху регистрираните цели, така че балансиращият натоварване да изпраща заявки само до здравите цели.

Характеристики на балансьорите на натоварването на приложенията

Балансиране на натоварването на слой-7

Въз основа на атрибутите на заявката можете да балансирате трафика HTTP/HTTPS и gRPC към Amazon EC2 екземпляри, ECS контейнери, AWS Lambda, сървъри на трети страни или on-prem.

Функции за сигурност

ALB поддържа предпазни мерки при десинхронизиране въз основа на HTTP библиотеката desync-guardian. Тази възможност защитава приложенията на клиентите срещу HTTP уязвимости, причинени от Desync, без да жертва наличността или забавянето. Клиентите могат също така да зададат своето ниво на толерантност към съмнителни заявки въз основа на архитектурата на техните приложения.

Поддръжка на предни постове

AWS Outposts е напълно управлявано решение, което разширява инфраструктурата, услугите и инструментите на AWS до почти всеки център за данни, пространство за съвместно местоположение или локално съоръжение за наистина последователно хибридно изживяване. Можете да използвате приложения за балансиране на натоварването с AWS Outposts. Клиентите могат да разположат ALB на поддържани типове екземпляри и ALB автоматично ще се мащабира до капацитета на стелажа, за да поеме различни нива на натоварване на приложенията без необходимост от ръчна намеса.

Можете също така да конфигурирате ALB да получава напомняния/предупреждения, за да им помогне да навигират в техните изисквания за капацитет за балансиране на натоварването. Клиентите могат да използват същата AWS конзола, CLI и API за осигуряване и управление на ALB на Outposts, които използват за предоставяне и управление на ALB в региони на AWS.

  Как да промените акаунта в PayPal от бизнес към личен

Прекратяване на HTTPS

Балансиране на натоварването на приложения (ALB) поддържа прекратяване на HTTPS между клиентите и балансиращото натоварване. Това означава, че връзката между вашия клиент и ALB е HTTPS, но връзката между ALB и сървърите на приложения (EC2, ECS и т.н.) е HTTP.

Тъй като връзката между ALB и сървърите на приложения() е във вашия VPC, тя е защитена от външни обекти по подразбиране. ALB могат да управляват SSL сертификати с помощта на AWS Certificate Manager за предварително дефинирани политики за сигурност и AWS Identity and Access Management (IAM).

HTTP/2 и gRPC поддръжка

HTTP/2 е нова форма на HyperText Transfer Protocol (HTTP), която позволява много заявки да бъдат предавани по една и съща връзка, като се използва една мултиплексирана връзка. Той също така осигурява SSL връзки към клиенти и компресира заглавни данни, преди да ги изпрати в двоичен формат.

gRPC трафикът може да бъде маршрутизиран и балансиран на натоварване между микроуслуги или между клиенти и услуги с активиран gRPC с помощта на Application Load Balancer. Това позволява гладкото интегриране на gRPC управление на трафика в архитектури, без да се изискват промени в основната инфраструктура от страна на клиентите или услугите.

gRPC е избраният протокол за комуникации между услуги в архитектури на микроуслуги и използва HTTP/2 за предаване. Той има функции като ефективна двоична сериализация, поддръжка за различни езици, както и присъщите предимства на HTTP/2, като по-малък мрежов отпечатък, компресия и двупосочно предаване, което го прави по-добър от наследените протоколи като REST.

Лепкави сесии

Залепващите сесии позволяват заявките от един и същ клиент да бъдат насочвани към една и съща цел с помощта на бисквитки. Можем лесно да настроим лепкави сесии, като просто активираме лепкави сесии и бисквитки в атрибутите на ALB. Application Load Balancer (ALB) поддържа както базирани на продължителността бисквитки, така и базирани на приложения бисквитки.

Определянето колко време вашият балансьор на натоварването трябва непрекъснато да изпраща заявката на потребителя към една и съща цел е ключът към управлението на лепкави сесии. Sticky сесиите са активирани на ниво целева група. Можете да внедрите комбинация от лепливост, базирана на продължителността, лепливост, базирана на приложение, и без лепливост в различни целеви групи.

Вградена IPv6 поддръжка

Нативният интернет протокол версия 6 (IPv6) се поддържа от балансьорите на натоварването на приложенията във VPC. Това позволява на клиентите да се свързват към Application Load Balancer чрез IPv4 или IPv6.

Заявка за проследяване

При всички заявки, влизащи в инструмента за балансиране на натоварването, инструментът за балансиране на натоварването на приложения инжектира нов HTTP хедър на персонализиран идентификатор „X-Amzn-Trace-Id“. Проследяването на заявка ви позволява да проследите напредъка на заявка, докато тя отива към многобройни услуги на AWS, използвайки нейния уникален идентификатор. Можете да използвате проследяване на заявки, за да намерите проблеми с производителността или тесни места във вашия стек от приложения.

Пренасочвания

Application Load Balancer (ALB) може да пренасочи входяща заявка от един URL към друг. Например, можете да пренасочвате HTTP заявки към HTTPS заявки, което ви позволява да изпълните целта си за съответствие за защитено сърфиране, като същевременно подобрявате класирането на вашия сайт при търсене и SSL/TLS оценка. Пренасочванията могат също така да насочват потребителите към различен уебсайт, например по-стара версия на приложение към по-нова версия.

Фиксиран отговор

Application Load Balancer може да управлява кои клиентски заявки обслужват вашите приложения. Без да предавате заявката към приложението, можете да отговорите на входящи заявки с HTTP кодове за отговор на грешка и персонализирани съобщения за грешка директно от балансиращото натоварване.

Поддръжка на WebSockets

Балансиращите натоварването на приложенията поддържат WebSockets. WebSockets позволяват на сървъра да изпраща съобщения в реално време до крайните потребители, без да изисква от тях да поискат (или анкета) актуализация от сървъра. При дълготрайна TCP връзка протоколът WebSockets позволява двупосочни комуникационни канали между клиент и сървър.

  Пауза и възобновяване на големи качвания при прехвърляне на файлове онлайн

Индикация за име на сървър (SNI)

SNI (индикация за име на сървър) е разширение на TLS протокол, при което клиентът посочва името на хоста, към което да се свърже, в TLS ръкостискането. Устройството за балансиране на натоварването може да представи множество сертификати чрез един защитен слушател, което му позволява да поддържа няколко защитени уебсайта само с един защитен слушател.

Със SNI балансиращите натоварването на приложенията използват интелигентен процес за избор на сертификат, за да съпоставят името на хоста в заявката със съответния SSL сертификат. Ако името на хоста на клиент съответства на множество сертификати, балансиращият товар избира оптималния сертификат въз основа на няколко параметъра, включително възможностите на клиента.

IP адреси като цели

Като използвате IP адресите на задните части на приложението като цели, можете да използвате ALB за балансиране на натоварването на всяко приложение, хоствано на AWS, локални или дори други облачни доставчици. Това позволява балансиране на натоварването към всеки IP адрес и интерфейс в задната част на приложението.

IP адресите могат също да се използват като цели за приложения за балансиране на натоварването, хоствани на място (чрез Direct Connect или VPN), пиърирани VPC и EC2-Classic (чрез ClassicLink). Можете да мигрирате към облака, да избухнете към облака или да преминете към облака при отказ с възможност за балансиране на натоварването между локални ресурси и AWS.

Ламбда функционира като цели

Потребителите имат достъп до безсървърни приложения от всеки HTTP клиент, включително уеб браузъри, благодарение на поддръжката на Application Load Balancers за изпълнение на Lambda функции за доставяне на HTTP(S) заявки. Можете да използвате поддръжката за базирани на съдържание правила за маршрутизиране, за да насочвате заявки към отделни ламбда функции, като регистрирате ламбда функции като цели за балансиране на натоварването.

Application Load Balancer може да се използва като стандартна HTTP крайна точка за приложения, които използват сървъри и изчисления без сървър. За да разработвате приложения, можете да използвате Lambda функции, за да създадете цял уебсайт или да ги комбинирате с EC2 инстанции, контейнери и локални сървъри.

Базирано на съдържанието маршрутизиране

Да предположим, че вашето приложение е съставено от множество независими услуги. В този случай инструментът за балансиране на натоварването на приложението може да насочи заявка към услуга въз основа на съдържанието на заявката, като например полето Хост, URL път, HTTP заглавка, HTTP метод, низ на заявка или IP адрес на източник.

Хост-базирано маршрутизиране: Използвайки полето Host на HTTP заглавката, ALB може да насочи клиентска заявка към няколко домейна от един и същ балансьор на натоварването.

Базирано на пътя маршрутизиране: URL пътят на HTTP заглавката може да се използва за маршрутизиране на клиентска заявка.

Маршрутизиране, базирано на HTTP заглавка: Всяка стандартна или персонализирана стойност на HTTP заглавка може да се използва за маршрутизиране на клиентска заявка.

Базирано на HTTP метод маршрутизиране: Всеки стандартен или персонализиран HTTP метод може да се използва за пренасочване на клиентска заявка.

Маршрутизиране, базирано на параметри на низ на заявка: Клиентска заявка може да бъде маршрутизирана в зависимост от низа на заявката или параметрите.

Маршрутизиране на базата на CIDR на IP адреса на източника: Клиентска заявка може да бъде маршрутизирана въз основа на CIDR IP адреса на източника, от който произхожда.

Поддръжка на контейнеризирани приложения

Application Load Balancer подобрява поддръжката на контейнери, като разпределя натоварването между множество портове на един екземпляр на Amazon EC2 (динамично картографиране на портове). В дефиницията на ECS задача можете да посочите динамичен порт, който дава на контейнера неизползван порт, когато е планиран в екземпляра EC2. Този порт се използва от планировчика на ECS за добавяне на задачата към балансиращото натоварване.

  Как да изтеглите всички SVG файлове от всяка уеб страница в Chrome

ALB със защитна стена за уеб приложения

Използвайки AWS WAF, вече можете да защитите уеб приложенията си в балансиращите натоварването на приложенията. AWS WAF защитава вашите уеб приложения от типичните уеб експлойти, които могат да причинят прекъсване на приложението, да компрометират сигурността или да консумират прекомерни ресурси.

Режим на бавен старт с алгоритъм за балансиране на натоварването

Application Load Balancer (ALB) поддържа кръгов алгоритъм за балансиране на натоварването. Освен това, кръговият механизъм в Application Load Balancer включва режим на отложен старт, който ви позволява да добавяте нови цели, без да ги претоварвате със заявки. Опцията за бавен старт ще позволи на целите да се загреят, преди да поемат своя справедлив дял от заявките по време на определен период на нарастване. Бавното стартиране е полезно за приложения, които разчитат на кеш и изискват период на загряване, преди да могат да реагират на заявките по най-добрия начин.

Удостоверяване на потребителя

Можете да използвате Application Load Balancer, за да разтоварите механизма за удостоверяване на вашите приложения. Когато потребителите имат достъп до облачни приложения, Application Load Balancer ще ги удостовери. Крайните потребители могат да се удостоверяват чрез доставчици на социална идентичност като Google, Facebook и Amazon, както и корпоративни доставчици на идентичност като Microsoft Active Directory чрез SAML или всеки съвместим с OpenID Connect доставчик на идентичност, благодарение на безпроблемната интеграция на Application Load Balancer с Amazon Cognito.

Application Load Balancer може също така да проверява корпоративни потребители, като се свързва директно с вашия доставчик на идентичност, ако вече имате индивидуално решение за IdP, което е съвместимо с OpenID Connect.

Предимства от преминаването от класически балансьор на натоварването (CLB) към балансиране на натоварването на приложения (ALB)

Класическите Load Balancers бяха първият тип Load Balancers от AWS. Макар и мощни, с въвеждането на ALB и NLB, Classic Load Balancers бавно остаряват. Много функции, които сега се поддържат от по-новите версии на балансьорите на натоварването, не присъстват в класическия балансьор на натоварването.

  • Поддръжка за условия на Path: Можете да конфигурирате вашия слушател с правила, които препращат заявки въз основа на URL адреса в заявката. Това ви позволява да разделите приложението си на по-малки услуги (микроуслуги) и да насочвате заявки към подходящата услуга въз основа на съдържанието на URL адреса.
  • Поддръжка за условия на хост: Можете да конфигурирате вашия слушател с правила, които препращат заявки въз основа на полето за хост в HTTP заглавката. Това ви позволява да насочвате заявки към много домейни, като използвате един балансьор на натоварването.
  • Маршрутизирането се поддържа въз основа на информация за заявка, като условия и методи на HTTP заглавка, параметри на заявката и IP адреси на източници.
  • Можете да изпращате заявки за маршрутизиране до множество приложения на един EC2 сървър.
  • Инстанция или IP адрес могат да бъдат регистрирани с множество целеви групи на отделен порт.
  • Можете да пренасочвате заявки от един URL към друг.
  • Връщането на персонализиран HTTP отговор е възможно.
  • Поддръжка за регистриране на цели за балансиращото натоварване по IP адрес, включително цели извън VPC.
  • Ламбда функциите могат да бъдат регистрирани като цели.
  • Преди маршрутизиране на заявки, инструментът за балансиране на натоварването може да удостовери потребителите на вашите приложения, като използва техните корпоративни или социални идентичности.
  • Поддържат се контейнерни приложения. Когато планирате задача, Amazon Elastic Container Service (Amazon ECS) може да избере неизползван порт и да го използва, за да регистрира задачата с целева група. Това ви позволява да извлечете максимума от вашите клъстери.
  • Тъй като проверките на здравето се дефинират на ниво целева група и показателите на CloudWatch се публикуват на ниво целева група, е налична поддръжка за наблюдение на здравето на всяка услуга поотделно. Когато добавите целева група към група за автоматично мащабиране, можете динамично да мащабирате всяка услуга въз основа на търсенето.
  • Допълнителна информация се записва в компресиран формат в регистрационните файлове за достъп.

Заключителни думи

Балансьорите на натоварването на приложенията са балансьори на натоварването от по-ново поколение, които са еластични, мащабируеми и идват с много различни функции, особено за нуждите на уеб приложенията. Може да се наложи да използвате Classic Load Balancers, ако имате наследени приложения, хоствани в EC2 Classic Network, но за всички натоварвания от по-ново поколение, ALB ще бъде очевиден избор.