Install the controller

The arvados-controller service must be installed on your API server node.

On Debian-based systems:

~$ sudo apt-get install arvados-controller

On Red Hat-based systems:

~$ sudo yum install arvados-controller

Verify the arvados-controller program is functional:

~$ arvados-controller -h
  -config file

Configure Nginx to route requests to the controller

Add upstream and server definitions inside the http section of your Nginx configuration using the following template.


If you are adding arvados-controller to an existing system as part of the upgrade procedure, do not add a new “server” part here. Instead, add only the “upstream” part as shown here, and update your existing “server” section by changing its proxy_pass directive from http://api to http://controller.

upstream controller {
  server  fail_timeout=10s;

server {
  listen       [your public IP address]:443 ssl;
  server_name  uuid_prefix.your.domain;

  ssl on;
  ssl_certificate     /YOUR/PATH/TO/cert.pem;
  ssl_certificate_key /YOUR/PATH/TO/cert.key;

  # Refer to the comment about this setting in the passenger (arvados
  # api server) section of your Nginx configuration.
  client_max_body_size 128m;

  location / {
    proxy_pass            http://controller;
    proxy_redirect        off;
    proxy_connect_timeout 90s;
    proxy_read_timeout    300s;

    proxy_set_header      X-Forwarded-Proto https;
    proxy_set_header      Host $http_host;
    proxy_set_header      X-External-Client $external_client;
    proxy_set_header      X-Real-IP $remote_addr;
    proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;

Restart Nginx to apply the new configuration.

~$ sudo nginx -s reload

Configure arvados-controller

Create the cluster configuration file /etc/arvados/config.yml using the following template.

          Listen: ":9004" # must match the "upstream controller" section of your Nginx config
          Listen: ":8000" # must match the "upstream api" section of your Nginx config
      ConnectionPool: 128
        host: localhost
        dbname: arvados_production
        user: arvados
        password: xxxxxxxx
        sslmode: require

Create the host configuration file /etc/arvados/environment.


Start the service (option 1: systemd)

If your system does not use systemd, skip this section and follow the runit instructions instead.

If your system uses systemd, the arvados-controller service should already be set up. Restart it to load the new configuration file, and check its status:

~$ sudo systemctl restart arvados-controller
~$ sudo systemctl status arvados-controller
● arvados-controller.service - Arvados controller
   Loaded: loaded (/lib/systemd/system/arvados-controller.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-07-31 13:17:44 UTC; 3s ago
 Main PID: 25066 (arvados-control)
   CGroup: /system.slice/arvados-controller.service
           └─25066 /usr/bin/arvados-controller

Jul 31 13:17:44 zzzzz systemd[1]: Starting Arvados controller...
Jul 31 13:17:44 zzzzz arvados-controller[25191]: {"Listen":"[::]:9004","Service":"arvados-controller","level":"info","msg":"listening","time":"2018-07-31T13:17:44.521694195Z"}
Jul 31 13:17:44 zzzzz systemd[1]: Started Arvados controller.

Skip ahead to confirm the service is working.

Start the service (option 2: runit)

Install runit to supervise the arvados-controller daemon.

On Debian-based systems:

~$ sudo apt-get install runit

On Red Hat-based systems:

~$ sudo yum install runit

Create a supervised service.

~$ sudo mkdir /etc/service/arvados-controller
~$ cd /etc/service/arvados-controller
~$ sudo mkdir log log/main
~$ printf '#!/bin/sh\nset -a\n. /etc/arvados/environment\nexec arvados-controller 2>&1\n' | sudo tee run
~$ printf '#!/bin/sh\nexec svlogd main\n' | sudo tee log/run
~$ sudo chmod +x run log/run
~$ sudo sv exit .
~$ cd -

Use sv stat and check the log file to verify the service is running.

~$ sudo sv stat /etc/service/arvados-controller
run: /etc/service/arvados-controller: (pid 12520) 2s; run: log: (pid 12519) 2s
~$ tail /etc/service/arvados-controller/log/main/current

Confirm the service is working

Confirm the service is listening on its assigned port and responding to requests.

~$ curl -X OPTIONS

Previous: Install the API server Next: Install Keepstore servers

The content of this documentation is licensed under the Creative Commons Attribution-Share Alike 3.0 United States licence.
Code samples in this documentation are licensed under the Apache License, Version 2.0.