Bega High School Work Experience – A Load Balanced Web Server

This week we have been given the opportunity to conduct our work placement for I.T VET at 2pi Software. Within these days we have been able to set up a small web server running an Odroid as the master system, which had a load balancer installed, using Nginx, to evenly spread the traffic from incoming requests.

A load balancer is a device that evenly distributes incoming traffic between nodes. This increases the amount of requests and will increase the reliability of the server, which is critical for a company’s efficiency for their online presence. A company that uses load balancing is Google, which would have a massive load of requests being sent to the servers, which will then have to be evenly distributed across all their servers.

The requests were then distributed across 3 different Raspberry Pi systems, low cost, high availability micro computers that allow users to achieve goals such as learning basic coding to more experienced projects like creating a mini arcade machine.

These were then benchmarked to see how much stress the server will be able to take when under a heavy load of requests. We recorded our results and then compared the data to make sure the nodes were running at the same efficiency.

Also during the week we were given the task of making a MySQL database which was hosted on the Odroid to observe how the web server could handle the load of running a MySQL database with PHP.

Setup

Our setup looks like this:

Our load balancing system

Odroid on top of the switch

The 3 Raspberry Pi’s

Results

We ran multiple tests using different types of media, these include:

  • Static HTML
  • Static HTML with an image
  • PHP
  • PHP and MySQL

The results we collected are below, where data presented ranges from the 50th to 100th percentile. The number on the right of the percentage indicates the response time in milliseconds.

Odroid w/PHP & MySQL (3 nodes)

Odroid w/ static HTML

Odroid w/ PHP

Odroid w/ image HTML

50%   1510

  66%   1546

  75%   1563

  80%   1573

  90%   1597

  95%   1619

  98%   2139

  99%   2387

100%   2690 (longest request)

50%    211

  66%    245

  75%    301

  80%    322

  90%    358

  95%    394

  98%    453

  99%    528

100%   1493 (longest

  50%    962

  66%   1031

  75%   1069

  80%   1092

  90%   1150

  95%   1193

  98%   1235

  99%   1306

100%   2288 (longest request)

50%    214

  66%    239

  75%    275

  80%    304

  90%    339

  95%    403

  98%    651

  99%   1201

100%   1273 (longest request)

 

These results show that using more complex web tools will slow down the web server significantly. This is shown in the odroid with PHP & mySQL  which has results that are double of the static HTML.