Table of Contents |
---|
Introduction
IEC Akraino Edge Stack supports AR/VR applications. It could support AR/VR Algorithms that with GPU Modeling (i.e. modeling describes the process of forming the shape of an object) Compositing (e.g. Environmental Mapping, Tone Mapping) Rendering and Illumination Models Visualization of Large Volume 3D Models (e.g. Global Network Operations Center monitoring) Registration (e.g. Stitching data from distributed sources) Segmentation (e.g. Segmentation and detection for security monitoring). This IEC Type 4 AR/VR platform utilizes Tars for remote direct memory access control. In this document, we use Virtual Classroom as demo for IEC Type4. Virtual Classroom is an online learning environment that allows teachers and students to communicate and interact with each other in real time. We use WebGL, Three.js and JavaScript to develop Virtual Classroom application.
License
...
- Introduction
- License
- How to use this document
- Deployment Architecture
- Pre-Installation Requirements
- Installation High-Level Overview
- Verifying the Setup
- Developer Guide and Troubleshooting
- Uninstall Guide
- Troubleshooting
- Maintenance
- Frequently Asked Questions
- License
- References
- Definitions, acronyms and abbreviations
Introduction
Connected Vehicle Blueprint can be flexibly deployed in physical machines, virtual machines, containers and other environments.
TARS framework is an important open source component of Connected Vehicle Blueprint, which can efficiently complete the massive deployment and governance of micro-services.
License
Apache License v2.0
How to use this document
The document includes details of prerequisites /pre-installation, installation and uninstalls steps.
The prerequisites and pre-installation software and hardware should be ready before executing the installation steps.
Deploy Architecture
To make the system deploy, the minimum deployment architecture is shown below, which consist of:
...
Deployment Architecture
Due to the hardware source limitation, Connected Vehicle Blueprint is deployed in three Virtual Machines in Amazon Web Service.
(Visit CI Lab Environment Setup if you want to set up connected vehicle blueprint in CI Lab.)
The following picture depicts the deployment architecture.
Node-0: Deploy Jenkins Master.
Node-1: Deploy Tars Master Node.
Node-2: Deploy Tars Slave(Node) and the connected vehicle applications.
Pre-Installation Requirements
Hardware Requirements
Minimum Hardware Requirements
...
- Wearable Glass (Optional)
- Teacher Client-Side — Personal Computer with Camera
- Student Client-Side — Personal Computer with Camera
- Server Side — 8 Core 16G Virtual Machine on ARM or x86 Platform
Software Prerequisites
...
Hostname | Core | RAM | HDD | NIC | Role |
Node-0 | 8 | 16GB | 50GB | 1GB | Jenkins Master |
Node-1 | 8 | 16GB | 50GB | 1GB | Tars Framework 2.4.13 |
Node-2 | 8 | 16GB | 100GB | 1GB | Tars Node (CVB + Type4 Application + Virtual Classroom Teacher Client + Virtual Classroom Student Client) |
Recommended Hardware Requirements
Hostname | Core | RAM | HDD | NIC | Role |
Node-0 | 8 | 32GB | 2TB | 10GB | Jenkins Master |
Node-1 | 8 | 48GB | 2TB | 10GB | Tars Framework 2.4.13 |
Node-2 | 8 | 48GB | 2TB | 10GB | Tars Node (CVB + Type4 Application + Virtual Classroom Teacher Client + Virtual Classroom Student Client) |
Software Prerequisites
- CentOS 7.8
- MySQL Ver 14.14 Distrib 5.6.26
- OpenStack: Rocky
- k8s:1.15.0
Database Prerequisites
N/A
Other Installation Requirements
N/A
Installation
...
Note well: No special software to access the application. The general software is itemized below:
- Install Windows 10
- Install camera driver
- Install Firefox browser
Installation High-Level Overview
Upstream Deployment Guide
Installation
...
Step by Step
Step1: Install Jenkins
Refer to the following link for installing Jenkins Mater and connect to Jenkins Slave.
https://github.com/qiuxin/Connected-Vechicle/blob/master/Doc/CI_Environment_Setup.md
Step2: Install Tarsframework
Refer to the following link for installing Tarsframework.
https://tarscloud.github.io/TarsDocs_en/installation/source.html
1. Dependency install
yum install -y glibc-devel gcc gcc-c++ bison flex make cmake psmisc ncurses-devel zlib-devel openssl openssl-devel
## install mysql
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
yum -y install mysql-devel
If you have problems to install mysql with the above step, add the new mysql repository to local server with this yum command and then re-run the previous commands.
sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum install mariadb-server -y
...
2. Install develop environment for Tars
yum install -y npm
npm i -g pm2
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc
nvm install v8.11.3
npm install -g pm2 --registry=https://registry.npm.taobao.org
mkdir Tars &&
cd Tars
git clone https://github.com/TarsCloud/TarsFramework.git --recursive
cd TarsFramework/build
chmod u+x build.sh
./build.sh prepare
./build.sh all
...
>update user set host = '%' where user ='root';
>FLUSH PRIVILEGES;
'%'update to the host IP,and then use mysql -u root -p --host '%ip' change back'%'
cd /Tars
git clone https://github.com/TarsCloud/TarsWeb.git
mv TarsWeb web
cp -rf web /usr/local/tars/cpp/deploy/
cd /usr/local/tars/cpp/deploy
chmod a+x linux-install.sh
./linux-install.sh MYSQL_HOST MYSQL_ROOT_PASSWORD INET REBUILD(false[default]/true) SLAVE(false[default]/true)
./linux-install.sh 192.168.1.10 our_PW eno1 false false admin 3306
Installation for Tars Agent(Jenkins Slave)
...
The following is the picture for Tars Framework website.
Step3: Tars Node
Refer to the following link for installing Tarsnode and connect Tarsnode to Tarsframework.
...
...
...
Install Virtual Classroom BackEnd
Code Block |
---|
0. prepare : firewall
firewall-cmd --add-port 22/tcp
firewall-cmd --add-port 80/tcp
firewall-cmd --add-port 443/tcp
firewall-cmd --add-port 3478/tcp
firewall-cmd --add-port 3478/udp
firewall-cmd --add-port 40000-57000/tcp
firewall-cmd --add-port 40000-57000/udp
firewall-cmd --add-port 57001-65535/tcp
firewall-cmd --add-port 57001-65535/udp
firewall-cmd --list-all
1. deployment
cd /opt
yum install docker-ce --nobest --allowerasing
systemctl enable --now docker
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
curl https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/install_openvidu_2.13.0.sh | bash
2. Configuration
vi /opt/openvidu/.env
# add IP and admin PW
OPENVIDU_DOMAIN_OR_PUBLIC_IP= $your_host_IP
OPENVIDU_SECRET= $admin_PW
3. Execution
cd /opt/openvidu/
./openvidu start
Available services
Consume OpenVidu REST API through https://$your_host_IP/
If the application is enabled, it will also be available at https://$your_host_IP/
You can open OpenVidu Dashboard to verify everything is working as expected at https://$your_host_IP/dashboard/ with credentials:
user: OPENVIDUAPP
pass: $admin_PW
4. Install Java for Jenkins Slave
For Slave Mode, install Java will be ok.
sudo yum install -y java-1.8.0-openjdk-devel |
Install Virtual Classroom Frontend
Code Block |
---|
##http-server install
npm install -g http-server-ssl
## Virtual Classroom front-end setup
git clone https://github.com/OpenVidu/openvidu-vr.git
cd openvidu-vr/openvidu-vr-room
vi app.js
modify line 163
var OPENVIDU_SERVER_URL = 'https://demos.openvidu.io'; //backend IP
var OPENVIDU_SERVER_SECRET = 'MY_SECRET'; //backend password
http-server-ssl -S &
Run Testing: https://$your_host_IP:8080 |
Installation on VM2(Jenkins Master)
Jenkins is a Java application, so the first step is to install Java. Run the following command to install the OpenJDK 8 package:
sudo yum install -y java-1.8.0-openjdk-devel
The next step is to enable the Jenkins repository. To do that, import the GPG key using the following curl command:
curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo
And add the repository to your system with:
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
Once the repository is enabled, install the latest stable version of Jenkins by typing:
sudo yum install -y jenkins
After the installation process is completed, start the Jenkins service with:
sudo systemctl start jenkins
To check whether it started successfully run:
systemctl status jenkins
You should see something similar to this:
# systemctl status jenkins
* jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: active (running) since Tue 2019-10-15 11:16:26 CST; 1min 15s ago
Docs: man:systemd-sysv-generator(8)
Process: 489 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/jenkins.service
`-510 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/l...
Oct 15 11:16:25 VM_0_4_centos systemd[1]: Starting LSB: Jenkins Automation Server...
Oct 15 11:16:26 VM_0_4_centos runuser[491]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
Oct 15 11:16:26 VM_0_4_centos runuser[491]: pam_unix(runuser:session): session closed for user jenkins
Oct 15 11:16:26 VM_0_4_centos jenkins[489]: Starting Jenkins [ OK ]
Oct 15 11:16:26 VM_0_4_centos systemd[1]: Started LSB: Jenkins Automation Server.
Finally enable the Jenkins service to start on system boot.
sudo systemctl enable jenkins
output
# sudo systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on
Adjust the Firewall If you are installing Jenkins on a remote CentOS server that is protected by a firewall you need to port 8080.
Use the following commands to open the necessary port:
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload
Setting Up Jenkins To set up your new Jenkins installation, open your browser and type your domain or IP address followed by port 8080:
http://your_ip_or_domain:8080
You will see the website itemized below:
Select the left option and install the plugin later:
Verifying the Setup
N/A
Developer Guide and Troubleshooting
Virtual Classroom demo includes two parts: (1) server side and (2) client side. The technologies used to develop these applications includes WebGL, Three.js and JavaScript.
The code could be find at:
git clone https://github.com/OpenVidu/openvidu-vr.git
cd /root/openvidu-vr/openvidu-vr-room/
sed -i 's/demos.openvidu.io/${Local_IP_Address}/g' app.js
To execute:
docker run --rm --name openvidu_server -d -p 4443:4443 -e openvidu.secret=MY_SECRET -e openvidu.publicurl=https://${Local_IP_Address}:4443/ openvidu/openvidu-server-kms
Uninstall Guide
- Stop all tars processes
Step4: Launch CI jobs
Create CI jobs and launch CI jobs in the following way.
The detail of the Jenkins script is depicted in the Test Document.
Verifying the Setup
N/A
Developer Guide and Troubleshooting
Uninstall Guide
- Stop all tars processes
/usr/local/app/tars/tars-stop.sh
2. Delete files
rm -rf /usr/local/app/tars
rm -rf /usr/local/app/patchs
rm -rf /usr/local/app/web
rm -rf /usr/local/tars
3. Delete crontab
crontab -e
**Delete this line " * * * * * /usr/local/app/tars/tarsnode/util/monitor.sh "**
Troubleshooting
1. You can’t deploy service on IP 127.0.0.1 for the following reasons:
a)Each service has at least one obj to serve foreign clients;
b)Each service has a obj for administration, it binds to ip 127.0.0.1 and the same port which servant obj binds to.
2. After executing of tars_start.sh, please execute command ps -ef|grep tars to check that the core service processes of Tars are alive,
i.e., tarsregistry, tarsAdminRegistry, tarsnode, tarsconfig and tarspatch.
3. The paths in which services deployed as below:
a)Log file path: /usr/local/app/tars/app_log/${Application}/${ServiceName}/, such as
/usr/local/app/tars/app_log/Test/HelloServer/
b)Executable file path: /usr/local/app/tars/tarsnode/data/${Application}.${ServiceName}/bin/, such as
/usr/local/app/tars/tarsnode/data/Test.HelloServer/bin/
c)Template config file path: /usr/local/app/tars/tarsnode/data/${Application}.${ServiceName}/conf/, such as
/usr/local/app/tars/tars-stop.sh
2. Delete files
rm -rf /tarsnode/data/Test.HelloServer/conf/
d)Cache file path: /usr/local/app/tars/tarsnode/data/${Application}.${ServiceName}/data/, such as
rm -rf /usr/local/app/patchs rm -rf /tars/tarsnode/data/Test.HelloServer/data/
4. How to check logs
For example, there will be a log file named Test.HelloServer.log in directory
/usr/local/app/web
rm -rf /usr/local/tars
3. Delete crontab
crontab -e
**Delete this line " * * * * * /tars/app_log/Test/HelloServer/. If something failed, please check it.
5. tarsnode can not run java server: cannot execute java
Please restart tarsnode after install jdk
/usr/local/app/tars/tarsnode/util/monitorstart.sh "**
...
N/A
Maintenance
Blueprint Package Maintenance
Frequently Asked Questions
TBD...N/A
License
Any software developed by the "Akraino Enterprise Applications on IEC-Type4 AR/VR Project CVB is licensed under the
Apache License, Version 2.0 (the "License");
you may not use the content of this software bundle except in compliance with the License.
You may obtain a copy of the License at <https://www.apache.org/licenses/LICENSE-2.0>
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
References
N/A
Definitions, acronyms and abbreviations
N/A