RTVS 1.3.0 阿里云 CentOS 7.8 部署:5分钟完成 Docker 网络与端口映射配置
RTVS 1.3.0 在阿里云CentOS 7.8上的高效部署指南:Docker网络与端口映射实战
1. 环境准备与基础配置
在阿里云CentOS 7.8上部署RTVS视频平台前,需要完成以下基础环境配置。选择CentOS 7.8是因为其长期支持周期和稳定的内核版本,能够完美兼容Docker和RTVS的运行需求。
关键组件安装步骤:
更新系统并安装必要工具:
yum update -y && yum install -y git lsof wget curl安装Docker CE最新版本(推荐使用阿里云镜像加速):
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun启动Docker并设置开机自启:
systemctl start docker && systemctl enable docker
注意:避免使用docker-io旧版本,其网络性能和兼容性可能无法满足RTVS的要求
验证Docker安装成功的标志是能够正常执行docker version命令并显示客户端和服务端版本信息。典型输出应包含类似以下内容:
Client: Docker Engine - Community Version: 20.10.18 API version: 1.41 Go version: go1.18.6 Server: Docker Engine - Community Engine: Version: 20.10.18 API version: 1.41 (minimum version 1.12)2. Docker网络架构设计
RTVS需要特定的Docker网络环境才能正常运行。与普通应用不同,RTVS使用自定义的bridge网络cvnetwork来实现容器间通信,这是其多组件协作的基础。
创建自定义网络的完整流程:
docker network create --driver=bridge \ --subnet=172.29.108.0/24 \ --gateway=172.29.108.1 \ cvnetwork网络参数说明:
| 参数 | 值 | 作用 |
|---|---|---|
| driver | bridge | 使用Linux桥接模式 |
| subnet | 172.29.108.0/24 | 为容器分配私有IP段 |
| gateway | 172.29.108.1 | 容器默认网关 |
| IP范围 | 172.29.108.0/24 | 可供分配的IP地址池 |
常见问题处理:
- 若出现
FirewallD is not running警告,可忽略不影响部署 - 网络已存在时使用
docker network inspect cvnetwork验证配置 - 建议在首次部署前执行网络创建,后续更新无需重复此步骤
3. 关键端口映射与安全组配置
RTVS涉及多种协议端口,正确的映射关系直接决定服务可用性。阿里云环境下需要同时配置Docker端口映射和ECS安全组规则。
核心端口对照表:
| 服务类型 | 容器内部端口 | 映射外部端口 | 协议 | 用途 |
|---|---|---|---|---|
| HTTP服务 | 80 | 30888 | TCP | Web管理界面访问 |
| WebSocket | 17000 | 17000 | TCP | 实时视频数据传输 |
| 媒体端口 | 6001-6029 | 6001-6029 | TCP/UDP | 音视频流传输 |
| 测试网关 | 9300 | 9300 | TCP | JT808设备接入 |
| Webrtc | 14001-14007 | 14001-14007 | UDP | 实时通信协议 |
阿里云安全组配置建议:
- 登录ECS控制台进入安全组配置页面
- 添加入方向规则,开放上述所有TCP/UDP端口
- 源IP范围根据实际需求设置(测试阶段可临时设为0.0.0.0/0)
- 对于生产环境,建议采用最小权限原则,只开放必要端口
重要提示:WebRTC使用的UDP端口必须开放,否则会导致视频通话功能异常
4. run_all.sh配置详解
run_all.sh是RTVS的核心启动脚本,其参数配置直接影响系统行为。下面是最关键的配置项解析:
#! /bin/bash # HTTP服务映射端口(默认30888) export DOCKER_HTTP_PORT=30888 # WebSocket客户端连接端口(默认17000) export DOCKER_WEBSOCKET_PORT=17000 # 服务端口范围(在此范围内找30个可用端口) export PORT_DEV_START=6001 export PORT_DEV_END=65535 # Webrtc端口范围(需CPU核心数+2个端口) export Webrtc_Port_Start=14001 export Webrtc_Port_End=65535 # 808测试网关端口 export DOCKER_808_PORT=9300 # 服务器公网IP或域名(必须正确配置) export IPADDRESS=your_server_ip # 网关接口地址(保持默认即可) export GatewayBaseAPI=http://172.29.108.249/api/ # Redis连接字符串(单节点配置) export RedisExchangeHosts=172.29.108.245:6379,connectTimeout=20000,syncTimeout=20000,responseTimeout=20000关键参数调整建议:
IPADDRESS必须设置为ECS实例的公网IP或已解析的域名- 端口范围应根据实际并发量调整,建议:
- 低并发:6001-7000
- 高并发:6001-10000
- Webrtc端口数量应≥(CPU核心数+2)
- 生产环境建议配置Redis密码认证
5. 服务启动与验证
完成配置后,通过以下步骤启动全套服务:
chmod +x run_all.sh ./run_all.sh启动过程观察要点:
- 首次运行会下载多个Docker镜像,耗时取决于网络速度
- 出现
Download complete提示表示镜像下载成功 - 最终应看到7-8个容器正常运行的输出
验证服务状态的命令:
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"预期输出示例:
NAMES STATUS PORTS rtvsweb-publish-1 Up 5 minutes 0.0.0.0:6001-6029->6001-6029/tcp nginx-rtmp-1 Up 5 minutes 0.0.0.0:6003->1935/tcp, 0.0.0.0:6004->8080/tcp tstgw808-1 Up 5 minutes 0.0.0.0:9300->9300/tcp cvcluster-1 Up 5 minutes 0.0.0.0:17000->17000/tcp, 0.0.0.0:30888->80/tcp实时日志查看方法:
# 查看网关日志 docker logs -f tstgw808-1 # 查看视频服务日志 docker logs -f rtvsweb-publish-16. 常见问题排查指南
问题1:端口冲突导致服务启动失败
- 现象:容器反复重启,日志显示"address already in use"
- 解决方案:
- 使用
netstat -tulnp | grep <端口号>查找占用进程 - 停止冲突服务或修改RTVS端口配置
- 重启Docker服务:
systemctl restart docker
- 使用
问题2:镜像拉取超时
- 现象:长时间卡在"Pulling from library/xxx"
- 解决方案:
# 配置Docker国内镜像加速 mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://registry.cn-hangzhou.aliyuncs.com", "http://hub-mirror.c.163.com" ] } EOF systemctl daemon-reload systemctl restart docker
问题3:Web页面无法播放视频
- 排查步骤:
- 确认安全组规则已放行所有必要端口
- 检查
IPADDRESS是否配置正确 - 验证设备是否成功注册:
docker exec -it tstgw808-1 tail -f /app/logs/gateway.log - 测试端口连通性:
telnet your_server_ip 17000
7. 性能优化与生产建议
阿里云ECS选型参考:
- 测试环境:2核4G(突发性能实例t5)
- 50路以下:4核8G(通用型g6)
- 100路以上:8核16G(计算型c6)
内核参数调优:
# 增加网络缓冲区大小 echo "net.core.rmem_max=4194304" >> /etc/sysctl.conf echo "net.core.wmem_max=4194304" >> /etc/sysctl.conf sysctl -p # 调整文件描述符限制 echo "* soft nofile 65535" >> /etc/security/limits.conf echo "* hard nofile 65535" >> /etc/security/limits.confDocker运行参数优化:
# 修改docker.service配置 mkdir -p /etc/systemd/system/docker.service.d tee /etc/systemd/system/docker.service.d/override.conf <<-'EOF' [Service] ExecStart= ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=65535:65535 EOF systemctl daemon-reload systemctl restart docker对于需要HTTPS的场景,可参考项目中的run_all_https.sh脚本配置SSL证书。长期运行的系统建议配置日志轮转和监控告警,确保及时发现并处理异常情况。