Open Source Distributed Shell Tools? 31
ColonelForbin74 asks: "While some may assume that most larger server clusters run advanced / custom software(i.e. Beowulf, cfengine, OSCAR), many of those stuck in the not-research-this-site-runs-production world know this simply isn't the case. Many people like myself are working with medium-to-large scale clusters with little help other than shell for() loops and some SSH trusted keys. What application-level tools are out there that might help SysAdmin / AppSupport types like myself run commands across a given cluster, push files out, etc? In my desperation to have some sort of tool in my toolbox, I've actually created one. However, I have a hard time believing this is the best thing out there, and would appreciate all the ideas and links I can get!"
Try this for a start (Score:5, Informative)
The bitcluster tools are useful (Score:5, Informative)
http://www.bitmover.com/bitcluster/ [bitmover.com]
Re:The bitcluster tools are useful (Score:2)
Whatever happened to... (Score:4, Informative)
It was a bit unstable, but that was almost a year ago. Give it a try.
Re:Whatever happened to... (Score:1)
How about pdsh? (Score:4, Informative)
Re:How about pdsh? (Score:1)
herdtools (Score:4, Informative)
/joeyo
heh... funny you should mention this.... (Score:1, Funny)
We needed some machines for running stress testing against our network servers, but we didn't have enough horse power to run a pure linux based clustering/distributed stress client.
I looked around abit, like you, and found there wasn't much.
Because of this I have written some hackish python code that basicly creates a cross platform distributed and self-updating cluster.
We use it to run our cross platform stress test
Re:heh... funny you should mention this.... (Score:3, Funny)
I don't know if you knew ab
Re:heh... funny you should mention this.... (Score:3, Funny)
Re:Distribulator (Score:2)
How is the parent informative, it's the same link the submitter mentioned.
tools I've used in the past... (Score:2)
When I had a set of (permanently running...) Unix workstations last, I used sh for-loops and ssh to run commands.
During another cluster project [feyrer.de] I was happy to use NFS to share files, and used rsh over ssh as it was ways faster.
Oh, and if you ever need to render mpegs from jpegs, check out the UCB's excellent "mpeg_encode [berkeley.edu]", which does all the load balancing on a
Rocks Cluster Distribution (Score:3, Informative)
Re:Rocks Cluster Distribution (Score:2, Informative)
It's called "cluster-fork".
For example:
Re:Rocks Cluster Distribution (Score:1)
Roll-your-own works fine (Score:2)
There's really not all that much to it... bundling some scripting in the language of your choice around parallel ssh session is a pretty decent solution that most people seem to arrive at.
Tivoli! (Score:1, Funny)
radmind (Score:3, Informative)
SUN's grid engine (Score:4, Informative)
http://wwws.sun.com/software/gridware/sge_get.h
grid engines 'tend' to be more useful as they can balance the load better to non-dedicated hosts. Just my view, but saves building a dedicated cluster with all these 2ghz pentiums on the desktop..(assuming you have linux on the desktop of course)
--
Not quite what you want, but... (Score:3, Informative)
We created a "load balancing" parallel SSH tool. (Score:5, Interesting)
I can share the basics of it here though, which should enable somebody else to easily build their own. On a day to day basis we needed to be able to run commands on 10,000+ Solaris and Linux boxes, and wanted to use SSH key authentication, but not keys with a null passphrase (as if the private key was stolen, major security implications present themselves
The solution instead is to use MULTIPLE ssh-agents, and load balance between them. We wrote a tool that will prompt for our key passphrase and then load say 100 ssh-agents with that key loaded. When it starts the agents it records the variables SSH_AUTH_SOCK and SSH_AGENT_PID for each agent in a single file. We then have shell scripts wrapped around ssh commands that just randomly pick an agent to connect to, effectively load balancing.
We run this whole thing on an OpenMosix cluster, which allows the ssh-agents and ssh processes to migrate across the machines once they start to use too much CPU time on their current node. We've found that Linux boxes seem to be much faster for SSH operations than Solaris (sparc) boxes, BTW.
We have also written a parallel ssh tool that works similarly to others discussed here (and others NOT discussed here, like Ed Hill's clsh which in a previous life I used extensively), except our tool has a couple of other major features which (IMHO) are required in an enterprise environment. The biggest thing that we've found is that when working on boxes in the far reaches of the world, we cannot assume that any common group of NFS mounts will exist, or work properly when we need them to. If you cannot be sure what remote mounts are available, how can you run scripts on the remote box? This prompted us to make our program have the ability to both run perl code directly fed to it, as well as (basically) remotely deliver scripts for running and delete them afterwards. So if we've written an administrative script called foo.sh, our tool will basically pipe the script across a SSH session to the remote end and run it, usually never having to touch the remote disk at all. This is VERY useful because when talking about 10k+ boxes, many of which are desktops, you can never be sure which partitions will be full.
Using our parallel ssh tool, along with the ssh-agent load balancing and a 3 node OpenMosix cluster we've been able to run 1000 outgoing ssh sessions without issues. This means if you want to change root passwords on 10k boxes it only takes slightly longer than changing passwords on 10 boxes. A real time saver, to say the least
Comments anyone?
BTW, is anybody using any hacks of OpenSSH to work similarly to sudo for giving out root access?
ghosts (Score:2, Informative)
gsh somemachines somecommand
or
gcp somefile somemachines:/etc/newfile
worked great, last time I had to admin a large network (about 5 years ago
http://outflux.net/unix/software/gsh/ seems to be an updating of this tool.
pconsole and DSH (Score:1)
DSH is nice for relatively small things that need to get run everywhere, and has an interactive mode that works fairly well. It works from any command line.
Pconsole on the other hand requires X, and creates a seperate terminal window for every host you are connecting to. There is a small 'command' window that echos everything you type to all of the other terminals under it's control. If you hav