Server Clustering
By Erik Rodriguez
This article provides information about server clustering. Clustering is used to ensure uptime, enhance performance, and process large numbers of requests. See the following for types of server clustering.
What is clustering?
Clustering is a way of combining multiple servers to perform a common task. There are many different types of clusters used, for various purposes. The concept has become increasingly popular with large traffic websites and distributed computing projects. Server clusters can be commonly referred to as "server farms." It is also possible to cluster other devices such as firewalls or VPN appliances.
Cluster requirements
There are many reasons to use a cluster. However, before we cover that, let's discuss some dollar figures. The costs associated with building a cluster of servers can vary depending on how extensive the project. Listed below are the main factors that affect the price of a cluster:
- Type of hardware
- Software
- Environment
- Architecture
The type of hardware will obviously affect the cost. High-end servers with multi-core CPUs and loads of RAM are not cheap. Especially using the latest and greatest multi-core CPUs with maximum RAM configuration. At the time of this article's revision, Dell was offering the PowerEdge C1100. The C1100 is a 1U box with (2) 5500/5600 Xeons and a maximum RAM configuration of 144GB. WOW! Dell's site did not have a price for these and required customers to call for a price. I could not find any grey market or ebay models either. Let's ballpark these guys at $15,000 each. A 4 server cluster would run you $60,000 in server hardware alone. Of course you could always purchase cheaper servers and increase your quantity. However, by doing so, you increase the amount of power and cooling needed which will cost more money to operate in the long run. I chose an standard x86-based (Xeon CPU) server for an example. It is hard to find anything else in production these days as the x86 CPUs are very cheap and powerful. In the late 1990s and early 2000s, PowerPC and SPARC processors were widely used in clusters. SPRAC processors commonly found in Sun Microsystems hardware used the RISC instruction set which was very efficient for number crunching. These non-intel based chips were usually sold in very high-end and generally non-consumer rated equipment. They were commonly found in Universities and other government operated institutions.
Software can cost you nothing or everything. Operating systems such as Microsoft Windows will probably require an enterprise edition or high-performance computing edition to accommodate all the RAM or CPU cores. Linux is generally free unless you require something like Red Hat Enterprise Linux. Also, depending on the function of the server cluster, a 3rd party software may be required. As mentioned before Microsoft does make a HPC edition. If Linux is the OS of choice, a PAE kernel may need to be used depending on the CPU type and amount of RAM.
Environments for such clusters are often overlooked. As I mentioned earlier, the power and heat used can quickly add up. While today's servers are generally becoming more power efficient, everything is relative. Nobody expects to get 40 MPG from a 525 HP SL63 AMG Mercedes-Benz. Running (4) Poweredge C1100 loaded to their gills will probably consume ~12 amps of AC power @ 120 VAC. Figure the load generated by clustering them and they probably won't even make it on a 15 amp circuit. The heat generated by these servers is also nothing to overlook. Any production clusters in use for research or other reasons undoubtedly operate in a data center environment.
The architecture I am referring to is how the cluster is designed to operate and communicate internally. Due to the massive hardware capabilities, servers is a clustered environment also need to communicate with each other efficiently. Some clusters may be rendering images, writing data, or processing requests from the Internet. Slow communication internally by the cluster servers can decrease the entire performance of the cluster. Network aspects such as a types/speed of switches used and network cards are important. Some applications may require the use of a TCP offload engine in order to perform effectively. As the number of servers clustered increases, the network medium also becomes an increasing problem. I have seen clusters operating over standard Gigabit Ethernet. I have also seen high performance cluster using inifiband for internal communication. Inifiband switches and the host cards are outragously expensive. Even switches with 10 Gbps ports are not cheap. Bottom line, to build a kick-ass cluster, you need some serious cash.
Advantages of using a cluster
Obviously, there are many advantages of using clusters or they would not exist. While the negative side of would be the cost and expertise of operating the cluster, the list below explains the benefits of a cluster:
- Speed
- Performance
- Power
- Efficiency
Speed is the most obvious. By configuring multiple servers in a cluster, they can collectively operate as a single machine. Meaning, 4 servers will do the same function as a single. By leveraging the extra RAM and CPU cores of the additional 3 servers, you have access to resources that would otherwise be impossible to use with a single server. These extra resources allow clusters to perform functions many times faster than a traditional single server configuration.
Performance is gained because a very fast cluster of servers can do the same work faster. By performing the same task(s) as a single server, only faster, performance is achieved. Depending on the configuration, certain servers in a cluster can be assigned dedicated roles. This effeciency allows the cluster to effectively "multi-task" by offloading certain portions of the job to other members of the cluster instead of spreading all portions across all servers.
Power is achieved because a cluster has the RAM to open extremely large files. Some large files used in computations may exceed the amount of physical memory from a single server. This is where clusters and their advanced software really shine. Using the cluster resources effectively, large files can be processed with ease. This is especially helpful with graphic rendering and grid computing.
Efficiency is a biproduct of the 3 factors mentioned above. By leveraging the speed, performance, and power clusters can perform jobs efficiently and also effectively. The software which operates these clusters is very focused on getting every FLOP from the hardware. Therefore, any software aimed towards clustering is carefully designed to perform at high standards. A good example is a load balancing web cluster. The cluster master is configured to monitor the load across every memeber of the cluster. As new traffic requests come in, the master makes an intelligent decision based on the load of all servers in the cluster. The decision is based on all incoming and outgoing data from each member and in the name of efficiency directs requests to the "least busy" server.
Contact Us
NOTE: this form DOES NOT e-mail this article, it sends feedback to the author.
|
|