comp 243 Loading Balancing Web Proxy
 
Purpose

This page documents our "Loading Balancing Web Proxy" for the comp243 final project.
 

Project Title: Load Balancing Web Server
http://www.cs.unc.edu/~le/p243.html
by long and dorian

Description [top]

 


Our suggested distributed system is a web proxy load balancing server. Retrieving web content from the web is improved by caching web-pages closer to clients. Load balancing the web proxies has the advantage of scaling the system to more users. We do not expect to improve the performance of retrieving web content but hope to explore the distributed system concepts. In addition, we intend our system to work for organizations such as university departments or companies. 

In a more general context load balancing can be applied to managing limited resources such as printers or distributing computational intensive to appropriate workstations. Our choice of load balancing web proxies is to take advantage web software we have already written in comp 243. As a part of the project, we plan to implement a simplistic and alternative DNS mechanism to query and resolve the address of the proxy in a dynamic way. In our implementation, we will have a number of web proxies that cooperate with an alternative DNS server (ADNS server). The ADNS server communicates with the web proxies and knows their current workload. When receiving a DNS query for web proxy, it "directs" the clients to the proxy with the lowest load. In addition, it would be interesting to think of what environments the DNS server (or other Load balance server) would fail.

 
System overview [top]
The following diagram illustrates the system we hope to build. The area shaded in Carolina blue highlights the components provided by us; elements outside we would interface to.
 
 

The alternative DNS is the most central component. The alternative DNS will point the client request to the lowest loaded proxy. The proxy will retrieve the client's request when the client connects to it.
We are interested in making the alternative DNS fault tolerant as well as the web proxy caches. Using our DNS will only work with our web browser that accounts for the alternative DNS server switching IP addresses when it fails. Existing DNS server do not account for this, such as those used by the web proxies. We do not account for those failing. When a client is started, it sends a multicast message to a pre-defined multicast address to look for an ADNS server. The ADNS server will reply to this query and notify the client of its IP address. 


Novel Problems to Solve [top]

Our main interest is to design the protocol for the alternative DNS to communicate between the web browser on one side and the web proxies on the other side. The protocol must share the state of the web proxies so that the DNS server can redirect the web clients based on the load. The backup alternative DNS server should also maintain the state of the proxies.

In the case the alternative DNS server fails, we would want the backup server to take over and start a new back up server. When the web proxies lose the connection with the ADNS server, they will transmit a multicast message to query for the backup ADNS server at a pre-defined multicast address. If the web proxies do not find an ADNS server after a certain time interval. One of them should spawn an alternative DNS server. This is achieved by having the web proxies back off for a random period of time. The web proxy with the shortest backoff time will spawn the ADNS server. In order to avoid potential problems in dealing with multicast routing/forwarding across routers in colab, hosts for clients, web proxies, and ADNS servers should be in one broadcast domain (e.g., one LAN).

We hope to learn about the DNS protocol that we can implement between the client and alternative DNS server. It would be fun if we could get conventional browsers to use our client (unlikely).

If time permits we will implement a Java web-proxy which would allow us to run on different systems. Presently we plan to implement on Solaris, FreeBSD, and 
Linux. 

Professor Smith's suggestions [top]
  • To demonstrate the load balancing scheme: try to make SURGE query the ADNS server. By this way, we can emulate several clients. Some useful information for SURGE can be found here. The site for software download is here.
  • Set up a demo where the web proxies have some output to demonstrate their current workload (and thus show that our load balancing scheme really works). Set up a demo where the ADNS server is shut down and show that the back up server is started and takes over the primary server's task. 
  • If encouter problems with multicast, simply have a list in a config file to specify on which machines the backup ADNS server is to be started. 

 
 
Documentation topics [top]

The final project documentation needs to include the information given at: http://www.cs.unc.edu/~smithfd/243f00/Info-final.pdf

Here are some notes. Final written project report is due no later than 5:00PM on Monday, December 18, 2000. The following is a minimal list of topics (mini-outline) that you should cover in your report:

  • System services provided (what users can expect the system to do).
  • System structure (what processes are involved and how they are distributed over various processors). If there are clients and servers, explain how they are organized.
  • Availability and fault-tolerance goals for your system. State which failures are dealt with (and which are not). For each failure (including those you do not deal with), state how your system responds.
  • System state (both persistent and volatile state). For any parts of the state that is shared or replicated, state your consistency requirements for that state and how you maintain consistency.
  • Protocols used.
  • Important distributed system problems taken into consideration and decisions about how to deal with those problems.
Additional useful documentation for the future would ba about:
  • Writing concurrent servers. We have two versions single/multiple processes
  • Multicasting/ UDP
  • DNS protocol
  • System call to make new processes

Appendix A: Other projects and references [top]


 

 top * home * academics
dorian miller, 11/1/2000