A computer cluster is a group of tightly coupled computers that work together closely so that in many respects they can be viewed as though they are a single computer. The components of a cluster are commonly connected to each other through fast local area networks. Clusters are usually deployed to improve performance and/or availability over that provided by a single computer, while typically being much more cost-effective than single computers of comparable speed or availability.
High-availability (HA) clusters (also known as failover clusters) are implemented primarily for the purpose of improving the availability of services which the cluster provides. They operate by having redundant nodes, which are then used to provide service when system components fail. The most common size for an HA cluster is two nodes, which is the minimum requirement to provide redundancy. HA cluster implementations attempt to manage the redundancy inherent in a cluster to eliminate single points of failure. There are many commercial implementations of High-Availability clusters for various operating systems.
Load-balancing clusters operate by having all workload come through one or more load-balancing front ends, which then distribute it to a collection of back end servers. Although they are primarily implemented for improved performance, they commonly include high-availability features as well. Such a cluster of computers is sometimes referred to as a server farm. There are many commercial load balancers available for various operating systems.
MPI is a widely-available communications library that enables parallel programs to be written in C, Fortran, Python, OCaml, and many other programming languages. The GNU/Linux platform offers various cluster software, such as: Beowulf, Linux Virtual Server, Linux-HA, openMosix and OpenSSI.
Microsoft Windows Compute Cluster Server 2003 based on the Windows Server platform provides pieces for high performance computing like the job scheduler, MSMPI library and management tools.
A two-node cluster is the minimal High-Availability cluster that can be built. Should one node fail (for a hardware or software problem), the other must acquire the resources being previously managed by the failed node, in order to re-enable access to these resources: this process is known as failover. The following hardware configuration is recommended for a two-node cluster.
Required:
Two hosts, each with its own local storage device(s)
Shared storage, that can be accessed by each host (or node), such as a file server
Some method of interconnection that enables one node to see if the other is dead, and to help coordinate resource access. A serial or Ethernet crossover cable can be used for this purpose.
Optional but strongly recommended:
Three Uninterruptible Power Supplies, one for each node and one for the shared storage.
Redundant network connections (using dual NICs and dual switches with bonding or trunking software on the server)
Virtualization is a broad term that refers to the abstraction of computer resources. Platform virtualization is performed on a given hardware platform by "host" software (a control program), which creates a simulated computer environment (a virtual machine) for its "guest" software. The "guest" software, which is often itself a complete operating system, runs just as if it were installed on a stand-alone hardware platform. Typically, many such virtual machines are simulated on a given physical machine. For the "guest" system to function, the simulation must be robust enough to support all the guest system's external interfaces, which (depending on the type of virtualization) may include hardware drivers.
A hypervisor (virtual machine monitor) is a virtualization platform that allows multiple operating systems to run on a host computer at the same time. The term usually refers to an implementation using full virtualization. Native or full virtualization allows an unmodified "guest" OS (one designed for the same CPU) to be run in isolation. Typically, many instances can be run at once. Examples include VirtualBox, Virtual Iron, Virtual PC, Xen, VMware Workstation, VMware Server, QEMU and z/VM.
Hypervisors are often used by companies such as IBM, HP and others on mainframes and large servers. They are also increasingly being used by Internet hosting service companies to provide virtual dedicated servers. The primary benefits of server virtualization are consolidation, increased utilization, an ability to rapidly provision and start a virtual machine, and increased ability to dynamically respond to faults by re-booting a virtual machine or moving a virtual machine to different hardware. Another benefit is the ability to securely separate virtual operating systems, and the ability to support legacy software as well as new OS instances on the same computer. Hypervisor support for virtual machine live migration from one host to another allows workload balancing and the avoidance of downtime.
Virtualization may also be used on personal computers that run Linux but also have Windows installed and vice verse. Traditionally, such systems are used in a dual boot setup, but with hypervisors such as Xen it is possible to start Windows "in a window" from within Linux, effectively running applications from both systems at the same time.
Virtualization also has benefits when working on operating system development: running the new system as a guest avoids the need to reboot the computer whenever a bug is encountered. Such a "sandboxed" guest system is also useful in computer security research, in order to study the effects of some virus or worm without the possibility of compromising the host system. Finally, hardware appliance vendors may decide to ship their appliance running several guest systems, so as to be able to execute various pieces of software that require different operating systems.
Important examples of virtualization platforms includes:
VMware
VMware Workstation is proprietary software consisting of a virtual-machine suite for x86 and x86-64 computers. This software suite allows users to set up multiple x86 and x86-64 virtual computers and to use one or more of these virtual machines simultaneously with the hosting operating system. Each virtual machine instance can execute its own guest operating system, such as (but not limited to) Windows, Linux, and BSD variants.
Xen
Xen is a free virtual machine monitor for IA-32, x86-64, IA-64 and PowerPC architectures. Modified versions of Linux and NetBSD can be used as hosts. Several modified Unix-like operating systems may be employed as guest systems; on certain hardware, as of Xen version 3.0, unmodified versions of Microsoft Windows and other proprietary operating systems can also be used as guests.