Clustering
Clustering is a common technique and is implemented by most, if not all, major Web service providers. It is also used by organizations that require a large number of servers or large server capabilities. Clustering aims at taking care of two problems: availability and capacity. It involves the bundling together of several resources, like servers, so that they appear as one entity. With this approach, there is no one single point of failure, because even if one or more nodes in a cluster fail, there are always others that are able to step in and take care of their load. Having bunched together so many resources also gives it the ability to take on much more difficult tasks. For example, any popular website serves tens of thousands of Web pages everyday. Having a cluster of servers is much more reliable (and sometimes cheaper) than having one machine take care of everything. This is also called network load balancing.
Clustering can also be implemented for other uses like data storage. Servers and RAID arrays can be combined to increase the computing power of the whole system. The cluster would appear to any user as one system with some extraordinary characteristics. This concept can also be applied within SAN (Storage Area Network).
There are several clustering solutions in the market. Most enterprise-level OSs support clustering and every major hardware provider (like IBM, Sun) provides clustering ability with its products. Opensource variants are also available in plenty.
Partitioning
While clustering can be good in the sense that it helps in the availability and capabilities of a system, there is one major disadvantage–they are hard to maintain because of the many components. Partitioning takes a very different approach, and is, in fact, quite the opposite of clustering in that we try to give just one system as much capability as possible. Actually, the concept goes beyond that and tries to split one system into many independent functional units.
Let’s take an example. An IBM zSeries mainframe is almost as close to computing nirvana as one can get. An immense machine with equally immense capabilities, it is so powerful that fully tapping its potential with just one application can be quite difficult. Hence, it makes sense to partition it into multiple virtual machines using IBM’s z/VM OS and then using those virtual machines for separate tasks. LPAR (Logical Partitioning) is the divisioning of the processors, memory and storage into multiple sets of resources so that each set of resources can be operated independently with its own OS instance and applications. Each partition can communicate with the other partitions as if the other partition is a separate machine. On big mainframes it is possible to make virtually (pun intended) hundreds of VMs. This way, multiple applications can be consolidated into one physical server box, which helps to centralize management, save space and potentially lower administrative and management costs.
Another advantage of partitioning a single server is that depending on work loads, you can change the resource allocation to the different partitions, thereby trying to achieve more optimal utilization of resources. So, if there is some work load say, payroll processing, that needs more resources (processing power, disk space, memory, etc) at a particular time, then those resources can be made available only at that time, and need not be made available always. At other times, the same resources can be allocated to other tasks.
Moreover, it isn’t just the big iron providers like IBM who can give you the benefits of partitioning. VMware, famous for its virtual machine software that can let you boot up a guest operating inside a host OS, has a product called GSX server that can implement partitioning on even small boxes. The GSX server ver 2.5 supports up to 64 GB host memory, 32 processors and up to 64 virtual machines. Not that it comes cheap, with price ranging from $3000 to $6000 depending on the features requested.
Anuj Jain