Linux Virtual Server
   HOME

TheInfoList



OR:

Linux Virtual Server (LVS) is load balancing software for
Linux kernel The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ...
–based operating systems. LVS is a
free and open-source Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
project started by Wensong Zhang in May 1998, subject to the requirements of the
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general ...
(GPL), version 2. The mission of the project is to build a high-performance and highly available server for Linux using clustering technology, which provides good scalability, reliability and serviceability.


Overview

The major work of the LVS project is now to develop advanced IP load balancing software (IPVS), application-level load balancing software (KTCPVS), and cluster management components. * IPVS: an advanced IP load balancing software implemented inside the
Linux kernel The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ...
. The
IP Virtual Server IPVS (IP Virtual Server) implements transport-layer load balancing, usually called Layer 4 LAN switching, as part of the Linux kernel. It's configured via the user-space utility tool. IPVS is incorporated into the Linux Virtual Server (LVS), ...
code is merged into versions 2.4.x and newer of the Linux kernel mainline. * KTCPVS: implements application-level load balancing inside the Linux kernel, still under development. LVS can be used for building highly scalable and highly available network services, such as web, email, media and
VoIP Voice over Internet Protocol (VoIP), also called IP telephony, is a method and group of technologies for the delivery of voice communications and multimedia sessions over Internet Protocol (IP) networks, such as the Internet. The terms Internet t ...
services, and integrating scalable network services into large-scale reliable
e-commerce E-commerce (electronic commerce) is the activity of electronically buying or selling of products on online services or over the Internet. E-commerce draws on technologies such as mobile commerce, electronic funds transfer, supply chain manag ...
or
e-government E-government (short for electronic government) is the use of technological communications devices, such as computers and the Internet, to provide public services to citizens and other persons in a country or region. E-government offers new ...
applications. LVS-based solutions already have been deployed in many real applications throughout the world, including
Wikipedia Wikipedia is a multilingual free online encyclopedia written and maintained by a community of volunteers, known as Wikipedians, through open collaboration and using a wiki-based editing system. Wikipedia is the largest and most-read refer ...
. The LVS components depend upon the Linux
Netfilter Netfilter is a framework provided by the Linux kernel that allows various networking-related operations to be implemented in the form of customized handlers. Netfilter offers various functions and operations for packet filtering, network addr ...
framework, and its source code is available in the net/netfilter/ipvs subdirectory within the
Linux kernel The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ...
source. LVS is able to handle UDP, TCP layer-4 protocols as well as FTP passive connection by inspecting layer-7 packets. It provides a hierarchy of counters in the /proc directory. The userland utility program used to configure LVS is called ipvsadm, which requires
superuser In computing, the superuser is a special user account used for system administration. Depending on the operating system (OS), the actual name of this account might be root, administrator, admin or supervisor. In some cases, the actual name of t ...
privileges to run.


Schedulers

LVS implements several balancing schedulers, listed below with the relevant source files: * 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 hashing (ip_vs_mh.c)


Glossary

Commonly used terms include the following: * ''LVS director'': load balancer that receives all incoming client requests for services and directs them to a specific "real server" to handle the request * ''Real servers'': nodes that make up an LVS cluster which are used to provide services on the behalf of the cluster * ''Client computers'': computers requesting services from the virtual server * ''VIP (Virtual IP address)'': the IP address used by the director to provide services to client computers * ''RIP (Real IP address)'': the IP address used to connect to the cluster nodes * ''DIP (Directors IP address)'': the IP address used by the director to connect to network of real IP addresses * ''CIP (Client IP address)'': the IP address assigned to a client computer, that it uses as the source IP address for requests being sent to the cluster


Examples

Setting up a virtual
HTTP The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide We ...
server with two real servers: 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 The first command assigns TCP port 80 on
IP address An Internet Protocol address (IP address) is a numerical label such as that is connected to a computer network that uses the Internet Protocol for communication.. Updated by . An IP address serves two main functions: network interface ident ...
192.168.0.1 to the virtual server. The chosen scheduling algorithm for load balancing is round-robin (-s rr). The second and third commands are adding IP addresses of real servers to the LVS setup. The forwarded network packets shall be masked (-m). Querying the status of the above configured LVS setup: # 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


See also

*
IP Virtual Server IPVS (IP Virtual Server) implements transport-layer load balancing, usually called Layer 4 LAN switching, as part of the Linux kernel. It's configured via the user-space utility tool. IPVS is incorporated into the Linux Virtual Server (LVS), ...
*
Netfilter Netfilter is a framework provided by the Linux kernel that allows various networking-related operations to be implemented in the form of customized handlers. Netfilter offers various functions and operations for packet filtering, network addr ...
and nftables *
Network scheduler A network scheduler, also called packet scheduler, queueing discipline (qdisc) or queueing algorithm, is an arbiter on a node in a packet switching communication network. It manages the sequence of network packets in the transmit and receive q ...


References


External links

*
Linux Virtual Server Configuration Wiki

IBM eServer BladeCenter, Linux, and Open Source: Blueprint for e-business on demand
(includes LVS as a component) {{Linux kernel High-availability cluster computing Free network-related software Internet software for Linux Linux-only free software Parallel computing