Difference between revisions of "Remote Experiment Controller"

From wwwelab
Jump to navigation Jump to search
Line 73: Line 73:
  
 
* Multicast Server
 
* Multicast Server
     $ scp deployment/images/target/*.tar multicast-server-name:/tmp/
+
     $ scp deployment/images/target/reverse-proxy.tar multicast-server-name:/tmp/
 +
    $ scp deployment/images/target/multicast.tar multicast-server-name:/tmp/
 +
    $ scp deployment/images/target/webswing-admin.tar multicast-server-name:/tmp/
 +
    $ scp deployment/images/target/webswing.tar multicast-server-name:/tmp/
 
     $ scp deployment/compose/target/docker-compose-{pendulum,template}.yml multicast-server-name:/tmp/
 
     $ scp deployment/compose/target/docker-compose-{pendulum,template}.yml multicast-server-name:/tmp/
 +
* Optional (rec.web)
 +
    $ scp deployment/images/target/rec.web.tar multicast-server-name:/tmp/
 +
    $ scp deployment/images/target/rec.web-upgrade-db.tar multicast-server-name:/tmp/
 +
    $ scp deployment/images/target/rec.web-db.tar multicast-server-name:/tmp/
 +
    $ scp deployment/compose/target/docker-compose-rec.web.yml multicast-server-name:/tmp/
  
 
* Hardware Server
 
* Hardware Server
Line 85: Line 93:
 
* Create user elab
 
* Create user elab
 
     $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
 
     $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
   
+
 
 
* Add user to docker group
 
* Add user to docker group
 
     $ sudo usermod -a -G docker elab
 
     $ sudo usermod -a -G docker elab
   
+
 
 
* Load ReC client image
 
* Load ReC client image
 
     $ sudo -u elab docker load --input /tmp/webswing.tar
 
     $ sudo -u elab docker load --input /tmp/webswing.tar
   
+
 
 
* Load Multicast Controller image
 
* Load Multicast Controller image
 
     $ sudo -u elab docker load --input /tmp/multicast.tar
 
     $ sudo -u elab docker load --input /tmp/multicast.tar
   
+
 
 
* Load ReC client admin console image
 
* Load ReC client admin console image
 
     $ sudo -u elab docker load --input /tmp/webswing-admin.tar
 
     $ sudo -u elab docker load --input /tmp/webswing-admin.tar
   
+
 
 
* Load Reverse Proxy image
 
* Load Reverse Proxy image
 
     $ sudo -u elab docker load --input /tmp/reverse-proxy.tar
 
     $ sudo -u elab docker load --input /tmp/reverse-proxy.tar
   
+
 
 
* Copy docker-compose-template.yml and docker-compose-pendulum.yml to elab user home
 
* Copy docker-compose-template.yml and docker-compose-pendulum.yml to elab user home
 
     $ sudo -u elab cp /tmp/docker-compose-{pendulum,template}.yml /home/elab/
 
     $ sudo -u elab cp /tmp/docker-compose-{pendulum,template}.yml /home/elab/
   
+
 
 
* Start ReC client, ReC client Administration Console, ReC Multicast Controller and Reverse Proxy
 
* Start ReC client, ReC client Administration Console, ReC Multicast Controller and Reverse Proxy
 
     $ sudo -u elab docker-compose -f /home/elab/docker-compose-template.yml -f /home/elab/docker-compose-pendulum.yml up -d
 
     $ sudo -u elab docker-compose -f /home/elab/docker-compose-template.yml -f /home/elab/docker-compose-pendulum.yml up -d
 +
 +
* Optional (rec.web)
 +
    $ sudo -u elab docker load --input /tmp/rec.web.tar
 +
    $ sudo -u elab docker load --input /tmp/rec.web-upgrade-db.tar
 +
    $ sudo -u elab docker load --input /tmp/rec.web-db.tar
 +
    $ sudo -u elab echo AS_ADMIN_ALIASPASSWORD=askPass > /home/elab/asadmin_mail.secret
 +
    $ sudo -u elab echo AS_ADMIN_ALIASPASSWORD=rec > /home/elab/asadmin_recdb.secret
 +
    $ sudo -u elab echo rec > /home/elab/rec-db.secret
 +
    $ sudo -u elab echo root > /home/elab/root-db.secret   
 +
    $ sudo -u elab docker-compose -f /home/elab/docker-compose-template.yml -f /home/elab/docker-compose-pendulum.yml -f /home/elab/docker-compose-rec.yml up -d
  
 
== Hardware Server ==
 
== Hardware Server ==
Line 111: Line 129:
 
* Replace wpexperiment with your experiment name
 
* Replace wpexperiment with your experiment name
 
     $ export experiment=wpexperiment
 
     $ export experiment=wpexperiment
   
+
 
 
* Create user elab
 
* Create user elab
 
     $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
 
     $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
   
+
 
 
* Create experiment directory
 
* Create experiment directory
 
     $ sudo -u elab mkdir /home/elab/rec-deployment/${experiment}
 
     $ sudo -u elab mkdir /home/elab/rec-deployment/${experiment}
   
+
 
 
* Unpack experiment package to experiment directory
 
* Unpack experiment package to experiment directory
 
     $ sudo -u elab unzip /tmp/${experiment}HardwareServer*.zip -d  /home/elab/rec-deployment/${experiment}
 
     $ sudo -u elab unzip /tmp/${experiment}HardwareServer*.zip -d  /home/elab/rec-deployment/${experiment}
   
+
 
 
* Start experiment
 
* Start experiment
 
     $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start
 
     $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start
 +
 +
= Test =
 +
 +
  
 
Steps to connect to IST environment:
 
Steps to connect to IST environment:
  
 
# TODO Steps
 
# TODO Steps

Revision as of 13:14, 13 April 2021

Pre-requisites

Build environment

  • Maven 3.6.3
  • OpenJDK 11 (11.0.8+)
  • Docker (20.10+)
  • docker-compose (1.25.4+)

Multicast Controller and rec.client

  • Docker (20.10+)
  • docker-compose (1.25.4+)

Hardware Server

  • OpenJDK 11 (11.0.8+)

rec.web (recommended only for testing locally)

  • Docker (20.10+)
  • docker-compose (1.25.4+)

Preparation steps

First checkout the project from github:

   $ git clone https://github.com/linkareti/rec-project.git

(FIXME) Then we need to switch to jdk11-migration branch:

   $ git checkout jdk11-migration

To create a pendulum experiment, the script create_pendulum_experiment.sh helps to create a base experiment for a brand new pendulum

experiments/create_pendulum_experiment.sh

   Mandatory arguments:
   * 1st argument: Name of the experiment (e.g. worldpendulum)
   * 2nd argument: ID of the experiment (e.g. ELAB_WORLD_PENDULUM)
   * 3rd argument: Pendulum location (e.g. Faro)
   Optional arguments:
   * 4th argument: URL to the video (e.g. rtsp://elabmc.ist.utl.pt:80/wp_ccalg.sdp)
   * 5th argument: Pendulum serial device location (default: /dev/ttyS0)

Sample script execution to create pendulum:

   $ ./create_pendulum_experiment.sh wpalentejo ELAB_WP_ALENTEJO Alentejo rtsp://elabmc.ist.utl.pt:80/wp_alentejo.sdp /dev/ttyS0

Build

Configure the following properties based on your environment:

build_pendulum.properties:

  • pendulum.experiment.list: Name of the experiment(s) to build, comma (,) delimited.
  • pendulum.multicast.controller.host: Hostname where Multicast controller is going to be installed (default: elab-multicast)
  • pendulum.multicast.controller.port: Listen CORBA port used to recieve connections from Hardware Server, rec.web and rec.client (default: 9001)
  • pendulum.rec.multicastcontroller.jmxremote.port: Listen JMX port used to recieve connections from rec.web (default: 25001)
  • install.dir: Base directory where Multicast Controller is going to be installed (default: /home/elab)
  • deployment.subdir: Sub directory where Multicast Controller is going to be installed (default: /rec-deployment)

docker-compose-pendulum.yml:

Package everything:

   $ mvn clean package -Dmaven.test.skip=true -Djarsigner.alias="REC" -Dbuild.environment=pendulum -Dpack.docker.images

Copy resulting packages to destination servers:

  • Multicast Server
   $ scp deployment/images/target/reverse-proxy.tar multicast-server-name:/tmp/
   $ scp deployment/images/target/multicast.tar multicast-server-name:/tmp/
   $ scp deployment/images/target/webswing-admin.tar multicast-server-name:/tmp/
   $ scp deployment/images/target/webswing.tar multicast-server-name:/tmp/
   $ scp deployment/compose/target/docker-compose-{pendulum,template}.yml multicast-server-name:/tmp/
  • Optional (rec.web)
   $ scp deployment/images/target/rec.web.tar multicast-server-name:/tmp/
   $ scp deployment/images/target/rec.web-upgrade-db.tar multicast-server-name:/tmp/
   $ scp deployment/images/target/rec.web-db.tar multicast-server-name:/tmp/
   $ scp deployment/compose/target/docker-compose-rec.web.yml multicast-server-name:/tmp/
  • Hardware Server
   $ scp dist/java/*HardwareServer*.zip hardware-server-name:/tmp/

Install

ReC Client and Multicast Controller

  • Create user elab
   $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
  • Add user to docker group
   $ sudo usermod -a -G docker elab
  • Load ReC client image
   $ sudo -u elab docker load --input /tmp/webswing.tar
  • Load Multicast Controller image
   $ sudo -u elab docker load --input /tmp/multicast.tar
  • Load ReC client admin console image
   $ sudo -u elab docker load --input /tmp/webswing-admin.tar
  • Load Reverse Proxy image
   $ sudo -u elab docker load --input /tmp/reverse-proxy.tar
  • Copy docker-compose-template.yml and docker-compose-pendulum.yml to elab user home
   $ sudo -u elab cp /tmp/docker-compose-{pendulum,template}.yml /home/elab/
  • Start ReC client, ReC client Administration Console, ReC Multicast Controller and Reverse Proxy
   $ sudo -u elab docker-compose -f /home/elab/docker-compose-template.yml -f /home/elab/docker-compose-pendulum.yml up -d
  • Optional (rec.web)
   $ sudo -u elab docker load --input /tmp/rec.web.tar
   $ sudo -u elab docker load --input /tmp/rec.web-upgrade-db.tar
   $ sudo -u elab docker load --input /tmp/rec.web-db.tar
   $ sudo -u elab echo AS_ADMIN_ALIASPASSWORD=askPass > /home/elab/asadmin_mail.secret
   $ sudo -u elab echo AS_ADMIN_ALIASPASSWORD=rec > /home/elab/asadmin_recdb.secret
   $ sudo -u elab echo rec > /home/elab/rec-db.secret
   $ sudo -u elab echo root > /home/elab/root-db.secret    
   $ sudo -u elab docker-compose -f /home/elab/docker-compose-template.yml -f /home/elab/docker-compose-pendulum.yml -f /home/elab/docker-compose-rec.yml up -d

Hardware Server

  • Replace wpexperiment with your experiment name
   $ export experiment=wpexperiment
  • Create user elab
   $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
  • Create experiment directory
   $ sudo -u elab mkdir /home/elab/rec-deployment/${experiment}
  • Unpack experiment package to experiment directory
   $ sudo -u elab unzip /tmp/${experiment}HardwareServer*.zip -d  /home/elab/rec-deployment/${experiment}
  • Start experiment
   $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start

Test

Steps to connect to IST environment:

  1. TODO Steps