: : : Never Say Never Again : : :

Entries categorized as ‘Clustering’

Clustering

February 13, 2008 · Comments Off

Linux has a large selection of clustering systems available for different uses and needs. That doesn’t make it any easier for those trying to figure out what clustering system they should use.

Clustering always involves hardware connections between machines. Clustering alway refers to two or more machines cooperating in some contex t.

The first type typically involves developing parallel programming applications for a cluster to solve complex scientific problems. That is the essence of parallel computing, although it does not use specialized parallel supercomputers that internally consist of between tens and tens of thousands of separate processors. Instead, it uses commodity systems such as a group of single- or dual-processor PCs linked via high-speed connections and communicating over a common messaging layer to run those parallel applications. Thus, every so often, you hear about another cheap Linux supercomputer coming out. But that is actually a cluster of computers with the equivalent processing power of a real supercomputer, and it usually runs over $100,000 for a decent cluster configuration. That may seem high for the average person but is still cheap compared to a multimillion-dollar specialized supercomputer.

Beowulf

When thinking about clustering, the first word that comes to most people’s mind is Beowulf. Beowulf is not a single program, or set of programs, rather it is a set of tools and a method for connecting a set of computers together to act as a large parallel computer environment. Included in those tools are things like Message Passing Interface (MPI), Parallel Virtual Machine (PVM) and other software that allows multiple ethernet cards to be bonded together for higher performance. There are Distributed Inter-process Communication Services (DIPC) which allow access to processes running anywhere on the cluster, from any of the nodes.

Hardware

Clustering typically requires some kind of communication between the nodes of a cluster. At the simplest level this is nothing more than eth ernet cards and a hub. At the high end of clustering are special interface cards for communication between nodes in a High Performance Cluster.

Myricom

Myricom offers cards and switches that interconnect at speeds of up to 1.28 Gbps in each direction. Myricom uses a switched network, either copper or fiber to communicate between nodes. In very large clusters the switching can become cumbersome, and latencies increase as more switches are added.

IEEE SCI

The IEEE standard SCI has even lower latencies (under 2.5 microseconds), and it can run at 400 MB per second (3.2 Gbps) in each direction. S CI is a ring-topology-based networking system unlike the star topology of Ethernet. That makes it faster to communicate between the nodes on a larger scale. Even more useful is a torus topology network, with many rings between the nodes. A two-dimensional torus can be pictured as a grid of n by m nodes with a ring network at every row and every column. A three-dimensional torus is similar, with a 3D cubic grid of nodes that also has rings at every level. Supercomputing massively parallel systems use those to provide the relatively quickest path for communications be tween hundreds or thousands of nodes.

The limiting factor in most of those systems is not the operating system or the network interfaces but the server’s internal PCI bus system. Basic 32-bit, 33-MHz PCI common in nearly all desktop PCs and most low-end servers offers only 133 MB per second (1 Gbps), stunting the power of those cards. Some costly high-end servers have 64-bit, 66-MHz cards that run at four times that speed. Unfortunately, the paradox arises that more organizations use the systems on the low end, and thus most vendors end up building and selling more of the low-end PCI cards.

Load Balancing Clusters

Load-balancing clusters provide a more practical system for business needs. As the name implies, that system entails sharing the processing load as evenly as possible across a cluster of computers. That load could be in the form of an application processing load or a network traffic load that needs to be balanced. Such a system is perfectly suited for large numbers of users running the same set of applications. Each node can handle part of that load, and the load can be dynamically assigned between the nodes to balance it out. The same holds for network traffic.Often network server applications take in too much incoming traffic to be able to process it quickly enough and thus the traffic needs to be sent to network server applications running on other nodes. That can also be optimized according to the different resources available on each node or the particular environment of the network.

Load balancing clusters distribute network or compute processing load across multiple nodes. The differentiating factor in that case is the lack of a single parallel program that runs across those nodes. Each node server in that type of cluster, in most cases, is an independent system running separate software. However, there is a common relationship between the nodes either in the form of direct communications between the node or through a central load-balancing server that controls each node’s load. Usually, a specific algorithm is used to distribute that load.

Network load balancing is the process of distributing network traffic across various machines in the cluster, to maximize throughput and response. Network load balancing requires special software capable of viewing the network traffic and distributing it across multiple servers. There are many implementations, including commercial software for doing clusters of Web Servers, FTP Servers and Mail Servers.

MOSIX

Mosix uses a modified kernel to create a process load balanced cluster. Servers and workstations can join and leave the cluster increasing or decreasing the power of the cluster. Processes can transparently migrate from system, without user intervention.

Mosix is completely transparent at the application level. There is no need to recompile or relink with new libraries, everything occurs at the kernel level. Each node that will participate in the cluster must have use the same version of the kernel, to participate in the cluster. Machines can be added to the cluster during off hours to increase the overall performance of the cluster, and leave when they are needed for othe r important work.

Mosix has wide ranging applications in the scientific and mathematical computation area. Unused cpu cycles can be used to increase processing speed. The cluster is transparent to the users, with each workstation or server appearing to be a stand alone machine.

High Availability Clusters

High-availability clusters exist to keep the overall services of the cluster available as much as possible.to take into account the fallibility of computing hardware and software.

High Availability Clusters provide redundant services across multiple systems, to overcome loss of service due to hardware failure. Should a node fail, another picks up the service, keeping the system environment consistent from the user’s point of view.

Software and data are replicated across the servers in the cluster, with only a temporary, slight loss of performance when a node fails. The switch-over takes only seconds or less, so the client never really experiences any loss of service. This kind of redundancy requires special cluster aware software that is available on Linux today.

HA clusters may provide load balancing, but most simply keep the redundant server idling, until needed. The backup server keeps a mirror of the software and monitors the health of the running server. When failure occurs in the main server, the backup server springs into action, taking over for the failed server. A heartbeat between the running and backup server is used to monitor the health of the running server. Typically, once the failed server is repaired, and brought back on-line it becomes the backup server to the running server.

With each of those three basic types of clusters, hybrids and interbreeding often occur between them. So you can find a high-availability cluster that can also load-balance users across its nodes, while still attempting to maintain a degree of high-availability. Similarly, you can find a parallel cluster that can also perform load balancing between the nodes separately from what was programmed into the application. Although the clustering system itself is independent of what software or hardware is in use, hardware connections play a pivotal role when it comes t o running the system efficiently.

Categories: Clustering