High Availability Clustered Computing Using Lvs Nat Computer Science
High availability cluster computing environment attempts to provide high availability to computing services. This paper evaluates building and investigating a highly available computing environment that provides a solution to achieve high availability. A prototype of cluster computing environment is developed in Linux environment to provide a single but highly available point of entry. The cluster of computers run web based application to provide services to HTTP users.
The world is witnessing an explosive growth in computing resources, in terms of network resources and heterogeneity of devices. The increasing popularity of handhelds and web-enabled cell-phones is allowing the mobile individual to access data on the Internet, on the corporate network and at home. The rapid development in mobile digital devices is generating more multimedia rich content and inflating data sizes. In addition, the massive growth of the Internet is pushing computing to a truly network-centric paradigm [1].
1.1 Clustered SystemThe major goal of this research is the implementation and investigation of High available Clusters established by using variety of Linux Virtual Server (LVS) with different scenarios. It also investigates the limitation of director server and real server with different load. In this approach a highly available computing environment using ordinary computer systems for the development of a clustered system is required, which maintains the state of operation even in the event of a failure. This computing environment complies with following features:
Guaranteed resource availability for critical applications
Reliability and Transparency
A Server Cluster is basically a group of servers that function as one. By doing so, client machines see the service or application processed by the cluster as though it were coming from a single machine. There are three basic advantages of running a server cluster i.e. scalability, high availability and manageability [2].
1.2 High Available Linux Virtual Server ClusterThe Highly Available Linux Virtual Server Cluster is based either directly on contributions from the Linux community, or on components that were inspired or enriched by various Linux community projects. The primary source of the LVS cluster is Wensong Zhang's Linux Virtual Server (LVS) kernel routing algorithm [3]. The capabilities of the LVS project that the LVS cluster currently supports are:
Routing service requests from virtual servers to a pool of real servers.
Load-balancing.
Packet-forwarding
Persistent connections.
2. Functional Description of System ComponentAs the businesses grow and more people tend to use the internet for performing their daily life operations that are important and critical, the administrators need to have a system that offers reliability, cost effectiveness and high availability even in the case of disaster. A single server that was more than enough a decade ago is not sufficient today, it cannot handle the ever increasing aggressive load of users. Even if the server is upgraded it also has a single point of failure that is not sufficient for business critical environments that rely on the reliability of these servers.
2.1 Architectural ModelThe Tri-Cluster Architecture involves three major cluster divisions namely, the load-balancing (director) servers, the real servers and the file/storage servers. In a Tri-Cluster Design every cluster has its own fail-over service and redundancy method, which prevents every cluster from being phased out in an event of a catastrophic disaster
As a solution of the above problems, cluster of servers connected via a fast network are being implemented everywhere. This type of architecture offers more scalability, reliability and cost effectiveness as shown in figure 1 and figure 2.
Figure 1: Distributed Redundant Tri-Cluster Architecture
Figure 2: High Availability Architecture
2.2 Linux Virtual Server (LVS)The Linux Virtual Server is one solution that meets the requirements and challenges of providing an always-on service. In LVS, a cluster of Linux servers appear as a single (virtual) server on a single IP address. Client applications interact with the cluster as if it were a single, high-performance, and highly-available server. Inside the virtual server, LVS directs incoming network connections to the different servers according to scheduling algorithms [1]. Scalability is achieved by transparently adding or removing nodes in the cluster. High availability is provided by detecting node or daemon failures and reconfiguring the system accordingly, on-the-fly.
2.3 Different Techniques to Implement LVSLinux Virtual Server (LVS) is an open source technology which can be used to construct a scalable and highly available server using a collection of real servers as shown in figure 3. LVS load balances a variety of network services among multiple machines by manipulating packets as they are processed by the Linux TCP/IP stack. One of the most common roles for LVS is to act as a front end to a farm of web servers [3].
Figure 3: Linux Virtual Server [3]
Linux Virtual Server [3] is an enhancement to the Linux operating system which permits a set of servers to offer network services (e.g., ftp, http, ...) as a single virtual server. The aggregate capabilities of the individual hosts, or real servers, comprising the LVS cluster often exceeds those of any one of the constituent systems as a stand alone entity. Reliability is also increased because services are backed by multiple machines, thereby avoiding the single point of failure one would have with a single server [3].
IP load balancing techniques are quite scalable, and IPVS supports three different load balancing techniques: Linux Virtual Server via Network Address Translation (LVS/NAT), Linux Virtual Server via Tunneling (LVS/TUN), and Linux Virtual Server via Direct Routing (LVS/DR).
2.3.1 Virtual Server via Network Address Translation (VS/NAT)Due to security considerations and the shortage of IP addresses in IPv4, more and more networks use private IP addresses that aren't allocated on the Internet. Network address translation is needed when hosts in internal networks want to access the Internet, or need to be accessed from the Internet. NAT can also be used to build a virtual server: parallel services at different IP addresses can appear as a virtual service on a single IP address. The architecture of Virtual Server via NAT is illustrated in Figure 4. The load balancer and real servers are interconnected by a switch or a hub.
Figure 4: Architecture of Virtual Server via Network Address Translation (VS/NAT) [3]
2.3.2 Virtual Server via IP Tunneling (VS/TUN)IP tunneling (also called IP encapsulation) is a technique to encapsulate IP datagram within IP datagram, which allows datagram's destined for one IP address to be wrapped and redirected to another IP address [2].
This technique can also be used to build a virtual server: the load balancer tunnels the request packets to the different servers; the servers process the requests, and return the results to the clients directly. Thus, the service appears as a virtual service on a single IP address.
The architecture of Virtual Server via IP Tunneling is illustrated in Figure 5.
Figure 5: Architecture of Virtual Server via IP Tunneling [3]
2.3.3 Virtual Server via Direct Routing (VS/DR)The VS/DR balancing approach is similar to the one implemented in IBM's Net Dispatcher [4]. The architecture of VS/DR is illustrated in Figure 6.
Figure 6: Architecture of Virtual Server via Direct Routing VS/DR [3]
The packet flow mechanism of VS/DR is similar to that of VS/NAT or VS/TUN. In VS/DR, the load balancer directly routes a packet to the selected server (the load balancer simply changes the MAC address of the data frame to that of the server and retransmits it on the LAN). When the server receives the forwarded packet, the server determines that the packet is for the address on its loop back alias interface, processes the request, and finally returns the result directly to the user.
2.4 Reason for Choosing LVS-NAT Usage ScenarioIP load balancing techniques are quite scalable, and IPVS supports three different load balancing techniques: Linux Virtual Server via NAT (LVS/NAT), Linux Virtual Server via Tunneling (LVS/TUN), and Linux Virtual Server via Direct Routing (LVS/DR). This research focuses on Linux Virtual Server via NAT (LVS/NAT). The main reason for choosing this type of load balancing technique is that in LVS/NAT the headers of the packets are overwritten by the director. The director masquerades as the real servers. This creates the illusion that the real server is being contacted directly by the clients. The director must be the real servers default gateway for an LVS-NAT configuration to work properly. As a result every response from a server is returned to the client via the director. Although this scheme is sub-optimal from performance perspective, it does have the benefit that the real server can run any operating system that supports TCP/IP. Another reason of choosing this technique over the other techniques is due to the advantage of any OS with TCP/IP support. Servers can use private IP addresses; only director needs public IP address [6].
3. MethodologyClient
(local or on internet)
Real
Server n
Director
Virtual IP
Director
Private IP
Real
Server 1
Figure 7 shows the typical Linux Virtual Server configuration for the http service.
Figure 7: Typical Linux Virtual Server configuration
From the above figure 7, the clients submits user request to the director server through public IP. But the director has another private IP. Therefore the client request forwarded through director to the real server.
Any setup procedure (including the configuration script) will assume that the user have already setup all IP's and network connections, apart from the Virtual IP and Director IP: i.e. setup Real Server IP1..n,. The configure script will setup the Virtual IP and the Director IP.
In a test setup, with all machines in the same computer using Vmware application, the user can make some virtual machines on a single computer. The user will need a minimum of 3 virtual machines (1 client, 1 director, 1 real server). If a user have 4 machines (i.e. 2 real servers), then user can see the load balancing (the connection from the client to the LVS being sent to one real server, then the other). The user can setup an LVS with 2 virtual machines (1 client, 1 director) using the features of LVS, with the director also functioning as a real server.
The user needs following components:
ClientAny machine, any OS, with a telnet client and/or an http client (e.g. Netscape, Lynx, Internet Explorer). In this setup WAPT is used for creating the client stress on the server.
Director:The director requires a machine running Pentium IV with 1GB RAM on 10Mpbs Ethernet with Linux Red Hat 9 with IPVS [3].
Real-server(s):The real-server requires a machine running Pentium IV with 1GB RAM on 10Mpbs Ethernet with Linux Red Hat 9 with Apache web server [5].
4. Performance AnalysisIn order to observe the performance of the system, a differentiative analysis was done between the analytical results and empirical results; it requires increase the load and utilization of user and server bandwidth, the scenarios need to be of different combination of client load and iterations.
For this each real server load with different user loads i-e 8, 16, 32 and 64 and different iterations i-e. 1,5,10,15,20,25 and 30 were performed. The total number of connections can be calculated using the following formula.
Considering the ideal scenario where load is perfectly balanced by handle director server. We assume that, we have number of client's m and number of iterations n. so the total number of served connection can be computed.
4.1 Served ResultLet n=8 and m=1, the above equation becomes, Served Connection = 36
4.1.1 Scenario 1This scenario contains 8 clients with different iterations, who are working on real servers 1, 2 and 4 respectively.
8 ClientsIter.1 Real Server(RS)2 Real Server(RS)4 Real Server(RS)Â Â 1RS2RS1RS2RS3RS4RSIBF* [] A* [] IBFAIBFAIBFAIBFAIBFAIBFA136
36
18
18
18
18
9
9
9
9
9
9
9
9
5180
180
90
90
90
90
45
45
45
45
45
45
45
45
10360
360
180
180
180
180
90
90
90
90
90
90
90
90
15540
540
270
240
270
240
135
135
135
135
135
135
135
135
20720
720
360
290
360
290
180
180
180
180
180
180
180
180
25900
900
450
398
450
398
225
225
225
225
225
225
225
225
301080
1080
540
440
540
440
270
270
270
270
270
270
270
270
Table 1:
Article name: High Availability Clustered Computing Using Lvs Nat Computer Science essay, research paper, dissertation