[ Download ] [ Requirements ] [ Docs ] [ News ] [ Contact ]
McFeely is a program that makes it possible to run multiple programs, in a specified order, on multiple hosts. It was created to solve the problem of automatically managing users at an ISP where the users have resources like home directories on multiple machines. For example, when a user is created, McFeely automatically creates their home directories on the shell, web and mail servers. If one of those machines is down, McFeely keeps trying until it is up. If there is a problem, a sysadmin is notified. Some examples will explain better.
It is written in Perl and C and works on Red Hat Linux. It probably works elsewhere. If you try on another setup, let us know how it goes.
See the distribution directory for files.
If you use this software the authors would be pleased to hear about it. A mailing list is available for discussion of the software including further development, configuration questions and "whoa there Nellie, this thing don't work at'all!" Send an empty message to mcfeely-l-subscribe@systhug.com to subscribe.
Please read the HOWTO doc before installing. It explains the requirements in more detail.
GNU Make is necessary to build McFeely from sources. The Makefile is very GNU-ish and doesn't always build with non-GNU makes.
McFeely requires libknetstring. Source and binary RPMs as well as a tarball are also in the distribution directory.
You will also need a recent version of the perl IO module that supports the blocking() method. IO 1.20 works and is available from CPAN.
There is a listener that runs on the mcfeely-client called mcfeely-ttpd (part of the distribution). It may be run out of inetd, but if you prefer it works well with tcpserver. You can get tcpserver as part of the ucspi-tcp package. RPMs are available.
At Kiva Networking, where McFeely was first put together, the communication between the mcfeely server and remote mcfeely clients is done through ssh tunnels. This is not required, but is probably a good idea if you are going to be using mcfeely on an open network. If you have questions on how to do this, please subscribe to the mailing list and ask, that will help us to create good documents.
Here are some preliminary documents that describe McFeely. Obviously more is needed. Any questions or suggestions on improvement will be eagerly accepted.
2000.0822: New release: 3.43. Bug fix. If a child of mcfeely-spawn exits without a status code that can sometimes be reported to mcfeely-manage as task success. mcfeely-spawn's reaper() function has been adjusted to explicitly fail a task in this situation.
2000.0805: New release: 3.42. Expands the signal handling implemented in 3.41 to handle more signals, just to be sure.
2000.0803: New release: 3.41. Another development release. This one implements a SIGTERM handler in mcfeely-manage to ensure that if mcfeely-spawn is in the process of handling a bunch of tasks, and the systems receives a request to shut down, the results of those tasks are returned to mcfeely-manage before it exits. This helps to ensure that the data in the queue is correct. Syslogging is improved by using a new program, mcfeely-logger, to collect output. A logrotate.d file is added as well, to manage the logfile.
2000.0727: New release: 3.38. This is a development release which exposes some changes in the packaging and instalation from rpm. If you install the rpms on a redhat 6.x box, the mcfeely server logs to /var/log/mcfeely/mcfeely/log via syslog and the necessary changes to inetd.conf and services happen, and an initscript is installed. This makes installation much easier. The documentation has been further updated, with some man pages and POD added.
2000.0719: New release: 3.37. mcfeely-ttpd has been changed to do it's logging via syslog. Old versions used stderr but that didn't work with inetd, but taking out stderr limited the logging information. Now by going through syslog, more information is avaialable. Further documentation updates.
2000.0718: New release, 3.35. Fixes a bug in mcfeely-queue and McFeely::Job which was preventing the injection of jobs with very large numbers of tasks. Fixed a problem that was preventing mcfeely-ttpd from being run out inetd, so now mcfeely is considerably more easy to run in standard installations. Consolidated some code to make debugging changes a bit easier. Updated the HOWTO documentation.
2000.0710: New release, 3.31. Some bug fixes in mcfeely-spawn to better deal with unexpected returns from mcfeely-ttpd and more serious throttling so that task injection is slowed down when we are receiving a high number of tasks. Some error trapping in read_results. mcfeely-ttpd now sends both STDOUT and STDERR from comms back to mcfeely-ttpc so that untrapped errors will have a little more data.
2000.0705: The code changes hinted at below on 0630 have been merged into the main code and a new release has been made. The new release includes several serious bug fixes and the addition of a throttling mechanism that can slow mcfeely down. Under high load situations it can run out of files and then run amok; this change helps to prevent that while still maintaining good performance. Announced on Freshmeat, etc.
2000.0630: Some updates to the web page to try and provide some better information.
2000.0630: Progress has been made on integrating the Spawner and Select features into the main body of the McFeely code. In the process some bugs have been found and some code cleanup done. This new version will be released in the next couple of days.