Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Linux Virtual Server
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Load-balancing software}} {{Infobox software | name = Linux Virtual Server | title = | logo = Lvslogo.png | logo caption = LVS official logo | logo_size = 200px | logo_alt = LVS official logo | screenshot = <!-- Image name is enough --> | caption = | screenshot_size = | screenshot_alt = | collapsible = | author = Wensong Zhang | developer = et al. | released = {{Start date and age|1998|05}} | discontinued = | latest release version = | latest release date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | latest preview version = | latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | programming language = [[C (programming language)|C]] | operating system = [[Linux]] | platform = | size = | genre = [[Load balancing (computing)|load balancing]] | license = [[GNU General Public License]] | website = {{URL|http://www.LinuxVirtualServer.org}} }} '''Linux Virtual Server''' ('''LVS''') is [[Load balancing (computing)|load balancing]] software for [[Linux kernel]]–based operating systems. LVS is a [[free and open-source]] project started by Wensong Zhang in May 1998, subject to the requirements of the [[GNU General Public License]] (GPL), version 2. The mission of the project is to build a high-performance and highly available server for Linux using [[Computer cluster|clustering]] technology, which provides good scalability, reliability and serviceability. == Overview == [[File:Wikipedia webrequest 2022.png|thumb|LVS as used by [[Wikimedia Foundation]] in 2022.]] The major work of the LVS project is now to develop advanced IP [[Load balancing (computing)|load balancing]] software (IPVS), application-level load balancing software (KTCPVS), and cluster management components. * [[IP Virtual Server|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.<ref>{{cite web | url = http://www.linuxvirtualserver.org/software/ipvs.html | title = IPVS Software - Advanced Layer-4 Switching | date = 2011-02-08 | accessdate = 2014-01-12 | publisher = linuxvirtualserver.org }}</ref> * KTCPVS: implements application-level load balancing inside the Linux kernel, {{As of|2011|02|lc=yes}} still under development.<ref>{{cite web|author=Wensong Zhang |url=http://www.linuxvirtualserver.org/software/ktcpvs/ktcpvs.html |title=KTCPVS Software - Application-Level Load Balancing |publisher=Linuxvirtualserver.org |date=2011-02-08 |accessdate=2014-03-25}}</ref> LVS can be used for building highly scalable and [[High-availability cluster|highly available]] network services, such as web, email, media and [[VoIP]] services, and integrating scalable network services into large-scale reliable [[e-commerce]] or [[e-government]] applications. LVS-based solutions already have been deployed in many real applications throughout the world, including [[Wikipedia]]. The LVS components depend upon the Linux [[Netfilter]] framework, and its source code is available in the <code>net/netfilter/ipvs</code> 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 <code>/proc</code> directory. The [[userland (computing)|userland]] utility program used to configure LVS is called [[ipvsadm]], which requires [[superuser]] privileges to run. === Schedulers === LVS implements several balancing schedulers, listed below with the relevant source files:<ref>{{cite web | url = http://www.linuxvirtualserver.org/docs/scheduling.html | title = Job Scheduling Algorithms in Linux Virtual Server | date = 2011-02-08 | accessdate = 2013-11-24 | publisher = linuxvirtualserver.org }}</ref> * Round-robin (<code>ip_vs_rr.c</code>) * Weighted round-robin (<code>ip_vs_wrr.c</code>) * Least-connection (<code>ip_vs_lc.c</code>) * Weighted least-connection (<code>ip_vs_wlc.c</code>) * Locality-based least-connection (<code>ip_vs_lblc.c</code>) * Locality-based least-connection with replication (<code>ip_vs_lblcr.c</code>) * Destination hashing (<code>ip_vs_dh.c</code>) * Source hashing (<code>ip_vs_sh.c</code>) * Shortest expected delay (<code>ip_vs_sed.c</code>) * Never queue (<code>ip_vs_nq.c</code>) * Maglev hashing (<code>ip_vs_mh.c</code>) == Glossary == Commonly used terms include the following:<ref name="Bob">{{cite web | url = http://bobcares.com/blog/linux-virtual-server-load-balance-your-networked-services/ | title = Linux Virtual Server: Load Balance Your Networked Services | year = 2008 | accessdate = 2013-11-24 | publisher = bobcares.com }}</ref> * ''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 [[Hypertext Transfer Protocol|HTTP]] server with two real servers: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> The first command assigns [[Transmission Control Protocol|TCP]] port 80 on [[IP address]] [[private network|192.168.0.1]] to the virtual server. The chosen scheduling algorithm for [[Load balancing (computing)|load balancing]] is [[Round-robin scheduling|round-robin]] (<code>-s rr</code>). The second and third commands are adding IP addresses of real servers to the LVS setup. The forwarded network packets shall be masked (<code>-m</code>).<ref>{{cite news |last1=Peter |first1=Jeff |title=Understanding Virtual Server |url=https://xaro.net/blog/understanding-vps-vs-vds-guide/ |access-date=18 June 2023}}</ref> Querying the status of the above configured LVS setup: <syntaxhighlight lang="text"> # 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 </syntaxhighlight> == See also == {{Portal|Linux|Free and open-source software}} * [[IP Virtual Server]] * [[Netfilter]] and [[nftables]] * [[Network scheduler]] == References == {{reflist}} ==External links== * {{Official website|http://www.LinuxVirtualServer.org/}} * [http://kb.linuxvirtualserver.org/wiki/Main_Page Linux Virtual Server Configuration Wiki] * [http://publib-b.boulder.ibm.com/Redbooks.nsf/9445fa5b416f6e32852569ae006bb65f/e8417f0abc3cadaf85256d40004f31b8?OpenDocument&Highlight=0,SG247034 IBM eServer BladeCenter, Linux, and Open Source: Blueprint for e-business on demand] {{Webarchive|url=https://web.archive.org/web/20220811174534/https://publib-b.boulder.ibm.com/Redbooks.nsf/9445fa5b416f6e32852569ae006bb65f/e8417f0abc3cadaf85256d40004f31b8?OpenDocument&Highlight=0,SG247034 |date=2022-08-11 }} (includes LVS as a component) {{Linux kernel}} [[Category:High-availability cluster computing]] [[Category:Free network-related software]] [[Category:Internet software for Linux]] [[Category:Linux-only free software]] [[Category:Parallel computing]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:As of
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Linux kernel
(
edit
)
Template:Main other
(
edit
)
Template:Official website
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)
Template:Webarchive
(
edit
)