[Beowulf] statless compute nodes

Joe Landman landman at scalableinformatics.com
Wed May 27 18:56:12 PDT 2015



On 05/27/2015 09:22 PM, Trevor Gale wrote:
> Hello all,
>
> I was wondering how stateless node fair with very memory intensive applications. Does it simply require you to have a large amount of RAM to house your file system and program data? or are there other limitations?

Warewulf has been out the longest of the stateless distributions. We had 
rolled our own a while before using it, and kept adding capability to ours.

Its generally not hard to pare down a stateless node to a few hundred MB 
(or less!).  Application handled via NFS, and strip your stateless 
system down to the bare minimum you need.  In fairly short order, you 
should be able to pxe boot a kernel with a bare minimal initramfs, and 
have it launch docker and docker like containers. This is the concept 
behind CoreOS, and many distributions are looking to move to this model.

We use a makefile to drive creation of our stateless systems (everything 
including the kitchen sink, and our entire stack), which hovers around 
4GB total.   Our original stateless systems were around 400MB or so, but 
I wanted a full development, IB, PFS, and MPI environment (not to 
mention other things).  I could easily make some of this stateful, but 
our application requires resiliency that can't exist in a stateful model 
(what if OS drives or the entire controller) suddenly went away, or the 
boot/management network was partitioned with an OS on NFS.

This is one of our Unison units right now

root at usn-01:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          8.0G  3.9G  4.2G  49% /
udev             10M     0   10M   0% /dev
...
tmpfs           1.0M     0  1.0M   0% /data
/dev/sda        8.8T  113G  8.7T   2% /data/1
/dev/sdb        8.8T  201G  8.6T   3% /data/2
/dev/sdc        8.8T   63G  8.7T   1% /data/3
/dev/sdd        8.8T  138G  8.6T   2% /data/4
fhgfs_nodev      70T  1.1T   69T   2% /mnt/unison2

with the "local" mounts being controlled by a distributed database.   
Think of it as a distributed cluster wide /etc/fstab. More relevant for 
a storage cluster/cloud than a compute cluster, but easily usable in 
this regard.

We handle all the rest of the configuration post-boot.   A little 
infrastructure work (bringing up interfaces), and then configuration 
work (driven by scripts and data pulled from a central repository, which 
is also distributable).

There are some oddities, not the least of which most distributions are 
decidedly not built for this.  But if you get them to a point where they 
think they have a  /dev/root and they mount it, life generally gets much 
easier rather quickly.

One of the other cool aspects of our mechanism is that we can pivot to a 
hybrid or NFS after fully booting.  And if the NFS pivot fails, we can 
fall back to our ramboot without a reboot.  Its a thing of beauty ... 
truly ...

FWIW: we use a debian base (and Ubuntu on occasion) these days, though 
we've used CentOS and RHEL in the past before it became harder to 
distribute.  Generally speaking we can boot anything (and I really mean 
*anything*: Any Linux, *BSD, Solaris, DOS, Windows, ... ) and control 
them in a similar manner (well, not DOS and Windows ... they are ... 
different ... but it is doable).

Warewulf has similar capabilities and is designed to be a cluster 
specific tool.  I think there are a few others (OneSIS, etc.) that come 
to mind that can do roughly similar things.  Maybe even xcat2 ... not 
sure, haven't looked at it in years.


-- 
Joseph Landman, Ph.D
Founder and CEO
Scalable Informatics, Inc.
e: landman at scalableinformatics.com
w: http://scalableinformatics.com
t: @scalableinfo
p: +1 734 786 8423 x121
c: +1 734 612 4615



More information about the Beowulf mailing list