Installing controller service

refs #13497

Add controller to an existing cluster

Add to "upgrading to master" section of doc.arvados.org:
  • Create /etc/arvados/config.yml on your API server node, if you haven't already
  • Add to /etc/arvados/config.yml:
    Clusters:
      {your-uuid-prefix}:
        NodeProfiles:
          apiserver:
            arvados-controller:
              Listen: ":9004" # choose a port
            arvados-api-server:
              Listen: ":8000" # must match Rails server port in your Nginx config
    
  • Create /etc/arvados/environment containing one line, ARVADOS_NODE_PROFILE=apiserver
  • Install the arvados-controller package on your API server node
  • Update your Nginx configuration so incoming traffic for $ARVADOS_API_HOST is routed to port 9004 (or whichever port you chose for arvados-controller in your config).
    • Add:
      upstream arvados-controller {
        server                  127.0.0.1:9004;
      }
      
    • Update server section that currently forwards traffic to http://api:
       server {
         listen                  [your public IP address]:443 ssl;
         server_name             uuid_prefix.your.domain;
         # ...
         location  / {
      -    proxy_pass            http://api;
      +    proxy_pass            http://arvados-controller;
           # ...
         }
       }
      

Install controller in a new cluster

Update install docs:
  • Add arvados-controller to the list of deb/rpm packages to install
  • Create /etc/arvados/config.yml (as above)
  • Create /etc/arvados/environment (as above)
  • If using systemd, run systemctl start arvados-controller and confirm running status
  • If not using systemd, set up a supervised service using runit

Verify controller is working

Watch controller's log messages.

apiserver# journalctl -fu arvados-controller.service

When the controller service starts, you should see startup messages:

Jul 17 20:29:16 4xphq.arvadosapi.com systemd[1]: Starting Arvados controller...
Jul 17 20:29:16 4xphq.arvadosapi.com arvados-controller[28118]: {"Listen":"[::]:9004","Service":"arvados-controller","level":"info","msg":"listening","time":"2018-07-17T20:29:16.287796594Z"}
Jul 17 20:29:16 4xphq.arvadosapi.com systemd[1]: Started Arvados controller.

When clients access the API, you should see "request" and "response" log messages:

Jul 17 20:41:01 4xphq.arvadosapi.com arvados-controller[28118]: {"RequestID":"req-5o2lhd2i1peunbmat2u2","level":"info","msg":"request","remoteAddr":"127.0.0.1:17192","reqBytes":140,"reqForwardedFor":"10.20.49.0","reqHost":"4xphq.arvadosapi.com","reqMethod":"POST","reqPath":"arvados/v1/collections","reqQuery":"","time":"2018-07-17T20:41:01.816350482Z"}
Jul 17 20:41:02 4xphq.arvadosapi.com arvados-controller[28118]: {"RequestID":"req-5o2lhd2i1peunbmat2u2","level":"info","msg":"response","remoteAddr":"127.0.0.1:17192","reqBytes":140,"reqForwardedFor":"10.20.49.0","reqHost":"4xphq.arvadosapi.com","reqMethod":"POST","reqPath":"arvados/v1/collections","reqQuery":"","respBytes":6138,"respStatus":"OK","respStatusCode":200,"time":"2018-07-17T20:41:02.135405529Z","timeToStatus":0.318963,"timeTotal":0.319050,"timeWriteBody":0.000086}