Select language:
+1 917 847 8801
Projects

Cluster computing and load balancing

 
August 1, 2008

The company developed software to be used with a computer cluster, involving a series of computers all controlled and operated by a single piece of software. The computers in the cluster do not function as independent devices, but rather as server nodes, and in some cases even the operating system for all server nodes can be located in a single piece of hardware from which all devices are run. The utilization of a cluster is intended to increase performance, load and availability over the equivalent power or initial spend of the equivalent number of separate computers.

 

Clusters can run a range of purpose-built software, through a software layer which treats the nodes as component parts in sequence, combining to form a supercomputer which runs as a seamless unit made up of the individual nodes. Clusters can be adjusted for different configurations based on the required operation and performance level.

 

Load balancing clusters are augmented clusters with an added functionality to distribute tasks evenly across nodes, rather than rely on one node which would normally be able to carry out a low-load operation independently. The workload is shared, with an even number of tasks being set for each node. This optimization of resources allows for a much faster processing speed and is therefore a more efficient, and potentially cheaper use of resources. There are different algorithms available for distributing tasks between nodes, with a popular method being the round-robin scheduling system, apportioning time slots to nodes without set priority levels. Load balancing increases reliability, availability and significantly reduces the chance of overloading a particular node in the cluster.

 

Server cluster for video conferences

  
Client: Engineering company
Description:

Development of a server cluster, which acts as a key component of a video conferencing system, allowing for simultaneous discussion of up to 16 participants. A unique ID code is given for each meeting, allowing participants able to gain access, either by clicking a link with the ID code or manually by visiting the video conferencing system's website and entering the code. The conferences can also be accessed using a VoIP phone, by entering the ID code, user number and port number. The concept of the software does not rely on an address book, but rather one-use, immediately accessible codes, ideal for business conversations as well as support link-ups with technical support staff, for which address book-style contacts are not necessary. A personal account, accessible through a browser, stores information on previous calls. The server cluster provides automatic client updates for all registered users, stores users' personal and server information even in offline mode, offers integration with standard payment systems, manages virtual servers with support service, and supports file exchange using popular cloud services such as Dropbox and Google Drive.

 

A series of virtual machines, running on Cron, work in effective standby mode while the virtual conference rooms are not being used. Ten minutes before a conference is set to begin, the state of one of these conference rooms on standby changes, in accordance with the parameters set for the conference. The amount of available space allocated for the conference is set at an upper limit of 2GB, but must be increased if the conference is set to be recorded. The disk space must be allocated one minute before the beginning of the conference. The virtual machine has three states: standby mode when waiting for a conference to begin, conference mode and a third state whereby a conference which has just concluded is saved and uploaded. The state reverts on confirmation of successful processing of the file.

Technologies: Linux, Python, Django, Nginx, uWSGI.

 

Server cluster for image rasterizing

 

Server cluster for image rasterizing

  
Client: Engineering company
Description: Development of a cluster of servers for distributing the load on a document depository central server. The distributing node receives a query from client applications and sends it to a less loaded operational server. Production nodes perform functions, which require significant processing power resources: image processing, rasterization, database queries. The finished results are sent to the client. When booted, active servers are automatically registered at the distributor. Processor usage and the number of active sessions are tracked to evaluate the production node load coefficient. Different servers may have different protocol versions, which are compared to the client’s version. Queries are only sent to a compatible server.
Technologies: C++, Linux, Qt, SQL, TCP/IP, Windows.