: : : Never Say Never Again : : :

Entries categorized as ‘Linux Hardware’

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

Linux Disk Statistics Monitoring Tools

January 25, 2008 · Comments Off

  • vmstat — Used to Report virtual memory statistics

       vmstat –help For more informations.

  • iostat — Report Central Processing Unit (CPU) statistics and input/output statistics for devices and partitions.

        iostat –help For more informations.

  • htop   — interactive process viewer

      man top fore more informations.

  • tload  — graphic representation of system load average

tload  prints  a  graph of the current system load average to the specified                tty (or  the tty of the tload process if none is specified).

  • watch  – execute a program periodically, showing output fullscreen

watch runs command repeatedly, displaying its output (the first screenfull).                 This allows you  to  watch the program output change over time.  By                 default, the program is run every 2 seconds; use -n or –inter- val to                  specify a different interval.

Categories: Monitoring Tools

How to quickly bind a range of IPs in Linux

January 7, 2008 · Comments Off

Normally when you add a new IP to a network interface in a RedHat based system you create a file ifcfg-eth0:x in /etc/sysconfig/network-scripts/.

For example:

/etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
TYPE=Ethernet

Similar to the above example you can create several aliases. But what if you have to add a lot of IPs that are in a range like this? Let’s say that I want to add 100 IPs this way… this is possible, but not very effective, right? RedHat based systems offer a method to bind a range of IPs in a quick way allowing us to eliminate the need to create a lot of files and saving us time doing this.

Create a file /etc/sysconfig/network-scripts/ifcfg-eth0-range0 if this doesn’t exist, or just add to it if you already have it, the following lines:

/etc/sysconfig/network-scripts/ifcfg-eth0-range0
IPADDR_START=192.168.0.100
IPADDR_END=192.168.0.200
CLONENUM_START=0

where: IPADDR_START is the first IP and IPADDR_END is the last IP in the range. CLONENUM_START is the number that will be assigned to the first IP alias interface (eth0:0 in this example).

If you need to add more ranges of IPs then just use a different file for ex. ifcfg-eth0-range1, for each one of the ranges. You need to be careful and use the proper CLONENUM_START to not overwrite other aliases. Once you have configured the range/s of IPs you just need to restart the network service in order to activate it:

service network restart

Note: don’t use this method on a CPanel based system. Even though this will work fine, it is better to use CPanel/WHM in this case so CPanel can manage all the IPs properly.

Categories: Networking