X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f2f4727cf8a91e363c2a1c85e98fcdd6419abdb5..0af7e7b2ab33ad8766c4c0b537070dfddbadf37c:/doc/install/install-compute-node.html.textile.liquid?ds=sidebyside diff --git a/doc/install/install-compute-node.html.textile.liquid b/doc/install/install-compute-node.html.textile.liquid index f6ad379023..f55bceb561 100644 --- a/doc/install/install-compute-node.html.textile.liquid +++ b/doc/install/install-compute-node.html.textile.liquid @@ -8,21 +8,29 @@ h2. Install dependencies First, "add the appropriate package repository for your distribution":{{ site.baseurl }}/install/install-manual-prerequisites.html#repos. -On Debian-based systems: +{% include 'note_python_sc' %} + +On CentOS 6 and RHEL 6: -
~$ sudo apt-get install perl python-virtualenv fuse python-arvados-python-client python-arvados-fuse crunchstat iptables ca-certificates
+
~$ sudo yum install perl python27-python-virtualenv fuse python27-python-arvados-python-client python27-python-arvados-fuse crunchrunner crunchstat arvados-docker-cleaner iptables ca-certificates
 
-On Red Hat-based systems: +On other Red Hat-based systems: -
~$ sudo yum install perl python27-python-virtualenv fuse python27-python-arvados-python-client python27-python-arvados-fuse crunchstat iptables ca-certificates
+
~$ echo 'exclude=python2-llfuse' | sudo tee -a /etc/yum.conf
+~$ sudo yum install perl python-virtualenv fuse python-arvados-python-client python-arvados-fuse crunchrunner crunchstat arvados-docker-cleaner iptables ca-certificates
 
-{% include 'note_python27_sc' %} +On Debian-based systems: + + +
~$ sudo apt-get install perl python-virtualenv fuse python-arvados-python-client python-arvados-fuse crunchrunner crunchstat arvados-docker-cleaner iptables ca-certificates
+
+
h2. Install Docker @@ -50,11 +58,11 @@ Your containers must be able to resolve the hostname in the ARVADOS_API_HOST env h2. Set up SLURM -Install SLURM following "the same process you used to install the Crunch dispatcher":{{ site.baseurl }}/install/install-crunch-dispatch.html#slurm. +Install SLURM following "the same process you used to install the Crunch dispatcher":install-crunch-dispatch.html#slurm. h2. Copy configuration files from the dispatcher (API server) -The @/etc/slurm-llnl/slurm.conf@ and @/etc/munge/munge.key@ files need to be identicaly across the dispatcher and all compute nodes. Copy the files you created in the "Install the Crunch dispatcher":{{site.baseurl}} step to this compute node. +The @slurm.conf@ and @/etc/munge/munge.key@ files need to be identical across the dispatcher and all compute nodes. Copy the files you created in the "Install the Crunch dispatcher":install-crunch-dispatch.html step to this compute node. h2. Configure FUSE @@ -74,7 +82,47 @@ user_allow_other
-h2. Crunch user account +h2. Configure the Docker cleaner + +The arvados-docker-cleaner program removes least recently used docker images as needed to keep disk usage below a configured limit. + +{% include 'notebox_begin' %} +This also removes all containers as soon as they exit, as if they were run with @docker run --rm@. If you need to debug or inspect containers after they stop, temporarily stop arvados-docker-cleaner or run it with @--remove-stopped-containers never@. +{% include 'notebox_end' %} + +Install runit to supervise the Docker cleaner daemon. {% include 'install_runit' %} + +Configure runit to run the image cleaner using a suitable quota for your compute nodes and workload: + + +
~$ sudo mkdir -p /etc/sv
+~$ cd /etc/sv
+/etc/sv$ sudo mkdir arvados-docker-cleaner; cd arvados-docker-cleaner
+/etc/sv/arvados-docker-cleaner$ sudo mkdir log log/main
+/etc/sv/arvados-docker-cleaner$ sudo sh -c 'cat >log/run' <<'EOF'
+#!/bin/sh
+exec svlogd -tt main
+EOF
+/etc/sv/arvados-docker-cleaner$ sudo sh -c 'cat >run' <<'EOF'
+#!/bin/sh
+if [ -d /opt/rh/python33 ]; then
+  source scl_source enable python33
+fi
+exec python3 -m arvados_docker.cleaner --quota 50G
+EOF
+/etc/sv/arvados-docker-cleaner$ sudo chmod +x run log/run
+/etc/sv/arvados-docker-cleaner$ sudo ln -s "$(pwd)" /etc/service/
+
+
+ +If you are using a different daemon supervisor, or if you want to test the daemon in a terminal window, an equivalent shell command to run arvados-docker-cleaner is: + + +
python3 -m arvados_docker.cleaner --quota 50G
+
+
+ +h2. Add a Crunch user account Create a Crunch user account, and add it to the @fuse@ and @docker@ groups so it can use those tools: @@ -108,7 +156,9 @@ set -e if ! test -f /root/node.json ; then python - <<EOF import arvados, json, socket -node = arvados.api('v1').nodes().create(body={'hostname': socket.gethostname()}).execute() +fqdn = socket.getfqdn() +hostname, _, domain = fqdn.partition('.') +node = arvados.api('v1').nodes().create(body={'hostname': hostname, 'domain': domain}).execute() with open('/root/node.json', 'w') as node_file: json.dump(node, node_file, indent=2) EOF @@ -121,10 +171,10 @@ UUID=`grep \"uuid\" /root/node.json |cut -f4 -d\"` PING_SECRET=`grep \"ping_secret\" /root/node.json |cut -f4 -d\"` if ! test -f /etc/cron.d/node_ping ; then - echo "*/5 * * * * root /usr/bin/curl -k -d ping_secret=$PING_SECRET https://api/arvados/v1/nodes/$UUID/ping" > /etc/cron.d/node_ping + echo "*/5 * * * * root /usr/bin/curl -k -d ping_secret=$PING_SECRET https://$ARVADOS_API_HOST/arvados/v1/nodes/$UUID/ping" > /etc/cron.d/node_ping fi -/usr/bin/curl -k -d ping_secret=$PING_SECRET https://api/arvados/v1/nodes/$UUID/ping?ping_secret=$PING_SECRET +/usr/bin/curl -k -d ping_secret=$PING_SECRET https://$ARVADOS_API_HOST/arvados/v1/nodes/$UUID/ping?ping_secret=$PING_SECRET
@@ -138,4 +188,3 @@ And remove your token from the environment: -