Linux Virtual Server

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 и новее.[1]
- KTCPVS: реализует балансировку нагрузки на уровне приложения внутри ядра Linux; Всё ещё находится в стадии разработки.[2]
LVS может использоваться для создания масштабируемых и высокодоступных сетевых сервисов, таких как веб-службы, электронная почта, медиа и сервисы VoIP, а также для интеграции масштабируемых сетевых сервисов в крупные надёжные приложения электронной коммерции или электронного правительства. Решения на базе LVS уже развернуты во многих реальных системах по всему миру, включая Википедию.
Компоненты LVS зависят от фреймворка Linux Netfilter, и их исходный код доступен в подкаталоге net/netfilter/ipvs внутри исходного кода ядра Linux. LVS способен обрабатывать протоколы 4-го уровня (UDP, TCP), а также пассивные FTP-соединения путём проверки пакетов 7-го уровня. Проект предоставляет иерархию счётчиков в каталоге /proc.
Утилита пользовательского пространства (userland), используемая для настройки LVS, называется IP_Virtual_Server; для её запуска требуются привилегии суперпользователя.
Планировщики
LVS реализует несколько планировщиков балансировки, перечисленных ниже с указанием соответствующих исходных файлов:[3]
- Циклический (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)
Глоссарий
К часто используемым терминам относятся следующие:[4]
- 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).[5]
Запрос статуса настроенной выше конфигурации 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
Недостатки
Судя по описанию, необходим сервер (балансировщик нагрузки) для распределения нагрузки между компьютерами кластера. Однако в случае выхода его из строя будет недоступен сам кластер. Для борьбы с этим негативным явлением требуется использование нескольких балансировщиков нагрузки.
См. также
Примечания
- ↑ IPVS Software - Advanced Layer-4 Switching. linuxvirtualserver.org (8 февраля 2011). Дата обращения: 12 января 2014.
- ↑ Wensong Zhang. KTCPVS Software - Application-Level Load Balancing. Linuxvirtualserver.org (8 февраля 2011). Дата обращения: 25 марта 2014.
- ↑ Job Scheduling Algorithms in Linux Virtual Server. linuxvirtualserver.org (8 февраля 2011). Дата обращения: 24 ноября 2013.
- ↑ Linux Virtual Server: Load Balance Your Networked Services. bobcares.com (2008). Дата обращения: 24 ноября 2013.
- ↑ Peter, Jeff. Understanding Virtual Server. Дата обращения: 18 июня 2023.
Ссылки
- The Linux Virtual Server project
- Linux Virtual Server Configuration Wiki
- IBM eServer BladeCenter, Linux, and Open Source: Blueprint for e-business on demand Архивировано 11 августа 2022 года. (includes LVS as a component)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.