mediasoup-signal
所属分类:其他
开发工具:JavaScript
文件大小:0KB
下载次数:2
上传日期:2023-06-08 09:00:03
上 传 者:
sh-1993
说明: 媒体组信号服务器,
(mediasoup signal server,)
文件列表:
.nvmrc (8, 2023-06-08)
Dockerfile (1419, 2023-06-08)
LICENSE (11357, 2023-06-08)
cert/ (0, 2023-06-08)
cert/cert.pem (969, 2023-06-08)
cert/key.pem (887, 2023-06-08)
doc/ (0, 2023-06-08)
doc/Logger/ (0, 2023-06-08)
doc/Logger/Dagger.md (2320, 2023-06-08)
doc/Logger/Loki.md (1424, 2023-06-08)
doc/Metrics/ (0, 2023-06-08)
doc/Metrics/Grafana.md (4285, 2023-06-08)
doc/Metrics/Prometheus.md (7413, 2023-06-08)
doc/Metrics/Prometheus.png (36887, 2023-06-08)
doc/Metrics/rov.md (787, 2023-06-08)
doc/Trace/ (0, 2023-06-08)
doc/Trace/SkyWallking.md (2430, 2023-06-08)
doc/custom_theme/ (0, 2023-06-08)
doc/custom_theme/404.html (307, 2023-06-08)
doc/custom_theme/base.html (5056, 2023-06-08)
doc/custom_theme/content.html (204, 2023-06-08)
doc/custom_theme/css/ (0, 2023-06-08)
doc/custom_theme/css/architecture.css (9241, 2023-06-08)
doc/custom_theme/css/base.css (5194, 2023-06-08)
doc/custom_theme/css/bootstrap-custom.min.css (107582, 2023-06-08)
doc/custom_theme/css/font-awesome-4.5.0.css (27466, 2023-06-08)
doc/custom_theme/css/highlight.css (1682, 2023-06-08)
doc/custom_theme/css/style.css (2838, 2023-06-08)
doc/custom_theme/fonts/ (0, 2023-06-08)
doc/custom_theme/fonts/FontAwesome.otf (109688, 2023-06-08)
doc/custom_theme/fonts/fontawesome-webfont.eot (70807, 2023-06-08)
... ...
# mediasoup-signal
[English](https://github.com/QuanjieDeng/mediasoup-signal/blob/master/README_EN.md)
基于meidiasoup实现的信令服务器
## 构建
信令服务器基于licode代码改造,基本逻辑相同
- 下载代码到本地
```
git clone https://github.com/QuanjieDeng/mediasoup-signal.git
```
- 安装依赖
```
./scripts/installUbuntuDeps.sh
```
- 安装 EC&EA
```
./scripts/installErizo.sh
```
- 安装NUVE
```
./scripts/installNuve.sh
```
## 配置
### 修改系统栈大小
由于EC中存在大量的同步调用,导致部分的函数调用栈比较大,所以在部署EC的机器上需要修改其调用栈
目前参考的值为65500 并且在启动EC时附带参数 --stack-size=65500
licode相关的配置不在追述,这里主要说mediasoup相关的配置
- webrtctransport监听地址
```
config.mediasoup.webRtcTransportOptions = {
listenIps :
[
{
ip : process.env.MEDIASOUP_LISTEN_IP || '192.168.94.109', //注意配置具体的ip地址
announcedIp : process.env.MEDIASOUP_ANNOUNCED_IP
}
],
........
};
```
- plainTransport监听地址
```
config.mediasoup.plainTransportOptions = {
listenIp :
{
ip : process.env.MEDIASOUP_LISTEN_IP || '192.168.94.109',
announcedIp : process.env.MEDIASOUP_ANNOUNCED_IP
},
maxSctpMessageSize : 262144,
enableSrtp : false
};
```
## 启动
分为nuve ec,ea
- nuve 直接切到目录 nuve/nuveAPI 执行 node nuve.js
- ec 直接切换目录 erizo_controller/erizoController 执行 node erizoController.js
- ea 直接切换目录 erizo_controller/erizoAgent 执行 node erzioAgent.js
## 版本制作
在utils文件夹下提供了版本制作的脚本 release.sh
该脚本接收两个参数 v1 和v2
v1 为本次目的版本 v2 为上一版本号
脚本在gitlab上创建对应的release tag
并制作对应tag的docker镜像推送到hub中
## Docker
### 镜像制作
- 切换到代码的根目录
- 执行命令生成镜像
```
docker build -t mediasoup-signal:v1 .
```
### 容器启动
- mongo
```
docker run -p 27017:27017 -v /tmp/mongo:/opt/licode/build/db mediasoup-signal:v1 --mongodb
```
- rabbitmq
```
docker run -p 5672:5672 mediasoup-signal:v1 --rabbitmq
```
- nuve
```
docker run -p 3000:3000 -e "RABBITMQ_URL=amqp:test:123456@192.168.94.109:5672" -e "MONGO_URL=192.168.94.109/nuvedb" mediasoup-signal:v1 --nuve
```
- ec
```
docker run -p 8080:8080 -e "RABBITMQ_URL=amqp:test:123456@192.168.94.109:5672" -e "PUBLIC_IP=192.168.94.109" mediasoup-signal:v1 --erizoController
```
- ea
```
MIN_PORT=40000
MAX_PORT=40050
docker run --net host -p $MIN_PORT-$MAX_PORT:$MIN_PORT-$MAX_PORT/udp -e "RABBITMQ_URL=amqp:test:123456@192.168.94.109:5672" -e "PUBLIC_IP=192.168.94.109" -e "RTCMINPORT=$MIN_PORT" -e "RTCMAXPORT=$MAX_PORT" mediasoup-signal:v1 --erizoAgent
可选参数
DEBUG环境变量 设置mediasoup子进程的日志显示
由于mediasoup的nodejs层使用 debug模块控制日志的限制
注册的民命空间有
mediasoup:*
mediasoup:WARN*
mediasoup:ERROR*
默认不打开子进程的日志,如果需要打开则直接设置环境变量DEBUG的值即可
例如-需要打开所有的日志
export DEBUG=mediasoup*
只打开WARN级别的日志
export DEBUG=mediasoup:WARN*
```
## K8S
- 系统如果需要在K8S环境中部署,参考 doc/k8s部分
### K8S环境中worker子进程的日志如何打开
-子进程的日志分为两级,一级是worker进程的日志 二级是nodejs层面的日志
nodejs层面只是控制要显示哪些等级,具体的可以在 licode_config.js 配置文件中设置
子进程的日志等级通过环境变量 DEBUG的值进行设置,需要注意的是,nodejs层面只是对worker子进程的日志进行过滤,
前提是wokrer子进程把日志抛出
## ROV数据采集
- ROV组件做为遥测数据源,提供遥测数据,供Prometheus等开源组件进行展示,
- 定期到系统的各个组件拉取数据
### 启动
- ROV程序的启动文件为 erizo_controller/ROV/rovMetricsServer.js
```
cd erizo_controller/ROV
node rovMetricsServer.js
```
### 结构拓扑
![rov架构](doc/rov.jpg)
### 采集指标
- activeRooms: 全局范围内的总room数量
- activeClients: 全局范围内总的client数量
- totalPublishers: 全局范围内总的produce数量
- totalSubscribers: 全局范围内总的consume数量
- activeErizoJsProcesses: mediasoup-worker数量
- totalICEconnectionsFailed: ICE连接错误报告数量
- totalDTLSconnectionsFailed: DTLS连接错误报告数量
- totalSCTPconnectionsFailed: SCTP错误状态报告数量
- produceScore: mediasoup报告produce传输RTP质量分数 0-10
- consumeScore: mediasoup报告comsume传输RTP质量分数 0-10
- rpcCost: rpc调用平均耗时-毫秒
## 链路追踪
- 链路追踪使用skywalking,我们在nuve/ec/ea的进程中都加载了skywalking的数据搜集插件
### 配置
- 你可以通过配置项,去配置是否开启等设置,模式是开启的模式
```
config.skywalking = {};
//set the url of skywalking-collection
config.skywalking.url = "localhost:11800";
config.skywalking.authentication = "";
//set the switch open or not
config.skywalking.open = true
```
近期下载者:
相关文件:
收藏者: