Linux Virtual Server for Scalable Network Services
Wensong Zhang
National Laboratory for Parallel & Distributed ProcessingChangsha, Hunan 410073, China
wensong@linuxvirtualserver.org,http://www.LinuxVirtualServer.org/
Abstract
This paper describes the motivation, design, internal im-plementationof Linux Virtual Server. The goal of LinuxVirtual Server is to provide a basic framework to buildhighlyscalableandhighlyavailablenetworkservicesus-ing a large cluster of commodity servers. The TCP/IPstackofLinuxkernelis extendedtosupportthreeIPloadbalancing techniques, which can make parallel servicesof different kinds of server clusters to appear as a ser-vice on a single IP address. Scalability is achieved bytransparently adding or removing a node in the cluster,and high availability is provided by detecting node ordaemon failures and reconfiguring the system appropri-ately.
1 Introduction
With the explosive growth of the Internet, Internetservers must cope with greater demands than ever. Thepotential number of clients that a server must supporthas dramatically increased, some hot sites have alreadyreceived hundreds of thousands of simultaneous clientconnections. With the increasing number of users andthe increasing workload, companies often worry abouthow their systems grow over time. Furthermore, rapidresponse and 24x7 availability are mandatory require-ments for the mission-critical business applications, assites compete for offering users the best access expe-rience. Therefore, the requirements for hardware andsoftware solution to support highly scalable and highlyavailable services can be summarized as follows:
Scalability
, when the load offeredto the service in-creases, system can be scaled to meet the require-ment.
24x7 availability
, the service as a whole must beavailable24x7,despiteoftransientpartialhardwareand software failures.
Manageability
, although the whole system may bephysically large, it should be easy to manage.
Cost-effectiveness
, the whole system must be eco-nomical to afford and expand.A single server is usually not sufficient to handle thisaggressively increasing load. The server upgrading pro-cess is complex, and the server is a single point of fail-ure. The higher end the server is upgraded to, the muchhigher cost we have to pay.Clusters of servers, connected by a fast network, areemerging as a viable architecture for building highlyscalable and highly available services. This type of looselycoupledarchitectureis morescalable, morecost-effective and more reliable than a tightly coupled mul-tiprocessor system. However, a number of challengesmust be addressed to make a cluster of servers functioneffectively for scalable network services.Linux Virtual Server [22] is our solution to the require-ments. Linux Virtual Server is a software tool that di-rects network connections to multiple servers that sharetheir workload, which can be used to build highly scal-able and highly available services. Prototypes of LinuxVirtual Server have already been used to build manysites of heavy load on the Internet, such as Linux por-tal www.linux.com, sourceforge.net and UK NationalJANET Web Cache Services.Linux Virtual Server directs network connections to thedifferent servers according to scheduling algorithms andmakes parallel services of the cluster to appear as a vir-tual service on a single IP address. Client applicationsinteract with the cluster as if it were a single server. Theclients are not affected by interaction with the clusterand do not need modification. Scalability is achieved bytransparently adding or removing a node in the cluster.High availability is provided by detecting node or dae-monfailures and reconfiguringthe system appropriately.
Leave a Comment