Linux Virtual Server (LVS) — широко распространённое средство управления кластерных систем для Linux систем. Этот свободный проект начал Wensong Zhang в мае 1998. Цель проекта — построение высоконадёжного и высокоскоростного сервера с использованием кластерной технологии, которая обеспечивает хорошую масштабируемость, надёжность и работоспособность.

Linux Virtual Server используется серверами Википедии. Обзор

В настоящее время основная работа в рамках проекта LVS заключается в разработке передового программного обеспечения для IP-балансировки нагрузки (IPVS), программного обеспечения для балансировки нагрузки на уровне приложения (KTCPVS) и компонентов управления кластером.

IPVS: передовое программное обеспечение для балансировки нагрузки IP, реализованное внутри ядра Linux. Код IP Virtual Server включён в основную ветку ядра Linux версий 2.4.x и новее. KTCPVS: реализует балансировку нагрузки на уровне приложения внутри ядра Linux; Всё ещё находится в стадии разработки.

LVS может использоваться для создания масштабируемых и высокодоступных сетевых сервисов, таких как веб-службы, электронная почта, медиа и сервисы VoIP, а также для интеграции масштабируемых сетевых сервисов в крупные надёжные приложения электронной коммерции или электронного правительства. Решения на базе LVS уже развернуты во многих реальных системах по всему миру, включая Википедию.

Компоненты LVS зависят от фреймворка Linux Netfilter, и их исходный код доступен в подкаталоге net/netfilter/ipvs внутри исходного кода ядра Linux. LVS способен обрабатывать протоколы 4-го уровня (UDP, TCP), а также пассивные FTP-соединения путём проверки пакетов 7-го уровня. Проект предоставляет иерархию счётчиков в каталоге /proc.

Утилита пользовательского пространства (userland), используемая для настройки LVS, называется IP_Virtual_Server; для её запуска требуются привилегии суперпользователя.

Планировщики LVS реализует несколько планировщиков балансировки, перечисленных ниже с указанием соответствующих исходных файлов:

Циклический (Round-robin) (ip_vs_rr.c) Взвешенный циклический (Weighted round-robin) (ip_vs_wrr.c) Наименьшее количество соединений (Least-connection) (ip_vs_lc.c) Взвешенное наименьшее количество соединений (Weighted least-connection) (ip_vs_wlc.c) Наименьшее количество соединений на основе локальности (Locality-based least-connection) (ip_vs_lblc.c) Наименьшее количество соединений на основе локальности с репликацией (Locality-based least-connection with replication) (ip_vs_lblcr.c) Хеширование назначения (Destination hashing) (ip_vs_dh.c) Хеширование источника (Source hashing) (ip_vs_sh.c) Кратчайшая ожидаемая задержка (Shortest expected delay) (ip_vs_sed.c) Без очередей (Never queue) (ip_vs_nq.c) Хеширование Maglev (Maglev hashing) (ip_vs_mh.c)

Глоссарий К часто используемым терминам относятся следующие: LVS-директор (LVS director): балансировщик нагрузки, который принимает все входящие клиентские запросы к службам и направляет их на определённый «реальный сервер» для обработки. Реальные серверы (Real servers): узлы, составляющие кластер LVS, которые используются для предоставления услуг от имени кластера. Клиентские компьютеры (Client computers): компьютеры, запрашивающие услуги у виртуального сервера. VIP (Virtual IP address) — Виртуальный IP-адрес: IP-адрес, используемый директором для предоставления услуг клиентским компьютерам. RIP (Real IP address) — Реальный IP-адрес: IP-адрес, используемый для подключения к узлам кластера. DIP (Directors IP address) — IP-адрес директора: IP-адрес, используемый директором для подключения к сети реальных IP-адресов. CIP (Client IP address) — IP-адрес клиента: IP-адрес, назначенный клиентскому компьютеру, который тот использует в качестве исходного IP-адреса для запросов, отправляемых в кластер.

Примеры Настройка виртуального HTTP-сервера с двумя реальными серверами:

ipvsadm -A -t 192.168.0.1:80 -s rr ipvsadm -a -t 192.168.0.1:80 -r 172.16.0.1:80 -m ipvsadm -a -t 192.168.0.1:80 -r 172.16.0.2:80 -m

Первая команда назначает порт 80 протокола TCP на IP-адресе 192.168.0.1 виртуальному серверу. Выбранный алгоритм планирования для балансировки нагрузки — циклический (round-robin) (-s rr). Вторая и третья команды добавляют IP-адреса реальных серверов в конфигурацию LVS. Пересылаемые сетевые пакеты будут маскироваться (-m).

Запрос статуса настроенной выше конфигурации LVS:

# ipvsadm -L -n IP Virtual Server version 1.0.8 (size=65536) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.1:80 rr -> 172.16.0.2:80 Masq 1 3 1 -> 172.16.0.1:80 Masq 1 4 0

Недостатки Судя по описанию, необходим сервер (балансировщик нагрузки) для распределения нагрузки между компьютерами кластера. Однако в случае выхода его из строя будет недоступен сам кластер. Для борьбы с этим негативным явлением требуется использование нескольких балансировщиков нагрузки.

См. также

IP Virtual Server Netfilter и nftables Сетевой планировщик

Примечания

Ссылки The Linux Virtual Server project Linux Virtual Server Configuration Wiki IBM eServer BladeCenter, Linux, and Open Source: Blueprint for e-business on demand (includes LVS as a component)

Категория:Linux Категория:Свободное сетевое программное обеспечение Категория:Параллельные вычисления