Difference between revisions of "Controlador de Experiências Remotas"

From wwwelab
Jump to navigation Jump to search
Line 73: Line 73:
 
'''build_pendulum.properties''':
 
'''build_pendulum.properties''':
  
* '''pendulum.experiment.list''': Name of the experiment(s) to build, comma (,) delimited.
+
* '''pendulum.experiment.list''': Nome da(s) experiência(s) a criar, vírgula (,) como delimitação.
* '''pendulum.multicast.controller.host''': Hostname where Multicast controller is going to be installed (default: elab-multicast)
+
* '''pendulum.multicast.controller.host''': Nome do anfitrião onde o Controlador Multicast vai ser instalado (''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.multicast.controller.port''': Porta CORBA listada usada para receber ligações do servidor de Hardware, rec.web e rec.client (''default'': 9001)
* '''pendulum.rec.multicastcontroller.jmxremote.port''': Listen JMX port used to recieve connections from rec.web (default: 25001)
+
* '''pendulum.rec.multicastcontroller.jmxremote.port''': Porta JMX listada, usada para receber ligações de rec.web (''default'': 25001)
* '''install.dir''': Base directory where Multicast Controller is going to be installed (default: /home/elab)
+
* '''install.dir''': Directório base onde o Controlador Multicast será instalado (''default'': /home/elab)
* '''deployment.subdir''': Sub directory where Multicast Controller is going to be installed (default: /rec-deployment)
+
* '''deployment.subdir''': Sub-directório onde o Controlador Multicast será instalado (default: /rec-deployment)
  
 
'''deployment/compose/src/main/docker/docker-compose-pendulum.yml''':
 
'''deployment/compose/src/main/docker/docker-compose-pendulum.yml''':
  
* '''WEBSWING_PUBLIC_URL''': URL where webswing is accessible (e.g. https://elab-dev.vps.tecnico.ulisboa.pt/)
+
* '''WEBSWING_PUBLIC_URL''': URL onde aceder ao ''webswing'' (por exemplo, https://elab-dev.vps.tecnico.ulisboa.pt/)
  
 
'''experiments/{experiment}/etc/build.properties'''
 
'''experiments/{experiment}/etc/build.properties'''
  
* '''experiment.driver.device''': Serial port device (e.g. /dev/ttyS0)
+
* '''experiment.driver.device''': Dispositivo porta-série (por exemplo, /dev/ttyS0)
  
Package everything:
+
Crie pacotes com tudo
 
     $ mvn clean package -Dmaven.test.skip=true -Djarsigner.alias="REC" -Dbuild.environment=pendulum -Dpack.docker.images -Dpublic.repo=docker.io
 
     $ mvn clean package -Dmaven.test.skip=true -Djarsigner.alias="REC" -Dbuild.environment=pendulum -Dpack.docker.images -Dpublic.repo=docker.io
  
Copy resulting packages to destination servers:
+
Copie os pacotes resultantes para os servidores de destino:
  
* Multicast Server
+
* Servidor Multicast
 
     $ scp deployment/images/target/reverse-proxy.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/multicast.tar multicast-server-name:/tmp/
Line 100: Line 100:
 
     $ scp deployment/compose/target/docker-compose-runner.yml multicast-server-name:/tmp/docker-compose.yml
 
     $ scp deployment/compose/target/docker-compose-runner.yml multicast-server-name:/tmp/docker-compose.yml
  
* Hardware Server
+
* Servidor de Hardware
 
     $ scp dist/java/*HardwareServer*.zip hardware-server-name:/tmp/
 
     $ scp dist/java/*HardwareServer*.zip hardware-server-name:/tmp/
  
= Install =
+
= Instalação =
  
== ReC Client and Multicast Controller==
+
== Cliente ReC e Controlador Multicast ==
  
* Create user elab
+
* Crie o utilizador ''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
+
* Adicionar o utilizador ao grupo ''docker''
 
     $ sudo usermod -a -G docker elab
 
     $ sudo usermod -a -G docker elab
  
* Load Docker images (only if building outside target deployment server)
+
* Carregue as imagem do Docker (apenas se a construção for realizada fora do servidor de implantação alvo)
 
     $ sudo -u elab docker load --input /tmp/webswing.tar # ReC client image
 
     $ sudo -u elab docker load --input /tmp/webswing.tar # ReC client image
 
     $ sudo -u elab docker load --input /tmp/multicast.tar # Multicast Controller image
 
     $ sudo -u elab docker load --input /tmp/multicast.tar # Multicast Controller image
Line 119: Line 119:
 
     $ sudo -u elab docker load --input /tmp/reverse-proxy.tar # Reverse Proxy image
 
     $ sudo -u elab docker load --input /tmp/reverse-proxy.tar # Reverse Proxy image
  
* Copy docker-compose.yml file to elab user home
+
* Copie o ficheiro docker-compose.yml para ''home'' do utilizador do elab
 
     $ sudo -u elab cp /tmp/docker-compose.yml /home/elab/
 
     $ sudo -u elab cp /tmp/docker-compose.yml /home/elab/
  
* Start all services
+
* Inicie todos os serviços
 
     $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d
 
     $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d
  
== Hardware Server ==
+
== Servidor de Hardware ==
  
* Replace wpexperiment with your experiment name
+
* Substitua wpexperiment pelo nome da sua experiência
 
     $ export experiment=wpexperiment
 
     $ export experiment=wpexperiment
  
* Create user elab
+
* Crie o utilizador elab
 
     $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
 
     $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
  
* Create experiment directory
+
* Crie o directório da experiência
 
     $ sudo -u elab mkdir /home/elab/rec-deployment/${experiment}
 
     $ sudo -u elab mkdir /home/elab/rec-deployment/${experiment}
  
* Unpack experiment package to experiment directory
+
* Descompacte o pacote da experiência para o directório da mesma
 
     $ 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
+
* Inicie a experiência
 
     $ 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 =
+
= Teste =
  
* Direct access to experiment:
+
* Acesso direto à experiência
  
Access configured URL at WEBSWING_PUBLIC_URL property (e.g. https://elab.my.url.com) + experiment name (e.g. wpalentejo)
+
URL de acesso configurado em WEBSWING_PUBLIC_URL (por exemplo, https://elab.my.url.com) + nome da experiência (por exemplo, wpalentejo)
  
 
https://elab.my.url.com/wpalentejo
 
https://elab.my.url.com/wpalentejo
  
* Webswing and administration console
+
* ''Webswing'' e administração da consola
  
Access configured URL at WEBSWING_PUBLIC_URL property (e.g. https://elab.my.url.com)
+
URL de acesso configurado em WEBSWING_PUBLIC_URL (por exemplo, https://elab.my.url.com)
  
 
https://elab.my.url.com/
 
https://elab.my.url.com/
  
User: admin
+
Utilizador: admin
Pass: pwd
+
Palavra-passe: pwd
  
= Operations =
+
= Operações =
  
== Hardware Server ==
+
== Servidor de Hardware ==
  
* Startup
+
* Arranque
 
     $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start
 
     $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start
  
* Shutdown
+
* Encerramento
 
     $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh stop
 
     $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh stop
  
* Logs
+
* Registos
 
     $ /home/elab/rec-deployment/${experiment}/*.log
 
     $ /home/elab/rec-deployment/${experiment}/*.log
  
== ReC Client and Multicast Controller ==
+
== Cliente ReC e Controlador Multicast ==
  
* Startup
+
* Arranque
 
     $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d
 
     $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d
  
* Shutdown
+
* Encerramento
 
     $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml down
 
     $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml down
  
* Logs:
+
* Registos
 
     $ docker logs rec.client # ReC client logs (webswing)
 
     $ docker logs rec.client # ReC client logs (webswing)
 
     $ docker logs rec.multicast # ReC Multicast Controller logs
 
     $ docker logs rec.multicast # ReC Multicast Controller logs
Line 186: Line 186:
 
     $ docker logs rec.client-admin # ReC client Administration Console logs (webswing)
 
     $ docker logs rec.client-admin # ReC client Administration Console logs (webswing)
  
Steps to connect to IST environment:
+
Passos para a ligação ao ambiente do IST:
  
 
# TODO Steps
 
# TODO Steps
Line 194: Line 194:
 
|}
 
|}
  
==Links==
+
==Ligações==
  
 
*[[Controlador de Experiências Remotas | Portuguese Version (Versão em português)]]
 
*[[Controlador de Experiências Remotas | Portuguese Version (Versão em português)]]
 
*[[Controlador remoto del experimento  | Spanish Version (Versión en español)]]
 
*[[Controlador remoto del experimento  | Spanish Version (Versión en español)]]

Revision as of 14:49, 26 August 2021

EM CONSTRUÇÃO

Pré-requisitos

Ambiente de construção

  • Git (2.30.2+)
  • Ant (1.10.9+)
  • Maven (3.6.3+)
  • OpenJDK 11 (11.0.8+)
  • Docker (20.10+)
  • docker-compose (1.25.4+)

Controlador multicast e rec.client

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

Servidor de Hardware

  • OpenJDK 11 (11.0.8+)

Preparação

Configure a variável do ambiente JAVA_HOME com vista a uma instalação openjdk11 válida:

   $ export JAVA_HOME=/path/to/openjdk11

Configure ~/.m2/toolchains.xml com vista a uma instalação openjdk11 válida:

   <toolchains>
       <toolchain>
           <type>jdk</type>
               <provides>
                   <vendor>openjdk</vendor>
                   <version>11</version>
               </provides>
           <configuration>
               <jdkHome>/path/to/openjdk/jdk11.0.8</jdkHome>
           </configuration>
       </toolchain>
   </toolchains>

Primeiro, confira o projeto a partir de github:

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

(FIXME) Depois, é necessário mudar o ramo de migração jdk11

   $ git checkout jdk11-migration

Para criar uma nova experiência de pêndulo, o script create_pendulum_experiment.sh ajuda a criar uma experiência base para um novo pêndulo

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)

Exemplo de um script para a criação de um pêndulo:

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

Construção

Configure as seguintes propriedades consoante o seu ambiente

build_pendulum.properties:

  • pendulum.experiment.list: Nome da(s) experiência(s) a criar, vírgula (,) como delimitação.
  • pendulum.multicast.controller.host: Nome do anfitrião onde o Controlador Multicast vai ser instalado (default: elab-multicast)
  • pendulum.multicast.controller.port: Porta CORBA listada usada para receber ligações do servidor de Hardware, rec.web e rec.client (default: 9001)
  • pendulum.rec.multicastcontroller.jmxremote.port: Porta JMX listada, usada para receber ligações de rec.web (default: 25001)
  • install.dir: Directório base onde o Controlador Multicast será instalado (default: /home/elab)
  • deployment.subdir: Sub-directório onde o Controlador Multicast será instalado (default: /rec-deployment)

deployment/compose/src/main/docker/docker-compose-pendulum.yml:

experiments/{experiment}/etc/build.properties

  • experiment.driver.device: Dispositivo porta-série (por exemplo, /dev/ttyS0)

Crie pacotes com tudo

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

Copie os pacotes resultantes para os servidores de destino:

  • Servidor Multicast
   $ 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-runner.yml multicast-server-name:/tmp/docker-compose.yml
  • Servidor de Hardware
   $ scp dist/java/*HardwareServer*.zip hardware-server-name:/tmp/

Instalação

Cliente ReC e Controlador Multicast

  • Crie o utilizador elab
   $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
  • Adicionar o utilizador ao grupo docker
   $ sudo usermod -a -G docker elab
  • Carregue as imagem do Docker (apenas se a construção for realizada fora do servidor de implantação alvo)
   $ sudo -u elab docker load --input /tmp/webswing.tar # ReC client image
   $ sudo -u elab docker load --input /tmp/multicast.tar # Multicast Controller image
   $ sudo -u elab docker load --input /tmp/webswing-admin.tar # ReC client admin console image
   $ sudo -u elab docker load --input /tmp/reverse-proxy.tar # Reverse Proxy image
  • Copie o ficheiro docker-compose.yml para home do utilizador do elab
   $ sudo -u elab cp /tmp/docker-compose.yml /home/elab/
  • Inicie todos os serviços
   $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d

Servidor de Hardware

  • Substitua wpexperiment pelo nome da sua experiência
   $ export experiment=wpexperiment
  • Crie o utilizador elab
   $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
  • Crie o directório da experiência
   $ sudo -u elab mkdir /home/elab/rec-deployment/${experiment}
  • Descompacte o pacote da experiência para o directório da mesma
   $ sudo -u elab unzip /tmp/${experiment}HardwareServer*.zip -d  /home/elab/rec-deployment/${experiment}
  • Inicie a experiência
   $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start

Teste

  • Acesso direto à experiência

URL de acesso configurado em WEBSWING_PUBLIC_URL (por exemplo, https://elab.my.url.com) + nome da experiência (por exemplo, wpalentejo)

https://elab.my.url.com/wpalentejo

  • Webswing e administração da consola

URL de acesso configurado em WEBSWING_PUBLIC_URL (por exemplo, https://elab.my.url.com)

https://elab.my.url.com/

Utilizador: admin Palavra-passe: pwd

Operações

Servidor de Hardware

  • Arranque
   $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start
  • Encerramento
   $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh stop
  • Registos
   $ /home/elab/rec-deployment/${experiment}/*.log

Cliente ReC e Controlador Multicast

  • Arranque
   $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d
  • Encerramento
   $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml down
  • Registos
   $ docker logs rec.client # ReC client logs (webswing)
   $ docker logs rec.multicast # ReC Multicast Controller logs
   $ docker logs rec.proxy # ReC Proxy logs
   $ docker logs rec.client-admin # ReC client Administration Console logs (webswing)

Passos para a ligação ao ambiente do IST:

  1. TODO Steps
Next Page (Apparatus description)

Ligações