流媒体技术服务器常用部署方式
来源:互联网 发布:灰色西装 知乎 编辑:程序博客网 时间:2024/05/24 05:55
流服务器使用常crtmpserver作为原型,为主播提供推流服务,为用户提供拉流服务。流服务分为源管理节点(SM),源节点(SP)以及边缘节点(EP)。三种类型的节点为层级关系。
一般主播通过dns获取源节点的ip,向源服务器推流。源服务器收到主播流之后,向源管理上报该主播的流信息(每个主播有唯一的id号)。用户从边缘节点拉流,边缘节点向所设定的唯一上级源服务器拉取某个流编号的数据。源节点通过与源管理节点通信之后,确定该流id的来源,源节点取得主播推流的源服务器ip后,直接与该源节点通信,拉取流。
每个边缘节点如上所述,有一个固定的上游源节点。源节点之间是互相拉取的关系。
二、crtmpserver的通讯结构
三、crtmpserver的部署及启动方式
1、部署
目前使用rsync源作为程序包管理服务器。crtmpserver 目录结构目前为
|– etc
| `– crtmpserver.lua.sample
|– lib
| `– crtmpserver
| |– applications
| | |– SourceManagerClient
| | | `– libSourceManagerClient.so
| | |– SourceManagerServer
| | | `– libSourceManagerServer.so
| | |– admin
| | | `– libadmin.so
| | |– applestreamingclient
| | | `– libapplestreamingclient.so
| | |– appselector
| | | `– libappselector.so
| | |– flvplayback
| | | `– libflvplayback.so
| | |– proxypublish
| | | `– libproxypublish.so
| | |– samplefactory
| | | `– libsamplefactory.so
| | |– stresstest
| | | `– libstresstest.so
| | `– vptests
| | `– libvptests.so
| |– libcommon.so
| |– liblua.so
| |– libthelib.so
| `– libtinyxml.so
|– man
| `– man1
| `– crtmpserver.1
|– sbin
| `– crtmpserver
`– script
|– CRTMPServerEP.lua
|– CRTMPServerSM.lua
|– CRTMPServerSP.lua
|– checkcrtmpserver.sh
|– install.sh
|– restart.sh
|– start.sh
`– update.sh
2、 使用install.sh 进行安装
当然首先你得先获取install.sh,此脚本会调用start.sh 把进程配置起来。
a、安装SM: sh install.sh SM
b、安装SP: sh install.sh SP $SM_ip (请替换为源管理的ip)
c、安装EP: sh install.sh EP $SP_ip(请替换为指定的上级的ip,尽量使用同运营商资源)
3、 使用update.sh 进行版本更新
a、 sh update.sh (可以在线更新,因为程序运行时已经完全载入内存)
b、sh restart.sh (更新或者使用新的配置文件时需要重启服务器,此时所有的用户连接会直接关闭)
4、使用checkcrtmpserver.sh 进行自动拉起
a、 在update.sh 中有 nohup /bin/sh /usr/local/crtmpserver/script/checkcrtmpserver.sh > /usr/local/crtmpserver/script/checkcrtmp.log 2>&1 & 的命令进行自动拉起,检查间隔为5s,判断是否拉起的标准为进程个数是否为7个进程。(包括1个主进程和6个子进程)。
5、启动方式
sed -i ‘/crtmpserver/d’ /etc/ld.so.conf
echo “/usr/local/crtmpserver/lib/crtmpserver/” >> /etc/ld.so.conf
ldconfig
#以上为避免crtmpserver启动所依赖的库没有。
cd /usr/local/crtmpserver/lib/crtmpserver #一定要进到这个目录,然后用绝对路径把进程起起来。
/usr/local/crtmpserver/sbin/crtmpserver /usr/local/crtmpserver/etc/$conf
四、目前使用的节点情况以及监控注意事项
1、目前使用的节点共39台服务器,其中源节点5台,边缘节点34台。
2、监控时需要注意进程个数是否小于7,更倚重的是网络质量。
3、观众流接收数和流失败率是需要监控的两个指标,目前由网页上的客户端上报。
五、常见问题排查
1、主播播放不了
a、首先查看主播是dns到哪个源上,可以直接用(nslookup 流地址)或者 (ping 流地址)查看,如果解析错误,则反馈…
b、判断主播是否能够正常连接上源节点。(telnet 流地址:端口)与 (telnet 流地址:端口)尝试,如果不行,则检查是否是否被本机软件禁用
c、看是否360禁用掉端口,是则打开。
2、主播播放卡
a、主播网速测试,上传带宽必须到达40kB至少才能保持通畅。
b、tracert -d 流地址 看路由。
c、ping 流地址 看耗时
d、如果有mtr工具,则看是哪一跳丢包。
3、观众播放卡
原因同上。
4、进程异常,请在ps aux | grep crtmpserver 之后,直接restart进程,避免长时间不服务。
5、新节点启用之前请测试,必须加到token服务器的ip列表中才可以。
以上用到的install.sh脚本为:
#!/bin/sh#rsync new version crtmp to folder#choose sever type#copy server type config to etc#change ip & upstream ( just for ep )#add new server ip to sm#run update.sh for other install shell#run start.sh to startup crtmpserver#rsync -avz --delete rsync://网址:端口/crtmpserver /usr/local/crtmpserver/LOCALIP=`ip r | grep src| grep eth0 |awk '{print $NF}'`if [ -d /data1 ];thendirpre=/data1elif [ -d /data01 ];thendirpre=/data01elsedirpre=/data1/fiLOGDIR=${dirpre}/crtmpserver/logsMEDIADIR=${dirpre}/crtmpserverinstall_crtmp(){ rsync -avz --delete rsync://网址:端口/crtmpserver /usr/local/crtmpserver/ mkdir -p ${LOGDIR} mkdir -p ${MEDIADIR}}install_SM(){ mkdir -p ${LOGDIR}smlog/ cd /usr/local/crtmpserver/etc/ cp /usr/local/crtmpserver/script/CRTMPServerSM.lua . echo "modify the configure file~" #sh /usr/local/crtmpserver/script/start.sh}install_SP(){ cd /usr/local/crtmpserver/etc/SOURCEMANAGERIP=$1 cp /usr/local/crtmpserver/script/CRTMPServerSP.lua . sed "s/LOCALIP/${LOCALIP}/g" -i /usr/local/crtmpserver/etc/CRTMPServerSP.lua sed "s/SOURCEMANAGERIP/${SOURCEMANAGERIP}/g" -i /usr/local/crtmpserver/etc/CRTMPServerSP.luased "s/LOGDIR/${LOGDIR}/g" -i /usr/local/crtmpserver/etc/CRTMPServerSP.lua sed "s/MEDIRDIR/${MEDIADIR}/g" -i /usr/local/crtmpserver/etc/CRTMPServerSP.lua echo "add new crtmpserver to SM in IP地址";echo "/usr/local/crtmpserver/lib/crtmpserver/" >> /etc/ld.so.confldconfigrm /usr/local/crtmpserver/etc/crtmpserver.lua.sample sh /usr/local/crtmpserver/script/start.sh}install_EP(){ cd /usr/local/crtmpserver/etc/ cp /usr/local/crtmpserver/script/CRTMPServerEP.lua .SOURCEIP=$1 sed "s/LOCALIP/${LOCALIP}/g" -i /usr/local/crtmpserver/etc/CRTMPServerEP.luased "s/SOURCEIP/${SOURCEIP}/g" -i /usr/local/crtmpserver/etc/CRTMPServerEP.lua sed -e "s#LOGDIR#${LOGDIR}#g" -i /usr/local/crtmpserver/etc/CRTMPServerEP.lua sed -e "s#MEDIADIR#${MEDIADIR}#g" -i /usr/local/crtmpserver/etc/CRTMPServerEP.lua echo "please add new crtmpserver to SM in IP地址";echo "/usr/local/crtmpserver/lib/crtmpserver/" >> /etc/ld.so.confldconfigrm /usr/local/crtmpserver/etc/crtmpserver.lua.sample sh /usr/local/crtmpserver/script/start.sh}install_CHECK(){/bin/sh /usr/local/crtmpserver/script/checkcrtmpserver.sh >> /usr/local/crtmpserver/script/checkcrtmp.log 2>&1 &}case $1 in SM ) echo "SM_INSTALL" install_crtmpinstall_SM;;SP ) echo "SP_INSTALL"install_crtmpinstall_SP $2install_CHECK ;;EP ) echo "EP_INSTALL"install_crtmpinstall_EP $2install_CHECK ;;* ) echo "CHOOSE A SERVER TYPE: SM/SP/EP" ;;esac
- 流媒体技术服务器常用部署方式
- 流媒体技术服务器常用部署方式
- 【EasyDarwin】流媒体服务器部署
- 【流媒体技术】流媒体(1)使用nginx搭建流媒体服务器
- RTP/RTCP流媒体服务器技术
- RTP/RTCP流媒体服务器技术
- linux部署nginx-1.7.0流媒体服务器
- 架设流媒体服务器的技术储备
- 流媒体技术原理及播放方式
- 流媒体技术原理及播放方式
- 智能流技术与流媒体播放方式
- Axis2常用部署方式
- 部署RTMP流媒体服务器,并使用FFMpeg命令行模式测试
- 开源Easydarwin流媒体服务器Windows编译、配置、部署
- Android直播实现(二)srs流媒体服务器部署
- Windows平台EasyDarwin流媒体服务器部署及使用
- Solr部署tomcat服务器方式
- 流媒体视频直播类研究(一):Windows环境下部署Red5-Server流媒体服务器
- Tomcat开机启动
- CVU介绍
- OpenStack使用Bosh部署CloudFoundry(一)—准备OpenStack环境
- openfire学习4------->android客户端聊天开发之聊天功能开发
- myeclipse10.0优化以及MyEclipse9 插件配置代码生成器 - 集成SVN
- 流媒体技术服务器常用部署方式
- C#处理事件的过程
- 通过LDAP验证Active Directory服务
- git简易指南
- 使用std::sort()排序导致程序core问题分析
- IOS的后台运行
- HDU 3746 Cyclic Nacklace(KMP)
- 利用PS滤镜及图层叠加制作水墨荷花
- mysql基础:列类型--整型