Введение
LVS — это сокращение от виртуального сервера Linux, представляющего собой высокодоступную и высокопроизводительную кластерную систему виртуальных серверов. Основное внимание уделено требованиям высокомасштабируемых и высокодоступных сетевых служб, дается решение планирования балансировки нагрузки на основе IP-уровня и на основе распределения запросов контента, и эти методы реализованы в ядре Linux. , виртуальный сервер для высокодоступной сети Сервисы.
Это проект с открытым исходным кодом, инициированный доктором Чжан Венсуном, его официальный сайт:http://www.linuxvirtualserver.org
LVS теперь является частью стандарта ядра Linux. Техническая цель, которая может быть достигнута с помощью LVS, заключается в следующем: получить высокопроизводительный и высокодоступный серверный кластер Linux с помощью технологии балансировки нагрузки и операционной системы Linux, достигнутой LVS, которая обладает хорошей надежностью, масштабируемостью и работоспособностью.
LVS часто используется в сочетании с keepalive в качестве балансировщика нагрузки на уровне 4 сервиса (транспортный уровень семиуровневого протокола ISO).В этой статье собраны некоторые базовые знания о lvs, чтобы лучше понять и использовать lvs. Как настроить и сохранить знания, вы можете обратиться к официальному сайту lvs или к другой информации.
Структура и состав
Архитектура кластера LVS:
-
Планировщик нагрузки (балансировщик нагрузки/директор), который является фронтальной машиной всего кластера наружу, отвечает за отправку запроса клиента на группу внутренних серверов для выполнения, а клиент считает, что возврат тот же IP (обычно этот IP становится виртуальным IP или VIP)
-
Пул серверов (пул серверов/Realserver) — это группа серверов, которые фактически выполняют запросы клиентов.Обычно исполняемые службы включают WEB, MAIL, FTP и DNS.
-
Общее хранилище (shared storage), предоставляющее общую область хранения для пулов серверов, что позволяет пулам серверов иметь одинаковый контент и предоставлять одни и те же услуги.
Состав программного обеспечения LVS:
-
ipvs (виртуальный ip-сервер): Часть кода, работающая в пространстве ядра, называемая ipvs, — это код, который фактически вступает в силу и реализует планирование.
-
ipvsadm: другая часть работает в пользовательском пространстве, называемом ipvsadm, которое отвечает за написание правил для структуры ядра ipvs, определяя, кто является службой кластера, а кто внутренним реальным сервером (Real Server).
связанные термины
-
DS: сервер-директор. Относится к внешнему узлу балансировщика нагрузки.
-
РС: Настоящий сервер. Бэкенд реальный рабочий сервер
-
VIP: IP-адрес цели запроса пользователя, то есть IP-адрес внешней сети физической машины lvs.
-
DIP: IP-адрес сервера директора, IP-адрес, в основном используемый для связи с внутренним хостом, то есть IP-адрес интрасети физической машины lvs.
-
RIP: реальный IP-адрес сервера, IP-адрес внутреннего сервера.
-
CIP: IP-адрес клиента, IP-адрес клиента доступа, то есть исходный IP-адрес запроса.
Как работает ЛВС
-
1. Когда пользователь инициирует запрос к планировщику балансировки нагрузки (VS или LB), планировщик отправляет запрос в пространство ядра.
-
2. Цепочка PREROUTING сначала получит запрос пользователя, определит, что целевой IP-адрес является локальным IP-адресом, и отправит пакет данных в цепочку INPUT.
-
3. IPVS работает в цепочке INPUT. Когда запрос пользователя достигает INPUT, IPVS сравнивает запрос пользователя с службой кластера, которая была определена ею самой. Если запрос пользователя является определенной службой кластера, тогда IPVS принудительно изменит целевой IP-адрес и порт в пакете данных и отправить новый пакет данных в цепочку POSTROUTING.
-
4. После того, как цепочка POSTROUTING получает пакет данных, она обнаруживает, что целевой IP-адрес является ее собственным внутренним сервером, затем посредством маршрутизации пакет данных, наконец, отправляется на внутренний сервер.
Четыре режима балансировки нагрузки
Существует четыре общих режима балансировки LVS, а именно: режим DR, режим NAT, режим TUN и режим FULLNAT.
режим NAT
VS/NAT — это самый простой способ, всем серверам RealServer достаточно указать свои шлюзы на Director. Клиентом может быть любая операционная система, но, таким образом, RealServer, которым может управлять директор, относительно ограничен. В режиме VS/NAT Директор также может выполнять функции RealServer.
Рабочий процесс Пользователь запрашивает LVS для доступа к директору, директор изменяет IP-адрес назначения запрошенного сообщения с VIP на RIP и в то же время изменяет порт назначения сообщения на соответствующий порт реального сервера и, наконец, отправляет сообщение на реалсервер, а реалсервер пропустит маршрут шлюза к директору и вернет данные директору.Перед соответствующим клиентом директор меняет исходный IP пакета данных с RIP на VIP, после чего отвечает пользователю и отправляет данные пользователю.
Функции
-
Режим NAT изменяет IP-адрес назначения, а реальный сервер можно найти в соответствии с IP-адресом назначения, поэтому VIP и RIP не обязательно должны находиться в одном сегменте сети.
-
Входящие и исходящие пакеты NAT должны проходить через LVS, поэтому LVS может стать узким местом системы.
ПОЛНЫЙ НАТ-режим
Режим FULLNAT аналогичен NAT, за исключением того, что когда пакеты данных проходят через lvs, изменяется не только IP-адрес назначения, но и IP-адрес источника.
Функции
-
Режим FULLNAT также не требует, чтобы DIP и RIP находились в одном сегменте сети.
-
Сравнение FULLNAT с NAT: это гарантирует, что обратные пакеты RS могут достигать LVS.
-
FULLNAT требует обновления исходного IP-адреса, поэтому производительность обычно на 10% ниже, чем в режиме NAT.
ДР режим
Режим VS/DR реализуется путем перезаписи части MAC-адреса сообщения запроса. Director и RealServer должны находиться в одной локальной сети (в одном компьютерном зале). Привязанный к RealServer виртуальный IP-адрес настраивается на соответствующих сетевых устройствах Non-ARP (таких как lo или tunl), а виртуальный IP-адрес директора виден для внешнего мира, в то время как виртуальный IP-адрес RealServer невидим для внешнего мира. Мир. IP-адрес RealServer может быть описан как IP-адрес интрасети или общедоступный IP-адрес.
Рабочий процесс Пользователь запрашивает LVS для связи с директором, директор изменяет MAC-адрес назначения запрошенного пакета на MAC-адрес реального сервера на задней стороне, IP-адрес назначения — это VIP (без изменений), IP-адрес источника — это IP-адрес клиента. адрес (без изменений), а затем директор передает широковещательную рассылку ARP, отправляет пакет на реальный сервер. Realserver определяет, что адрес назначения является его собственным локальным виртуальным IP-адресом. Если он находится в том же сегменте сети, он возвращает запрос непосредственно пользователю. Если пользователь не находится в том же сегменте сети, что и realserver, ему нужно вернуться к пользователю через шлюз.
Функции
-
RS и Director Server должны иметь сетевую карту в одной физической сети.
-
Все пакеты запросов проходят через Director Server, но пакеты ответов не проходят через Director Server.
-
Все реальные серверные машины должны быть настроены с VIP-адресом (обычно привязанным к lo)
режим TUN
IP-туннелирование — это технология, которая инкапсулирует один IP-пакет в другой IP-пакет, что позволяет инкапсулировать пакеты данных, предназначенные для одного IP-адреса, и пересылать их на другой IP-адрес. Технология IP-туннелирования также называется технологией IP-инкапсуляции (IP-инкапсуляция). IP-туннели в основном используются для мобильных хостов и виртуальных частных сетей (Virtual Private Networks), в которых туннели устанавливаются статически, один конец туннеля имеет IP-адрес, а другой конец имеет уникальный IP-адрес.
Рабочий процесс Пользователь запрашивает LVS для связи с директором, директор инкапсулирует пакет запроса в новый IP-пакет с помощью технологии шифрования IP-TUN, IP-адрес назначения — VIP (без изменений), а затем директор отправляет пакет на реальный сервер, который на основе IP-TUN расшифровывает, а затем анализирует пакет для целей VIP, определяет, привязана ли сетевая карта к VIP, и обрабатывает пакет, если он связан.Если он находится в том же сегменте сети, запрос возвращается непосредственно пользователю, в противном случае он возвращается пользователю через шлюз; если нет привязки к VIP, пакет будет удален напрямую.
Функции
-
TUNNEL должен привязывать VIP на всех реальных серверах
-
Realserver отправляет пакет напрямую клиенту
-
Эксплуатация и обслуживание в туннельном режиме будут более сложными, поэтому, как правило, не используйте
-
Сопоставление портов не поддерживается
-
RIP, VIP, DIP — все общедоступные сетевые адреса.
Сравнение четырех режимов
-
Должны ли VIP и реальный сервер находиться в одном и том же сегменте сети?В режиме DR, поскольку необходимо изменить только MAC-адрес пакета, реальный сервер необходимо найти с помощью широковещательной рассылки ARP, поэтому VIP и реальный сервер должны находиться в одном и том же сегменте. Сегмент сети.Висите под этим LVS, другие режимы не обязательно должны быть в том же сегменте сети, потому что адрес назначения будет изменен на IP-адрес реального сервера
-
Вам нужно привязать VIP к реальному серверу?После получения пакета реальный сервер определит, является ли адрес назначения его собственным IP-адресом назначения в режиме DR, который не был изменен, или является VIP, поэтому необходимо привязать IP-адрес VIP Значение режима TUN для реального сервера.После обертывания слоя IP пакета, проанализированного реальным сервером, по-прежнему является VIP, поэтому также необходимо привязать VIP к реальному серверу.
-
Сравнение производительности четырех режимов: режим DR и режим IP TUN проходят через LVS, когда пакет входит, и возвращают пакет непосредственно клиенту, когда пакет возвращается; таким образом, производительность двух режимов выше, чем у NAT, но режим TUN более сложен, поэтому производительность уступает DR. Режим FULLNAT заменяет не только IP-адрес назначения, но и IP-адрес источника, поэтому производительность на 10% ниже, чем у NAT.
Производительность примерно такая: DR>TUN>NAT>FULLNAT
Десять алгоритмов балансировки нагрузки
статический метод
Расписание только по алгоритму собственной провинции:
круговая система рр
Относится к каждому серверу одинаково, независимо от фактического количества подключений и нагрузки на сервер.
Взвешенный раунд колл wrr
Планировщик может автоматически запрашивать реальную загрузку сервера и динамически корректировать веса.
Алгоритм планирования хеширования адреса назначения dh
Алгоритм устанавливает отношение сопоставления между целевым IP-адресом и сервером через хеш-функцию на основе целевого IP-адреса.В случае, если сервер недоступен или нагрузка слишком высока, запрос, отправленный на целевой IP-адрес, будет отправлен на сервер.
Алгоритм планирования хэша исходного адреса sh
Аналогичен алгоритму планирования хеширования адреса назначения, но он статически выделяет фиксированные ресурсы сервера в соответствии с алгоритмом хэширования исходного адреса.
динамический метод
Он в основном планируется в соответствии с текущим состоянием загрузки каждого RS и алгоритмом планирования.Overhead=value
Меньшие RS будут запланированы.
минимальная ссылка lc
Динамически планировать сетевые запросы к серверу с наименьшим количеством установленных подключений. Если реальные серверы в кластере имеют одинаковую производительность системы, этот алгоритм может лучше достичь балансировки нагрузки.
наименьшее взвешенное количество ссылок wlc
Планировщик может автоматически запрашивать загрузку реального сервера и динамически регулировать веса.Те, у кого есть веса, будут назначены тем, кто не работает.Веса настроенных машин высокие.
Алгоритм планирования наименьшего соединения на основе местоположения lblc
Этот алгоритм представляет собой алгоритм планирования для IP-адреса назначения пакета данных запроса. Алгоритм сначала находит все серверы, используемые IP-адресом назначения, ближайшим к IP-адресу назначения, если сервер все еще доступен и способен обработать запрос. планировщик попытается выбрать тот же сервер, в противном случае он продолжит выбирать другие возможные серверы.
Сложный алгоритм соединения на основе наименьшего местоположения lblcr
Запись не предназначена для записи соединения между целевым IP-адресом и сервером, она будет поддерживать отношение сопоставления между целевым IP-адресом и группой серверов, чтобы предотвратить перегрузку одноточечного сервера.
минимальная ожидаемая задержка sed
Независимо от неактивных ссылок, у кого больше полномочий, предпочесть сервер с наибольшими полномочиями для получения запроса, но машина с большим весом будет больше загружена.
никогда не стоять в очереди nq
Нет необходимости в очереди, если количество подключений к реальному серверу равно 0, оно будет выделено напрямую
Ссылаться на
-
http://www.yulongjun.com/lb/20170817-01-lvs-introduction/
-
https://blog.csdn.net/lcl_xiaowugui/article/details/81701949
-
https://yq.aliyun.com/articles/87257
-
https://yq.aliyun.com/articles/53735