RTVS阿里云部署测试
步骤
创建阿里云Centos7实例并登陆
在阿里云创建一个Centos7的实例,我这里选择了Centos7.8。
创建完毕后修改网络安全组规则,将需要映射的端口允许访问,具体请查看https://github.com/vanjoge/RTVS/blob/master/script/README.md 映射端口部分,我这里为演示方便配置为全部允许。
配置完毕登陆此服务器,这里直接用root登陆了。
安装docker和其他依耐
这里为了演示方便直接装了docker-io版本,docker-ce版也是支持的。
yum install -y docker git lsof
启动docker和设置docker开机启动
sudo systemctl start docker
sudo systemctl enable docker
检查docker版本
docker version
输出
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64
Go version: go1.10.3
Git commit: 64e9980/1.13.1
Built: Wed Jul 1 14:56:42 2020
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64
Go version: go1.10.3
Git commit: 64e9980/1.13.1
Built: Wed Jul 1 14:56:42 2020
OS/Arch: linux/amd64
Experimental: false
这一步非必须,可以在拉取镜像过慢时再切换。
为了之后拉取docker镜像速度更快,可以尝试用国内加速(如果你有阿里云加速会更好)。
修改vim /etc/docker/daemon.json
{
"registry-mirrors" : [
"http://hub-mirror.c.163.com",
"registry.docker-cn.com"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug" : true,
"experimental" : true
}
重新启动docker
systemctl restart docker
拉取RTVS项目
git clone https://github.com/vanjoge/RTVS
创建docker自定义网络
./docker_network.sh
阿里云默认不用FirewallD,会报 FirewallD is not running ,没有太大影响,可继续。
Error: No such network: cvnetwork
创建docker自定义网络 cvnetwork 172.29.108.0/24
Error response from daemon: network cvnetwork not found
60d7be08bb9def481f1ada877f138c6f0deec2338bc2aec28316bf3f7c6b0186
FirewallD is not running
启动集群管理
我这里未更改默认端口等参数,首次执行后会从dockerhub下载cvcluster镜像,可能需要等待一段时间。
./run_cluster.sh
当脚本执行完,通过docker ps
可以看到集群管理已经运行
[root@iZbp15w4ocqyod72xhv231Z script]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8270458dad56 vanjoge/cvcluster:1.0.0 "dotnet CVCluster.dll" 6 seconds ago Up 5 seconds 0.0.0.0:17000->17000/tcp, 0.0.0.0:30888->80/tcp, 0.0.0.0:30443->443/tcp cvcluster-1
我这里测试的服务器IP是47.99.237.207,通过浏览器访问 http://47.99.237.207:30888/ 已经可以看到集群管理页面
启动测试网关
首次启动会从dockerhub拉取需要的镜像,可能需要等待一段时间
./run_gw.sh
执行完毕后通过docker ps
查看,可以看到redis和网关已经在运行,这时可以将设备接入了,IP为你服务器的IP,我这里是47.99.237.207,默认设备接入端口为9300
[root@iZbp15w4ocqyod72xhv231Z script]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8853abe16c44 vanjoge/gw808 "dotnet 808GW.dll" 35 seconds ago Up 34 seconds 0.0.0.0:9300->9300/tcp tstgw808-1
9085118907ae redis:4.0.10-alpine "docker-entrypoint..." 48 seconds ago Up 47 seconds 6379/tcp tstgw_redis
8270458dad56 vanjoge/cvcluster:1.0.0 "dotnet CVCluster.dll" 21 minutes ago Up 21 minutes 0.0.0.0:17000->17000/tcp, 0.0.0.0:30888->80/tcp, 0.0.0.0:30443->443/tcp cvcluster-1
启动RTVS
将下方47.99.237.207改为你的服务器IP地址,启动RTVS,同样首次会下载几个docker镜像,可能需要等待一段时间。如果中途因为下载docker镜像失败报错,请再次执行./run_rtvs.sh
即可。
#设置服务器IP地址或域名
export IPADDRESS=47.99.237.207
#设置网关接口地址
export GatewayBaseAPI=http://172.29.108.249/api/
#设置redis连接字符串
export RedisExchangeHosts=172.29.108.245:6379,connectTimeout=20000,syncTimeout=20000,responseTimeout=20000
./run_rtvs.sh
等待执行完毕,再次查看集群管理地址,应该可以看到视频服务数不再是0
。
测试
将视频设备接入测试网关,我这里地址为47.99.237.207:9300
可在服务器通过 docker logs -f tstgw808-1
查看测试网关日志,会打印出与设备和网关的所有交互日志,如下:
2020-08-31 13:06:35,143 [52] DEBUG SQ [(null)] - [222.209.233.21:53686] Connected
2020-08-31 13:06:35,315 [52] DEBUG SQ [(null)] - [R 222.209.233.21:53686] 7E 01 00 00 2D 00 00 07 50 00 01 00 01 00 1F 00 6E 31 32 33 34 35 74 65 73 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 30 31 32 33 34 35 01 B2 E2 42 30 30 30 30 30 3F 7E
2020-08-31 13:06:35,315 [52] DEBUG SQ [(null)] - [S 222.209.233.21:53686] 7E 81 00 00 0B 00 00 07 50 00 01 00 01 00 01 00 31 32 33 34 35 36 37 38 D4 7E
2020-08-31 13:06:35,372 [54] DEBUG SQ [(null)] - [R 222.209.233.21:53686] 7E 01 02 00 08 00 00 07 50 00 01 00 02 31 32 33 34 35 36 37 38 57 7E
2020-08-31 13:06:35,372 [54] DEBUG SQ [(null)] - [S 222.209.233.21:53686] 7E 80 01 00 05 00 00 07 50 00 01 00 01 00 02 01 02 00 D2 7E
2020-08-31 13:06:35,372 [54] DEBUG SQ [(null)] - Sim[000007500001]上线
2020-08-31 13:06:35,372 [54] DEBUG SQ [(null)] - [S 222.209.233.21:53686] 7E 90 03 00 00 00 00 07 50 00 01 00 02 C7 7E
2020-08-31 13:06:35,469 [54] DEBUG SQ [(null)] - [R 222.209.233.21:53686] 7E 10 03 00 0A 00 00 07 50 00 01 00 03 1A 01 00 01 01 40 00 62 08 08 75 7E
2020-08-31 13:06:48,845 [56] DEBUG SQ [(null)] - VideoControl接口收到数据 Content=9101001500000750000100000D34372E39392E3233372E323037177A0000010001
2020-08-31 13:06:48,846 [56] DEBUG SQ [(null)] - [S 222.209.233.21:53686] 7E 91 01 00 15 00 00 07 50 00 01 00 03 0D 34 37 2E 39 39 2E 32 33 37 2E 32 30 37 17 7A 00 00 01 00 01 9E 7E
2020-08-31 13:06:48,983 [56] DEBUG SQ [(null)] - [R 222.209.233.21:53686] 7E 00 01 00 05 00 00 07 50 00 01 00 04 00 03 91 01 00 C5 7E
确定设备上线后,打开项目中RTVS/test/tstrtvs.html
页面,填入服务器地址47.99.237.207,端口17000,上线设备的SIM卡号,点击实时视频即可查看视频。
特别提醒:如果使用在线地址请不要使用https,https会验证证书,需要配置和证书匹配的域名,本文示例未配置证书,是用不了https的。
如下图
更新
为了方便更新后启动,可以自建一个脚本run_all.sh用来启动所有服务,建议放在RTVS上级目录,脚本大概如下:
可 RTVS/script/ 目录下的run_all.sh 和 run_all_https.sh 脚本查看必须参数
#! /bin/bash
#DOCKER_HTTP_PORT HTTP映射端口 默认30888
export DOCKER_HTTP_PORT=30888
#DOCKER_WEBSOCKET_PORT 客户端连接端口 默认17000
export DOCKER_WEBSOCKET_PORT=17000
#设备连接端口范围(在这个范围找20个可用的端口)
export PORT_DEV_START=6001
export PORT_DEV_END=65535
#webrtc连接端口范围(此范围全部开启)
export Webrtc_Port_Start=14001
export Webrtc_Port_End=65535
#808测试网关连接端口
export DOCKER_808_PORT=9300
#设置服务器IP地址或域名(内网测试无需映射端口 外网请映射端口)
#此配置是RTVS下发给设备的连接地址和客户端连接服务器的地址,请注意公网时的端口映射
export IPADDRESS=47.99.237.207
#设置网关接口地址
export GatewayBaseAPI=http://172.29.108.249/api/
#设置redis连接字符串
export RedisExchangeHosts=172.29.108.245:6379,connectTimeout=20000,syncTimeout=20000,responseTimeout=20000
cd RTVS/script/
./run_cluster.sh
./run_gw.sh
./run_rtvs.sh
如果RTVS有更新时,只需进入RTVS目录执行git pull即可更新
cd RTVS
git pull
cd ..
RTVS/script/clear.sh
./run_all.sh