В выходные вечером я пошел в кино со своей девушкой, готовый посмотреть приключенческий подводный фильм DC «Аквамен». У входа много людей, и несколько гидов время от времени ведут зрителей в театр через разные входы. Мы в конце очереди.
Балансировка нагрузки или балансировка нагрузки — это компьютерная технология, используемая для распределения нагрузки между несколькими компьютерами (компьютерными кластерами), сетевыми подключениями, процессорами, дисками или другими ресурсами для оптимизации использования ресурсов, максимизации пропускной способности. перегрузка.
Зачем нужна балансировка нагрузки
Мы часто неизбежно собираемся в некоторые из наиболее людных мест в повседневной жизни, таких как станции метро, вокзалы, кинотеатры, банки и так далее. На самом деле, по нашему опыту, будь то покупка билета или очередь на вход, в этих местах обычно выставляются баллы или более служебный вход.
Однако, если никто не будет руководить, большую часть времени ближайший вход будет переполнен. И те пункты обслуживания или входы, которые находятся далеко, намного слабеют.
В этом случае ресурсы будут сильно потрачены впустую, потому что если этих людей в очереди можно хорошо рассредоточить по каждому входу, то время ожидания в очереди сильно сократится.
По сути, конструкция сайта одинакова. мы в«Как познакомить девушку с тем, что раздают»Как упоминалось выше, чтобы улучшить возможности обслуживания веб-сайта, многие веб-сайты развертываются в кластерах, как театр с несколькими входами.
Когда пользователи посещают веб-сайт централизованно, если нет механизма направления пользователей, полностью случайного или принципа близости, это приведет к большому количеству трафика на одних серверах, в то время как трафик на другом сервере будет очень большим.qpsМаленький.这不仅严重的浪费了资源,而且还会导致拉长用户访问网站的RT, Повлиять на опыт пользователя. Более серьезные могут быть вытащины с этих серверов.
В это время необходим координатор для равномерного распределения запросов этих пользователей, чтобы пользователи могли равномерно распределяться по разным серверам.
существует«Как познакомить девушку с тем, что раздают»Мы сказали, что для улучшения обслуживания ресторана в нем может работать несколько шеф-поваров, и эти шеф-повара образуют кластер шеф-поваров. Когда пользователь заказывает еду в магазине, нужен профессионал, чтобы равномерно распределить меню всех покупателей между поварами в магазине. Таким образом, сервисная мощность отеля может быть улучшена в наибольшей степени.
Что такое балансировка нагрузки
Как упоминалось ранее, чтобы улучшить возможности веб-сайта, мы обычно формируем кластер нескольких машин для предоставления внешних услуг. Однако наш веб-сайт предоставляет только один портал доступа, такой как www.taobao.com. Поэтому, когда пользователь входит в www.taobao.com в браузере, как распространять запрос пользователя на разные машины в кластере, это то, что делает балансировку нагрузки.
Классификация балансировки нагрузки
На самом деле существует множество способов достижения балансировки нагрузки.Прежде чем углубляться в балансировку нагрузки, мы должны сначала представить концепцию, то есть семиуровневую модель OSI.
OSI — это эталонная модель взаимосвязи открытых систем связи, которая представляет собой очень четко определенную спецификацию протокола.
Модель OSI имеет 7-уровневую структуру, и каждый уровень может иметь несколько подуровней. Семь уровней OSI сверху вниз: 7 уровень приложений, 6 уровень представления, 5 уровень сеанса, 4 транспортный уровень, 3 уровень сети, 2 уровень канала передачи данных, 1 уровень физического уровня и уровень передачи данных.
Верхние уровни (т. е. уровни 7, 6, 5 и 4) определяют функции приложения, а нижние три уровня (т. е. уровни 3, 2 и 1) в основном ориентированы на сквозную передачу данных. течь по сети.
В этих семислойных моделях более высокие уровни зависят от более низких уровней. Чем выше уровень, тем проще его использовать.
Telnet, HTTP, FTP, NFS, SMTP, DNS и т. д. относятся к концепции седьмого уровня приложений.
TCP, UDP, SPX и т. д. относятся к концепции транспортного уровня четвертого уровня.
IP, IPX и т. д. относятся к концепции сетевого уровня третьего уровня.
ATM, FDDI и т. д. относятся к концепции второго уровня уровня канала передачи данных.
Разобравшись с семиуровневой моделью сетевых протоколов, давайте рассмотрим балансировку нагрузки. Мы можем быть очень ясны, что,Балансировка нагрузки — это создание шума при передаче по сети.. Если вы хотите что-то делать в процессе сетевой передачи, то семиуровневой модели следует избегать.
Следовательно, по технологии балансировки нагрузки, реализованной на разных уровнях семиуровневой модели OSI, можно классифицировать балансировку нагрузки.
В обычной реализации это может в основном создавать суету на уровне приложений, транспортном уровне, сетевом уровне и уровне передачи данных. Поэтому балансировка нагрузки, работающая на прикладном уровне, обычно называется балансировкой нагрузки уровня 7, а балансировка нагрузки, работающая на транспортном уровне, называется балансировкой нагрузки уровня 4.
Его можно условно разделить на следующие категории, среди которых наиболее часто используются балансировка нагрузки уровня 4 и уровня 7:
Балансировка нагрузки уровня 2
Сервер балансировки нагрузки по-прежнему предоставляет VIP (виртуальный IP-адрес) внешнему миру.Разные машины в кластере используют один и тот же IP-адрес, но MAC-адреса машин разные. После того, как сервер балансировки нагрузки получает запрос, он перенаправляет запрос на целевую машину, перезаписывая целевой MAC-адрес пакета для достижения балансировки нагрузки.
Балансировка нагрузки уровня 3
Подобно балансировке нагрузки уровня 2, сервер балансировки нагрузки по-прежнему предоставляет виртуальный IP-адрес (VIP) внешнему миру, но разные машины в кластере используют разные IP-адреса. После того, как сервер балансировки нагрузки получает запрос, он перенаправляет запрос на разные реальные серверы через IP в соответствии с различными алгоритмами балансировки нагрузки.
Балансировка нагрузки уровня 4
Четырехуровневая балансировка нагрузки работает на транспортном уровне модели OSI.Поскольку на транспортном уровне существует только протокол TCP/UDP, эти два протокола включают не только IP-адрес источника и IP-адрес назначения, но также номер порта источника и номер порта назначения. . После получения клиентского запроса сервер балансировки нагрузки уровня 4 перенаправляет трафик на сервер приложений, изменяя адресную информацию (IP + номер порта) пакета данных.
Балансировка нагрузки уровня 7
Семиуровневая балансировка нагрузки работает на прикладном уровне модели OSI.Существует множество протоколов прикладного уровня, таких как http, radius и dns. На основе этих протоколов может быть загружена семиуровневая нагрузка. Эти протоколы прикладного уровня будут содержать много значимого контента. Например, балансировка нагрузки одного и того же веб-сервера, в дополнение к нагрузке на основе IP и порта, также может быть определена в соответствии с семиуровневым URL-адресом, типом браузера и языком, следует ли выполнять балансировку нагрузки.
инструмент балансировки нагрузки
На рынке существует множество инструментов или программного обеспечения для балансировки нагрузки с открытым исходным кодом, которые в основном реализованы на основе вышеупомянутых решений, и большинство из них работают на седьмом и четвертом уровнях. Nginx/LVS/HAProxy — это три наиболее широко используемых программного обеспечения для балансировки нагрузки.
LVS
LVS (виртуальный сервер Linux), также известный как виртуальный сервер Linux, представляет собой проект бесплатного программного обеспечения, инициированный доктором Чжан Венсоном. Целью использования технологии LVS является создание высокопроизводительного кластера серверов высокой доступности с помощью технологии балансировки нагрузки и операционной системы Linux, предоставляемой LVS, которая обладает хорошей надежностью, масштабируемостью и работоспособностью. Таким образом, оптимальная производительность обслуживания может быть достигнута при низких затратах.
LVS в основном используется для балансировки нагрузки уровня 4.
Nginx
Nginx (произносится как движок x) — это веб-сервер, который использует реверсивные прокси-серверы HTTP, HTTPS, SMTP, POP3, IMAP, а также балансировщик нагрузки и кэш HTTP.
Nginx в основном используется для семиуровневой балансировки нагрузки.
HAProxy
HAProxy — это бесплатное программное обеспечение с открытым исходным кодом, написанное на C, которое обеспечивает высокую доступность, балансировку нагрузки и проксирование приложений через TCP и HTTP.
HAProxy в основном используется для балансировки нагрузки уровня 7.
Когда сервер балансировки нагрузки решает, на какой реальный сервер перенаправить запрос, он делает это с помощью алгоритма балансировки нагрузки. Алгоритм балансировки нагрузки является ядром сервера балансировки нагрузки.
Так же, как гид у входа в кинотеатр, на основании чего он распределяет очередников к конкретному входу? У какого входа меньше народу? Или какая запись самая быстрая? Или какой вход ближе? А если есть VIP?
Алгоритмы балансировки нагрузки можно разделить на две категории: алгоритмы статической балансировки нагрузки и алгоритмы динамической балансировки нагрузки.
Алгоритмы статической балансировки нагрузки включают в себя: циклический алгоритм, соотношение, приоритет
Алгоритм динамической балансировки нагрузки включает в себя: наименьшее количество подключений, максимальную скорость отклика, метод наблюдения, метод прогнозирования, динамическое распределение производительности, динамическое дополнение сервера, качество обслуживания, тип обслуживания и режим правила.
Round Robin: последовательный цикл запрашивает последовательный цикл для подключения к каждому серверу по одному. Когда один из серверов выходит из строя на уровнях от 2 до 7, BIG-IP выводит его из последовательной циклической очереди и не участвует в следующем опросе, пока он не вернется в нормальное состояние.
Соотношение (соотношение): каждому серверу присвоено отношение весового значения, отмеченное в этом соотношении, пользовательские запросы, назначаемые каждому серверу. Когда сервер не удается, в котором второй слой 7, Big-IP-сервер выбрал его из очереди, пользователь не участвует в следующем запросе распределения, пока он не возвращается к нормальному.
Приоритет: Дайте весь сервер, определите приоритет, запрос пользователей большого IP, присвоенный к группе сервера наиболее приоритетов (в той же группе, используя запрос опроса или соотношения, выделения пользователей); когда все серверы в наивысшем приоритете не удаются Big-IP отправит запрос на вторую группу приоритетных серверов. Таким образом, на самом деле это способ обеспечить горячую запасную.
Наименьшее количество соединений (Least Connection): передайте новые соединения тем серверам, которые выполняют наименьшую обработку соединений. При выходе из строя одного из серверов на уровне от второго до седьмого BIG-IP уберет его из очереди сервера и не будет участвовать в распределении следующего пользовательского запроса, пока он не вернется в нормальное состояние.
Самый быстрый режим (Fastest): Передайте соединение тем серверам, которые отвечают быстрее всего. Когда один из серверов выходит из строя со 2-го по 7-й уровень, BIG-IP выводит его из очереди сервера и не участвует в распределении следующего пользовательского запроса, пока он не вернется в нормальное состояние.
Наблюдаемый режим (Observed): Количество подключений и время отклика основаны на наилучшем балансе этих двух факторов в качестве основы для выбора сервера для новых запросов. Когда один из серверов выходит из строя со 2-го по 7-й уровень, BIG-IP выводит его из очереди сервера и не участвует в распределении следующего пользовательского запроса, пока он не вернется в нормальное состояние.
Предиктивный режим (Predictive): BIG-IP использует собранные текущие показатели производительности сервера для выполнения предиктивного анализа и выбирает сервер, производительность которого достигнет наилучшей производительности в следующем временном интервале, соответствующем запросу пользователя. (обнаружено BIG-IP)
Динамическое распределение производительности (Dynamic Ratio-APM): BIG-IP собирает различные параметры производительности приложений и серверов приложений и динамически регулирует распределение трафика.
Дополнительный Active Server (ACT Dynamic Server.): При сбое первичной фермы сервера, вызванные уменьшением количества, динамически добавляются к кластеру первичной и резервной копии сервера.
Качество обслуживания (QoS): назначьте поток данных в соответствии с различными приоритетами.
Тип службы (ToS): балансировка нагрузки распределяет потоки данных по разным типам службы (указанным в поле Тип).
Режим правил: установите правила управления для различных потоков данных, пользователи могут делать это самостоятельно.
Выше приведен текущий основной алгоритм для достижения балансировки нагрузки. Различные серверы балансировки нагрузки будут выбирать разные алгоритмы. Точно так же, как кинотеатр и вокзал могут использовать разные стратегии навигации. На вокзале пассажиры с меньшим количеством багажа могут быть назначены к специальному входу, пассажиры, которые собираются отправиться, могут быть назначены к экспресс-входу, а пользователи со сканируемыми билетами могут быть назначены к специальным входам отдельно и т. д.