предисловие
Сегодня в различных интернет-приложениях, поскольку сайты предъявляют все более высокие требования к производительности оборудования, скорости отклика, стабильности обслуживания и надежности данных, одному серверу сложно удовлетворить все требования доступа. Конечно, помимо использования экономичного оборудования и выделенного оборудования для распределения нагрузки, есть и другие варианты, помогающие решить эту проблему, то есть построить сервер-кластер, интегрировав несколько общего серверного оборудования и предоставляя те же внешние сервисы на месте. Тот же адрес. Сегодня я познакомлю вас с технологией кластеризации, обычно используемой на предприятиях, — LVS.
Каталог статей
1. Что такое ЛВС?
2. Зачем использовать LVS?
3. Состав и функции ЛВС
В-четвертых, происхождение и преимущества балансировки нагрузки
V. Типы кластеров балансировки нагрузки LVS
6. Типы DNS/аппаратной и программной балансировки нагрузки
7. Общая архитектура кластера LVS
Восемь, основной принцип балансировки нагрузки LVS
Девять, три рабочих режима балансировки нагрузки LVS
Десять, десять алгоритмов планирования нагрузки LVS
11. Термины и описания, относящиеся к LVS
использованная литература
Суммировать
1. Что такое ЛВС?
ЛВС:даLinux Virtual Server
сокращение дляLinux 虚拟服务器
, представляет собой кластерную систему виртуальных серверов.Этот проект был создан д-ром Чжан Венсоном в мае 1998 г. Это один из первых проектов свободного программного обеспечения в Китае. Официальный сайт :www.linuxvirtualserver.orgLVS фактически эквивалентен виртуализированному приложению на основе IP-адресов, которое предлагает эффективное решение для балансировки нагрузки на основе IP-адреса и распределения запросов контента.Теперь LVS является частью стандарта ядра Linux.
Техническая цель, которая может быть достигнута с помощью LVS, заключается в следующем: получить высокопроизводительный и высокодоступный серверный кластер Linux с помощью технологии балансировки нагрузки и операционной системы Linux, достигнутой LVS, с хорошей надежностью, масштабируемостью и работоспособностью. Таким образом достигается оптимальная производительность при низких затратах. LVS — это программный проект с открытым исходным кодом, который реализует кластеры балансировки нагрузки.Архитектуру LVS можно логически разделить на уровень планирования, уровень кластера серверов и уровень общего хранилища.
2. Зачем использовать LVS?
В предыдущей серии Nginx была представлена служба балансировки нагрузки Nginx.Подробнее см.: 《Серия руководств по Nginx (3) | Эта статья поможет вам понять балансировку нагрузки Nginx.》Тогда зачем вам использовать LVS?
С взрывным ростом Интернета и его все более важной ролью в повседневной жизни скорость трафика в Интернете росла более чем на 100% в год. Давление рабочей нагрузки на сервер также быстро увеличивается, поэтому сервер будет перегружен в течение короткого периода времени, особенно для популярных веб-сайтов. Чтобы преодолеть проблему перегрузки сервера, есть два решения.
-
Один из них: односерверное решение, то есть апгрейд сервера до сервера с более высокой производительностью, но при увеличении запросов он будет быстро перегружаться, поэтому его придется апгрейдить заново, что сложно и затратно;
-
Другой вариант: многосерверное решение, то есть построение масштабируемой системы сетевых служб на кластере серверов. При увеличении нагрузки в кластер можно просто добавить новые серверы или несколько серверов, чтобы удовлетворить растущий спрос, а стандартные серверы имеют самое высокое соотношение производительности и стоимости. Таким образом, создание кластерной системы серверов для сетевых служб является более масштабируемым и экономически эффективным.
Как построить кластер серверов:
- Кластер балансировки нагрузки на основе DNS
Балансировка нагрузки DNS, вероятно, является самым простым способом кластеризации сетевых служб. Используйте систему доменных имен для распределения запросов на разные серверы путем разрешения доменных имен на разные IP-адреса серверов. Когда DNS-запрос поступает на DNS-сервер для разрешения доменного имени, DNS-сервер выдает один из IP-адресов сервера на основе политики планирования, затем запросы от клиентов, использующих тот же локально кэшированный сервер имен, будут отправлены на указанное имя. разрешение time-to-live (TTL) того же сервера.
Однако из-за кэширующего характера клиентских и иерархических систем DNS легко вызвать дисбаланс динамической нагрузки между серверами, из-за чего серверам будет сложно справляться с их пиковыми нагрузками. Значения TTL для сопоставления имен плохо выбираются на DNS-серверах.
Если значение мало, DNS-трафик будет высоким, а DNS-сервер будет узким местом; если значение велико, дисбаланс динамической нагрузки усугубится. Даже если значение TTL установлено равным нулю, гранулярность планирования зависит от хоста, а шаблоны доступа разных пользователей могут привести к дисбалансу динамической нагрузки, поскольку некоторые люди могут получать много страниц с сайта, в то время как другие могут просматривать только несколько страниц. тогда иди далеко. Кроме того, это не так надежно, когда серверный узел выходит из строя, клиенты, сопоставляющие имена с IP-адресами, обнаружат, что сервер не работает.
- Кластер балансировки нагрузки на основе диспетчера
Диспетчеры, также известные как балансировщики нагрузки, можно использовать для распределения нагрузки между серверами в кластере, чтобы параллельные службы серверов отображались как виртуальные службы на одном IP-адресе, а конечные пользователи могли взаимодействовать так, как если бы один сервер ничего не знал. Все серверы в кластере. По сравнению с балансировкой нагрузки на основе DNS планировщик может планировать запросы с высокой степенью детализации (например, для каждого соединения) для лучшей балансировки нагрузки между серверами. Когда один или несколько серверов выходят из строя, сбой можно замаскировать. Управление сервером стало проще, и администраторы могут в любое время включать или отключать один или несколько серверов, не прерывая обслуживание конечных пользователей.
Балансировку нагрузки можно разделить на два уровня: уровень приложений и уровень IP. Например, обратный прокси-сервер и pWEB — это методы балансировки нагрузки на уровне приложений для создания масштабируемых веб-серверов. Они перенаправляют HTTP-запросы на другие веб-серверы в кластере, получают результаты и возвращают их клиенту. Из-за высоких накладных расходов на обработку HTTP-запросов и ответов на уровне приложения я считаю, что когда количество серверных узлов увеличится до 5 или более, балансировщик нагрузки на уровне приложения станет новым узким местом, в зависимости от Пропускная способность каждого сервера сервера.
Сравнение возможностей LVS и Nginx
-
LVS обладает более сильной антинагрузочной способностью, чем Nginx, высокой производительностью и меньшим потреблением памяти и ресурсов ЦП;
-
LVS работает на сетевом уровне, конкретный трафик обрабатывается ядром операционной системы, а Nginx работает на уровне приложений, что позволяет реализовать некоторые стратегии разгрузки для HTTP-приложений;
-
Установка и настройка LVS сложны, зависимость от сети большая, стабильность высокая. Конфигурация установки Nginx относительно проста, а сетевые зависимости невелики;
-
LVS не поддерживает обычную обработку сопоставления и не может добиться эффекта динамического и статического разделения. Nginx может реализовать эту функцию, см.: "Серия руководств по Nginx (2) | Эта статья поможет вам понять прямой и обратный прокси-сервер Nginx.", "Серия руководств по Nginx (4) | Эта статья поможет вам понять разделение Nginx на статический и динамический";
-
LVS применим к широкому спектру протоколов. Nginx поддерживает только протоколы HTTP, HTTPS, электронной почты, а область применения невелика;
3. Состав и функции ЛВС
LVS состоит из двух частей, включая ipvs и ipvsadm.
1, ipvs
(IP-виртуальный сервер): LVS — это функция IPVS, реализованная инфраструктурой сетевого фильтра режима ядра и работающая в режиме ядра. Пользователям необходимо использовать инструмент ipvsadm для настройки VIP и другой связанной информации и передачи ее в IPVS.
2, ipvsadm
: ipvsadm - вспомогательный инструмент для пользовательского режима LVS, который может реализовать функции добавления, удаления, изменения и проверки VIP и RS.Общается с ядром LVS на основе netlink или raw socket.Если LVS аналогичен netfilter, то ipvsadm похоже на статус инструментов iptables.
эффект:
-
В основном используется для балансировки нагрузки нескольких серверов;
-
Работая на сетевом уровне, он может реализовать высокопроизводительную технологию кластера серверов с высокой доступностью;
-
Недорогие, многие низкопроизводительные серверы могут быть сгруппированы вместе, чтобы сформировать суперсервер;
-
Простота использования, простота настройки, несколько методов балансировки нагрузки;
-
Стабильный и надежный, даже если один из серверов в кластере выходит из строя, это не влияет на общий эффект;
-
Хорошая масштабируемость;
В-четвертых, происхождение и преимущества балансировки нагрузки
Когда бизнес только начинается, для предоставления внешних услуг обычно используется один сервер. С ростом бизнеса в более поздний период увеличивается и трафик. Когда объем доступа к этому единственному серверу больше, нагрузка на сервер будет больше, и производительность не сможет удовлетворить потребности бизнеса.Если давление доступа превышает его собственное указанное давление доступа, он рухнет, чтобы избежать таких вещей не бывает.
Мы примем другие решения для формирования кластерной системы из нескольких серверов для повышения производительности обработки всего сервера.Мы будем использовать единый портал (планировщик трафика) для предоставления внешних услуг по сбалансированному алгоритму и распределять большое количество пользовательских запросов. сбалансированным образом.Бэкэнд-кластеры на разных серверах. Поэтому существует балансировка нагрузки для распределения нагрузки на сервер.
Преимущества использования балансировки нагрузки: повышение общей производительности системы, улучшение масштабируемости системы и повышение высокой доступности системы;
V. Типы кластеров балансировки нагрузки LVS
кластер балансировки нагрузки: Кластер балансировки нагрузки, который направлен на повышение скорости отклика системы приложений, обработку как можно большего количества запросов на доступ и сокращение задержек, чтобы получить общую производительность с высокой степенью параллелизма и высокой нагрузкой.
Кластер высокой доступности: Кластер высокой доступности, целью которого является повышение надежности системы приложений, максимальное сокращение терминального времени, обеспечение непрерывности обслуживания и достижение эффекта высокой доступности и отказоустойчивости.
высокопроизводительный вычислительный кластер: Высокопроизводительный компьютерный кластер, который направлен на повышение скорости вычислений ЦП прикладной системы, расширение аппаратных ресурсов и возможностей анализа, чтобы получить возможности высокопроизводительных вычислений, эквивалентные большим и суперкомпьютерам.
6. Типы DNS/аппаратной и программной балансировки нагрузки
1) DNS для балансировки нагрузки
Доменное имя преобразуется в несколько IP-адресов через DNS, и каждый IP-адрес соответствует отдельному экземпляру сервера для завершения планирования трафика.Это также самый простой способ для DNS достичь балансировки нагрузки.
использовать максимумПреимущества: Простота внедрения, низкая стоимость, отсутствие необходимости самостоятельно разрабатывать или обслуживать оборудование для балансировки нагрузки., но есть некоторыеНедостатки: большая задержка при отказоустойчивости сервера, неудобное обновление, несбалансированное планирование трафика, большая степень детализации, простая стратегия распределения трафика, менее поддерживаемые алгоритмы и ограниченный список IP-адресов, поддерживаемых DNS.
2) Аппаратная балансировка нагрузки
Аппаратная балансировка нагрузки предназначена для реализации функции балансировки нагрузки с помощью специальных аппаратных устройств, таких как коммутаторы и маршрутизаторы, которые являются сетевыми устройствами, предназначенными для балансировки нагрузки.
В настоящее время существует два типичных аппаратных устройства балансировки нагрузки:F5иA10. Однако предприятия, которые могут использовать такое аппаратное оборудование балансировки нагрузки, не являются обычными компаниями, наоборот, другие предприятия с небольшим объемом бизнеса в принципе не могут их использовать.
Преимущества аппаратной балансировки нагрузки:
-
Мощные функции: поддержка всех уровней балансировки нагрузки и комплексных алгоритмов балансировки нагрузки;
-
Высокая производительность: производительность намного превосходит обычные программные балансировщики нагрузки;
-
Высокая стабильность: аппаратная балансировка нагрузки, крупномасштабное использование должны быть строго протестированы;
-
Защита безопасности: в дополнение к функции балансировки нагрузки он также имеет функции безопасности, такие как брандмауэр и защита от DDoS-атак;
Недостатки аппаратной балансировки нагрузки:
-
дорогой;
-
Плохая масштабируемость;
-
Трудно отлаживать и поддерживать;
3) Программная балансировка нагрузки
-
Nginx: поддерживает балансировку нагрузки Layer 4/Layer 7, поддерживает протоколы HTTP, E-mail;
-
LVS: чистая 4-уровневая балансировка нагрузки, работающая в режиме ядра, производительность самая высокая при программной балансировке нагрузки;
-
HAproxy: это 7-уровневое программное обеспечение для балансировки нагрузки, которое поддерживает настройку 7-уровневых правил и имеет хорошую производительность;
Преимущества программной балансировки нагрузки:
- Простая, гибкая и дешевая (установка вышеупомянутой программной балансировки нагрузки непосредственно в операционной системе Linux, развертывание и обслуживание относительно просты, 4-уровневую и 7-уровневую балансировку нагрузки можно выбрать в соответствии с бизнесом или в соответствии с бизнес-характеристики, которые удобнее расширять и поддерживать пользовательскую функцию);
7. Общая архитектура кластера LVS
Уровень 1: Планировщик загрузки: Балансировщик нагрузки, это единственная запись для доступа ко всей кластерной системе, которая является общей для всех серверов для внешнего использования.虚拟 IP 地址
, который также становится IP-адресом кластера.
Балансировщик нагрузки: единая точка входа в систему кластера серверов, на которой работает IPVS, которая реализует технологию балансировки нагрузки IP внутри ядра Linux или KTCPVS, а также балансировку нагрузки на уровне приложений в ядре Linux. При использовании IPVS все серверы должны предоставлять одинаковую услугу и контент, а балансировщик нагрузки перенаправляет новые клиентские запросы на сервер в соответствии с заданным алгоритмом планирования и нагрузкой каждого сервера. Клиенты должны получать одинаковые результаты независимо от того, какой сервер выбран. При использовании KTCPVS серверы могут иметь различное содержимое, и балансировщик нагрузки может перенаправлять запросы на другие серверы в зависимости от содержимого запроса. Так как KTCPVS реализован внутри ядра Linux, передача данных требует небольших накладных расходов, поэтому пропускная способность по-прежнему может быть высокой.
Уровень 2: Пул серверов: Пул серверов, службы приложений, предоставляемые кластером, такие как пулы серверов HTTP и FTP, каждый узел имеет независимый真实 IP 地址
, который обрабатывает только клиентские запросы, отправленные планировщиком.
Узлы серверного кластера могут быть разделены в соответствии с нагрузкой на систему. Когда все серверы перегружены, можно добавить несколько серверов для обработки растущей рабочей нагрузки. Для большинства интернет-сервисов (таких как Интернет) запросы обычно не сильно коррелированы и могут выполняться параллельно на разных серверах. Таким образом, общая производительность увеличивается почти линейно по мере увеличения количества узлов в кластере серверов.
Уровень 3: Общее хранилище: Общее хранилище, которое обеспечивает стабильные и согласованные службы хранения файлов для всех узлов в пуле серверов, обеспечивая единство всего кластера, и может использовать устройства NAS или выделенные серверы, предоставляющие службы общего доступа к сетевой файловой системе NFS (Network File System).
Общее хранилище: может быть системой базы данных, сетевой файловой системой или распределенной файловой системой. Данные, которые серверный узел должен динамически обновлять, должны храниться в системе, основанной на данных.Когда серверный узел параллельно считывает и записывает данные в систему базы данных, система базы данных может обеспечить согласованность параллельного доступа к данным. Данные в состоянии покоя обычно хранятся в сетевых файловых системах, таких как NFS и CIFS, чтобы данные могли совместно использоваться всеми узлами сервера. Однако масштабируемость одной сетевой файловой системы ограничена, например, одна NFS/CIFS может поддерживать доступ к данным только с 4-х до 8-ми серверов. Для больших кластерных систем распределенные/кластерные файловые системы могут использоваться для общего хранилища, такого как GPFS, Coda и GFS, а затем общее хранилище также можно масштабировать в соответствии с системными потребностями.
Восемь, основной принцип балансировки нагрузки LVS
Основы сетевого фильтра
Прежде чем представить основные принципы балансировки нагрузки LVS, давайте поговорим об основных принципах сетевого фильтра. Поскольку LVS — это система балансировки нагрузки, основанная на инфраструктуре netfilter в ядре Linux, netfilter на самом деле очень сложный и очень важный.Обычно брандмауэр Linux — это netfilter, но мы по-прежнему используем iptables.iptables и netfilter — это комбинированные инструменты брандмауэра Linux. работа по защите системы.
iptables находится в пространстве пользователя, а Netfilter — в пространстве ядра. iptables — это всего лишь инструмент для написания и передачи правил в пространстве пользователя, настоящая работа — это netfilter.
Разница между ними:
Netfilter — это механизм брандмауэра Linux в режиме ядра. Как общая и абстрактная структура, он предоставляет полный набор механизмов управления функциями ловушек, обеспечивая фильтрацию пакетов, преобразование сетевых адресов и функции отслеживания соединений на основе протокола. Во время потока несколько уровней (функции перехвата) устанавливаются в соответствии с правилами для выполнения связанных операций.Всего установлено 5 точек, в том числе: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING.
-
предварительная маршрутизация:Перед маршрутизацией пакета правило будет применено к цепочке;
-
Вход:Правила в этой цепочке применяются, когда получен пакет, обращающийся к собственному адресу брандмауэра;
-
вперед:Правила в этой цепочке будут применяться при получении пакета, который необходимо переслать на другие адреса через брандмауэр;
-
вывод:Правила в этой цепочке будут применяться, когда брандмауэр по умолчанию отправляет пакеты;
-
постмаршрутизация:После маршрутизации пакета будут применяться правила этой цепочки;
iptable — это инструмент уровня пользователя, который предоставляет интерфейс командной строки и может добавлять правила и политики в Netfilter для реализации функций фильтрации и модификации пакетов. Связанные статьи об iPtables см. в следующих разделах:
На следующем рисунке мы можем понять рабочий механизм сетевого фильтра:
Когда пакет данных входит через сетевой интерфейс, он проходит через канальный уровень, а затем входит в сетевой уровень, чтобы прибыть.PREROUTING
, а затем найти маршрут на основе IP-адреса назначения.
Если IP-адрес назначения является локальным компьютером, пакет будет отправлен наINPUT
После прохождения стека протоколов данные отправляются соответствующему приложению по порту, приложение обрабатывает запрос и отправляет ответный пакет наOUTPUT
, наконец черезPOSTROUTING
Затем отправьте сетевой интерфейс.
Если целевой IP не является локальным и сервер включенFORWARD
параметр, то пакет будет доставлен наFORWARD
, наконец черезPOSTROUTING
Затем отправьте сетевой интерфейс.
Основы LVS
LVS основан на структуре netfilter и работает в цепочке INPUT.Функция ip_vs_in HOOK регистрируется в цепочке INPUT для выполнения основного процесса, связанного с IPVS.Подробные принципы изложены следующим образом:
1,Когда клиентский пользователь получает доступwww.baidu.comПри доступе к веб-сайту запрос доступа пользователя проходит через послойную сеть и, наконец, входит в сетевую карту сервера LVS через коммутатор и входит в уровень пространства ядра.
2,ВходитьPREROUTING
После нахождения маршрута, если в качестве целевого виртуального IP-адреса определен локальный IP-адрес, пакет данных войдет вINPUT
в цепи.
3.Поскольку IPVS работает в цепочке INPUT,VIP
и端口
Определить, является ли запрос услугой IPVS, если да, то позвонить зарегистрированномуIPVS HOOK 函数
,провестиIPVS
связанные процессы и принудительно изменить соответствующие данные пакета данных и отправить пакет данных вPOSTROUTING
в цепи.
4. POSTROUTING
После того, как цепочка получит пакет данных, она, наконец, отправит пакет данных на внутренний реальный сервер посредством выбора маршрутизации в соответствии с целевым сервером с IP-адресом.
Вышеизложенный принцип работы LVS, который мы представили.Затем балансировка нагрузки LVS также включает в себя три режима работы, и каждый режим имеет разные принципы работы и подходит для разных сценариев приложений.Конечная цель состоит в том, чтобы достичь сбалансированного планирования трафика.и хорошо масштабируемость.
Девять, три рабочих режима балансировки нагрузки LVS
Технология планирования нагрузки кластера может быть распределена на основе IP, порта, контента и т. д. Среди них балансировка нагрузки на основе IP является наиболее эффективной. Режимы балансировки нагрузки на основе IP обычно включают трансляцию адресов (NAT), IP-туннель (TUN) и прямую маршрутизацию (DR) — три рабочих режима.
перевод адреса: Преобразование сетевых адресов, называемое: режим NAT, аналогичный структуре частной сети брандмауэра, планировщик нагрузки действует как шлюз для всех серверных узлов, как вход доступа клиента, а также выход доступа каждого узла отвечает клиенту, а серверный узел использует частный IP-адрес. Адрес находится в той же физической сети, что и планировщик нагрузки, и безопасность выше, чем у двух других методов.
Принцип реализации NAT
1,Пакет данных запроса, отправленный клиентом, достигает сетевой карты LVS через сеть, IP-адрес источника пакета данных — CIP, а IP-адрес назначения — VIP.
**2, ** Затем войдите в цепочку PREROUTING, найдите маршрут в соответствии с IP-адресом назначения, определите, является ли он локальным IP-адресом, а затем перенаправьте пакет данных в цепочку INPUT, исходный IP-адрес и IP-адрес назначения остаются неизменными.
3.После прибытия в LVS узнайте, является ли это услугой IPVS через IP-адрес назначения и ПОРТ назначения.Если это служба IPVS, в качестве внутреннего сервера будет выбран RS, а IP-адрес назначения пакета данных будет быть изменен на RIP.В настоящее время RIP является целью IP для поиска маршрута, после определения следующего прыжка и информации PORT пакет данных будет перенаправлен в цепочку OUTPUT.
4.Измененный пакет данных поступает на сервер RS после прохождения цепочки POSTROUTING IP-адрес источника пакета данных — CIP, IP-адрес назначения — RIP.
5.После того, как сервер RS будет обработан, он отправит пакет данных приложению в пространстве пользователя.После завершения обработки он отправит пакет данных ответа.Шлюзом по умолчанию сервера RS является IP-адрес LVS, а приложение перенаправит пакет данных на следующий переход к серверу LVS, IP-адрес источника пакета данных — RIP, а IP-адрес назначения — CIP.
6.После того, как сервер LVS получит пакет данных, на который ответил сервер RS, он ищет маршрут, IP-адрес назначения не является локальным IP-адресом, и сервер LVS включил режим FORWARD, и пакет данных будет перенаправлен на него, и пакет данных останется неизменным.
7.После того, как сервер LVS получит ответный пакет, он ищет соответствующую услугу в соответствии с IP-адресом назначения и портом назначения.В это время исходным IP-адресом является VIP.Просматривая маршрут, он определяет информацию о следующем прыжке и отправляет пакет на шлюз и, наконец, отвечает клиенту.
Преимущества и недостатки режима NAT:
преимущество:
-
Поддержка операционной системы Windows;
-
Поддержка сопоставления портов, если PORT и VPORT сервера RS несовместимы, LVS изменит IP-адрес назначения и DPORT для поддержки сопоставления портов;
недостаток:
-
Сервер RS должен быть настроен со шлюзом;
-
Двунаправленный поток создаст большую нагрузку на LVS;
Сценарии использования режима NAT:
- Он более удобен для пользователей операционной системы Windows.При использовании LVS необходимо выбрать режим NAT.
IP-туннель: IP-туннель, сокращенно: режим TUN, имеет открытую сетевую структуру, планировщик нагрузки используется в качестве входа для доступа клиента, каждый узел напрямую отвечает клиенту через свое интернет-соединение, минуя планировщик нагрузки, и серверные узлы разбросаны по разным местам в Интернете и имеют независимые общедоступные IP-адреса, которые связываются с планировщиком нагрузки через выделенные IP-туннели.
Принцип реализации TUN
1,Клиент отправляет пакеты данных на сетевую карту LVS после прохождения через сеть.Исходный IP-адрес пакетов данных — CIP, а IP-адрес назначения — VIP.
2,После входа в цепочку PREROUTING маршрут будет искаться в соответствии с IP-адресом назначения, чтобы определить, является ли он локальным IP-адресом, пакет данных будет перенаправлен в цепочку INPUT, а в LVS исходный IP-адрес и IP-адрес назначения остаются неизменными.
3.После прибытия в LVS проверьте, является ли это службой IPVS через IP-адрес назначения и ПОРТ назначения.Если это служба IPVS, будет выбран внутренний сервер RS, IP-адрес источника — DIP, IP-адрес назначения — RIP и пакет данных будет отправлен в цепочку OUTPUT.
4.Пакет данных поступает на сетевую карту LVS в соответствии с информацией о маршрутизации, отправляется на шлюз маршрутизатора и, наконец, поступает на внутренний сервер.
5.После того, как внутренний сервер получит пакет данных, он удалит самый внешний IP-адрес и обнаружит, что уровень IP-заголовка все еще существует, IP-адрес источника — CIP, IP-адрес назначения — VIP, а VIP настроен на TUNL0. при поиске маршрута он оценивается как этот компьютер.IP-адрес будет отправлен прикладной программе на уровне пользовательского пространства.После того, как VIP станет IP-адресом источника, а CIP-IP-адресом назначения, пакет данных будет отправлен в сеть. карты, и, наконец, вернулся к клиенту пользователя.
Преимущества и недостатки режима TUN:
преимущество:
-
Режим одной руки, давление нагрузки LVS небольшое;
-
Малая модификация пакетов данных и высокая целостность информации;
-
Может пересечь машинное отделение;
недостаток:
-
Сопоставление портов не поддерживается;
-
Необходимо установить модули и настроить VIP на внутреннем сервере RS;
-
IP-адрес заголовка туннеля фиксирован, а сетевая карта внутреннего сервера RS может быть неравномерной;
-
Добавление заголовка туннеля может привести к фрагментации, что в итоге повлияет на производительность сервера;
Сценарии использования режима TUN:
- Если требования к пересылке высоки и есть потребность в межмашинных помещениях, можно выбрать режим TUN.
прямой маршрут: Прямая маршрутизация, называемая режимом DR, принимает полуоткрытую сетевую структуру, аналогичную структуре режима TUN, но каждый узел не разбросан по разным местам, а находится в той же физической сети, что и планировщик, и планировщик нагрузки и каждый узел находятся в одной физической сети, серверы связаны через локальную сеть и не требуют установки выделенного IP-туннеля. Это наиболее часто используемый режим работы из-за его мощной функциональности.
Принцип реализации аварийного восстановления
1,Когда пользователь клиента отправляет запрос наwww.baidu.comКогда веб-сайт используется, он сначала разрешает IP-адрес через DNS и отправляет запрос на сервер Baidu.Пакет данных проходит через сеть на сервер балансировки нагрузки Baidu LVS.В это время пакет данных, когда он достигает LVS сетевая карта включает в себя: исходный IP-адрес (адрес клиента), целевой IP-адрес (IP-адрес внешнего сервера Baidu, также известный как VIP), исходный MAC-адрес (MAC-адрес подключенного маршрутизатора CMAC / LVS), целевой MAC-адрес (VMAC / VIP соответствующий MAC-адрес адрес).
2,После того, как пакет данных поступает на сетевую карту, он проходит через канальный уровень в цепочку PREROUTING для поиска маршрута и обнаруживает, что IP-адрес назначения является VIP LVS, затем он будет отправлен в цепочку INPUT и IP-адрес. адрес, MAC-адрес и порт пакета данных не были изменены.
3.Когда пакет данных поступает в цепочку INPUT, LVS подтвердит, является ли он услугой, определенной LVS в соответствии с IP-адресом назначения и портом (портом).Если это определенная услуга VIP, он выберет внутренний сервер RS1 из RealServer в соответствии с к настроенной служебной информации, а затем RS1 используется в качестве исходящего маршрута пункта назначения, чтобы определить информацию о следующем переходе и через какую конкретную сетевую карту отправляется пакет данных.Лучше отправлять пакет данных в цепочку OUTPUT через INET_HOOK .
4.После того, как пакет данных пройдет через цепочку POSTROUTING, MAC-адрес назначения будет изменен на MAC-адрес сервера RealServer (RMAC), MAC-адрес источника будет изменен на MAC-адрес (DMAC) IP-адреса того же сегмента сети. LVS и RS.В это время пакет данных будет отправлен на сервер RealServer.
5.После того, как пакет данных достигнет сервера RealServer, он обнаружит, что MAC-адрес пакета запроса является MAC-адресом его собственной сетевой карты, и примет пакет.После завершения обработки ответный пакет будет передан на eth0 сетевая карта через интерфейс lo, а затем отправлена. В это время IP-адрес источника — VIP, IP-адрес назначения — CIP, MAC-адрес источника — это RMAC RS1, MAC-адрес получателя — это MAC-адрес (CMAC) маршрутизатора следующего перехода, а конечный пакет данных пробрасывается к клиенту через маршрутизатор, подключенный RS.
Преимущества и недостатки режима DS:
преимущество:
-
Данные ответа не проходят через LVS, и производительность высокая;
-
Небольшая модификация пакетов данных и хорошая целостность информации;
недостаток:
-
LVS и RS должны находиться в одной физической сети;
-
lo и другие параметры ядра должны быть настроены на RS;
-
Сопоставление портов не поддерживается;
Сценарии использования режима DS:
- Для высоких требований к производительности можно предпочесть режим DR, а исходный IP-адрес клиента также может быть прозрачно передан.
Режим NAT: требуется только один общедоступный IP-адрес, что является наиболее простым в использовании режимом балансировки нагрузки с лучшей безопасностью.
Режим TUN и режим DR: высокая грузоподъемность, широкий диапазон приложений и низкая безопасность узла.
Десять, десять алгоритмов планирования нагрузки LVS
голосование: Round Robin, который распределяет полученные запросы на доступ к реальным серверам каждой ноды в кластере по очереди, вне зависимости от фактического количества подключений и системной нагрузки сервера.
взвешенная круговая система: Циклический взвешенный алгоритм, в соответствии с вычислительной мощностью реального сервера, полученные запросы на доступ распределяются по очереди.Планировщик может автоматически запрашивать состояние загрузки каждого узла и динамически изменять его вес, чтобы гарантировать, что сервер с высокой вычислительной мощностью несет больше трафика.
наименее подключенный: Наименьшее количество подключений, которое распределяется в соответствии с количеством подключений, установленных реальным сервером, и преимущественно распределяет полученные запросы на доступ к узлам с небольшим количеством подключений.Если производительность всех серверных узлов сбалансирована, этот метод можно использовать для лучше сбалансировать нагрузку.
взвешенное наименьшее количество соединений: Наименьшие взвешенные соединения, когда производительность серверных узлов сильно различается, вес может быть автоматически скорректирован для реального сервера, а узлы с более высокими весами будут нести большую нагрузку активных соединений.
Наименьшие связи на основе местоположения: LBLC, основанный на местоположении алгоритм планирования наименьшего количества подключений для балансировки нагрузки целевого IP, обычно используемый в кластерах кэша. Этот алгоритм обычно направляет пакеты, предназначенные для IP-адреса, на свой сервер, если сервер активен и находится под нагрузкой. Если сервер перегружен (его активные подключения больше, чем его вес), а сервер загружен наполовину, этому IP-адресу назначается взвешенный сервер с наименьшим подключением.
Сложные наименьшие соединения на основе местности: LBLCR, наименьшее количество подключений на основе местоположения со сложным алгоритмом планирования также используется для балансировки нагрузки целевого IP, часто используемого в кластерах кэша. В отличие от планирования LBLC, балансировщик нагрузки поддерживает сопоставление цели с набором серверных узлов, которые могут обслуживать цель. Запросы к цели распределяются по наименее подключенным узлам в наборе целевых серверов. Если все узлы в наборе серверов перегружены, он выберет наименее подключенный узел в кластере и добавит его в целевую ферму серверов. Если кластер серверов не был изменен в течение заданного времени, наиболее загруженный узел удаляется из кластера серверов, чтобы избежать высокой нагрузки.
Алгоритм планирования хеширования адреса назначения: DH, алгоритм заключается в установлении отношения сопоставления между целевым IP-адресом и сервером с помощью хэш-функции в соответствии с целевым IP-адресом.Когда сервер недоступен или нагрузка слишком высока, запрос, отправленный на целевой IP-адрес, будет фиксируется на сервере.
Алгоритм планирования хеширования исходного адреса: SH, который аналогичен алгоритму планирования хеширования адреса назначения, но статически выделяет фиксированные ресурсы сервера в соответствии с алгоритмом хэширования исходного адреса.
Планирование кратчайшей задержки: SED, алгоритм планирования кратчайшей ожидаемой задержки назначает сетевые соединения серверу с кратчайшей ожидаемой задержкой. Если запрос отправляется на i-й сервер, ожидаемая задержка равна (Ci +1)/Ui, где Ci — количество соединений на i-м сервере, а Ui — фиксированная скорость обслуживания (вес) i-го сервера.
никогда не ставьте расписание в очередь: NQ, алгоритм планирования никогда не использует двухскоростную модель. Когда доступен бездействующий сервер, запрос отправляется на бездействующий сервер вместо ожидания сервера быстрого ответа. Если свободный сервер недоступен, запрос будет отправлен на сервер, чтобы минимизировать его ожидаемую задержку (алгоритм планирования кратчайшей ожидаемой задержки).
11. Термины и описания, связанные с LVS
Вышеупомянутое содержание включает много терминов или сокращений, и конкретные значения кратко объясняются здесь для облегчения понимания.
-
ДС:Director Server, интерфейсный сервер узла балансировки нагрузки.
-
РС:Real Server, внутренний реальный сервер.
-
СИП:IP-адрес клиента, IP-адрес клиента.
-
VIP:Виртуальный IP-адрес — IP-адрес, к которому балансировщик нагрузки предоставляет внешний доступ. Как правило, IP-адрес балансировщика нагрузки обеспечивает высокую доступность через виртуальный IP-адрес.
-
РВАТЬ:RealServer IP, реальный IP-адрес сервера балансировки нагрузки.
-
ОКУНАТЬ:IP-адрес директора — IP-адрес, по которому балансировщик нагрузки взаимодействует с внутренним сервером.
-
ЦМАК:MAC-адрес клиента, MAC-адрес маршрутизатора, к которому подключен LVS.
-
ВМАК:MAC-адрес, соответствующий VIP LVS балансировки нагрузки.
-
DMAC:MAC-адрес, соответствующий DIP LVS балансировки нагрузки.
-
РМЦ:MAC-адрес, соответствующий RIP-адресу внутреннего реального сервера.
Reference
www.linuxvirtualserver.org/
www.linuxvirtualserver.org/how.html
Woohoo. Виртуальный сервер Linux.org/documents. Также…
Суммировать
Оглядываясь назад, из этой статьи вы можете узнать, что такое LVS, зачем использовать LVS, состав и функции LVS, происхождение и преимущества балансировки нагрузки, типы кластеров балансировки нагрузки LVS (кластеры балансировки нагрузки, кластеры высокой доступности, высокопроизводительный вычислительный кластер), DNS для балансировки нагрузки/аппаратной и программной балансировки нагрузки, общая архитектура балансировки нагрузки LVS (планировщик нагрузки, пул серверов, общее хранилище), основные принципы балансировки нагрузки LVS и базовые принципы, основанные на netfilter и Working механизм, три рабочих режима балансировки нагрузки LVS (NAT, TUN, DR), десять алгоритмов планирования балансировки нагрузки LVS (RR, WRR, LC, WLC, LBLC, LBLCR, DH, SH, SED, NQ) и соответствующие термины и описания LVS. , и т.д.;
Если вы считаете, что эта статья полезна для вас, пожалуйста, внесите свой вклад в эту статьюоставить сообщение, нажмитезаглянуть,илиВпередДавай, потому что это буду яСильнейшая мотивация продолжать выпускать больше качественных статей!Всем спасибо!