Difference between revisions of "Controlador de Experiências Remotas"
Line 73: | Line 73: | ||
'''build_pendulum.properties''': | '''build_pendulum.properties''': | ||
− | * '''pendulum.experiment.list''': | + | * '''pendulum.experiment.list''': Nome da(s) experiência(s) a criar, vírgula (,) como delimitação. |
− | * '''pendulum.multicast.controller.host''': | + | * '''pendulum.multicast.controller.host''': Nome do anfitrião onde o Controlador Multicast vai ser instalado (''default'': elab-multicast) |
− | * '''pendulum.multicast.controller.port''': | + | * '''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''': | + | * '''pendulum.rec.multicastcontroller.jmxremote.port''': Porta JMX listada, usada para receber ligações de rec.web (''default'': 25001) |
− | * '''install.dir''': | + | * '''install.dir''': Directório base onde o Controlador Multicast será instalado (''default'': /home/elab) |
− | * '''deployment.subdir''': Sub | + | * '''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 | + | * '''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''': | + | * '''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 | $ 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: | |
− | * Multicast | + | * 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 | + | * Servidor de Hardware |
$ scp dist/java/*HardwareServer*.zip hardware-server-name:/tmp/ | $ scp dist/java/*HardwareServer*.zip hardware-server-name:/tmp/ | ||
− | = | + | = Instalação = |
− | == ReC | + | == Cliente ReC e Controlador Multicast == |
− | * | + | * Crie o utilizador ''elab'' |
$ sudo useradd --create-home --shell /bin/false --expiredate 1 elab | $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab | ||
− | * | + | * Adicionar o utilizador ao grupo ''docker'' |
$ sudo usermod -a -G docker elab | $ 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/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 | ||
− | * | + | * 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/ | ||
− | * | + | * 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 | + | == Servidor de Hardware == |
− | * | + | * Substitua wpexperiment pelo nome da sua experiência |
$ export experiment=wpexperiment | $ export experiment=wpexperiment | ||
− | * | + | * Crie o utilizador elab |
$ sudo useradd --create-home --shell /bin/false --expiredate 1 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} | $ 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} | $ 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 | $ 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 | https://elab.my.url.com/wpalentejo | ||
− | * Webswing | + | * ''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/ | https://elab.my.url.com/ | ||
− | + | Utilizador: admin | |
− | + | Palavra-passe: pwd | |
− | = | + | = Operações = |
− | == Hardware | + | == Servidor de Hardware == |
− | * | + | * 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 | ||
− | * | + | * 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 | ||
− | * | + | * Registos |
$ /home/elab/rec-deployment/${experiment}/*.log | $ /home/elab/rec-deployment/${experiment}/*.log | ||
− | == ReC | + | == Cliente ReC e Controlador Multicast == |
− | * | + | * 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 | ||
− | * | + | * 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 | ||
− | * | + | * 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) | ||
− | + | Passos para a ligação ao ambiente do IST: | |
# TODO Steps | # TODO Steps | ||
Line 194: | Line 194: | ||
|} | |} | ||
− | == | + | ==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 15: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:
- WEBSWING_PUBLIC_URL: URL onde aceder ao webswing (por exemplo, https://elab-dev.vps.tecnico.ulisboa.pt/)
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)
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:
- TODO Steps
Next Page (Apparatus description) |