Как разработчик, что вы должны знать о балансировке нагрузки LVS

Linux
Как разработчик, что вы должны знать о балансировке нагрузки LVS

Введение

LVS — это сокращение от виртуального сервера Linux, представляющего собой высокодоступную и высокопроизводительную кластерную систему виртуальных серверов. Основное внимание уделено требованиям высокомасштабируемых и высокодоступных сетевых служб, дается решение планирования балансировки нагрузки на основе IP-уровня и на основе распределения запросов контента, и эти методы реализованы в ядре Linux. , виртуальный сервер для высокодоступной сети Сервисы.

Это проект с открытым исходным кодом, инициированный доктором Чжан Венсуном, его официальный сайт:http://www.linuxvirtualserver.orgLVS теперь является частью стандарта ядра 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