Linux Virtual Server
Original author(s) | Wensong Zhang |
---|---|
Developer(s) | et al. |
Initial release | May 1998 |
Written in | C |
Operating system | Linux |
Type | load balancing |
License | GNU General Public License |
Website | www |
Linux Virtual Server (LVS) is load balancing software for Linux kernel–based operating systems.
LVS is a
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 IP Virtual Server code is merged into versions 2.4.x and newer of the Linux kernel mainline.[1]
- KTCPVS: implements application-level load balancing inside the Linux kernel, as of February 2011[update] still under development.[2]
LVS can be used for building highly scalable and
The LVS components depend upon the Linux Netfilter framework, and its source code is available in the net/netfilter/ipvs
subdirectory within the Linux kernel 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
Schedulers
LVS implements several balancing schedulers, listed below with the relevant source files:[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 hashing (
ip_vs_mh.c
)
Glossary
Commonly used terms include the following:[4]
- 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
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 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
References
- ^ "IPVS Software - Advanced Layer-4 Switching". linuxvirtualserver.org. 2011-02-08. Retrieved 2014-01-12.
- ^ Wensong Zhang (2011-02-08). "KTCPVS Software - Application-Level Load Balancing". Linuxvirtualserver.org. Retrieved 2014-03-25.
- ^ "Job Scheduling Algorithms in Linux Virtual Server". linuxvirtualserver.org. 2011-02-08. Retrieved 2013-11-24.
- ^ "Linux Virtual Server: Load Balance Your Networked Services". bobcares.com. 2008. Retrieved 2013-11-24.
External links
- Official website
- Linux Virtual Server Configuration Wiki
- IBM eServer BladeCenter, Linux, and Open Source: Blueprint for e-business on demand Archived 2022-08-11 at the Wayback Machine (includes LVS as a component)