DTS Cloud For Linux 安装文档
# 实测环境
系统: Kylin Linux Advanced Server V10 (Sword)(SP2)
架构: X86_64
用户: freedo[具有sudo权限]
一、安装包准备
分类 | 系统架构 | 组件 | 安装包名称 | 下载地址 | 备注 |
---|---|---|---|---|---|
DTS_Cloud | x86_64 | DTS_Cloud | DTS_Cloud_x86_6.1.0613.zip | https://pan.baidu.com/s/1GF4rBkjJNGGASbzcL2nd6Q?pwd=blwe | |
DTS_Cloud | ARM64 | DTS_Cloud | DTS_Cloud_arm64_6.1.0613.zip | https://pan.baidu.com/s/1PcJFOFwPh3qlujRtH_LPvg?pwd=e0kf | |
中继服务 | x86_64 | 中继服务 coturn 镜像 | coturn-latest-amd64-20230510.tar.gz | https://installpackages.gbim.vip/docker_update/coturn-latest-amd64-20230510.tar.gz | |
中继服务 | ARM64 | 中继服务 coturn 镜像 | coturn-latest-arm64-20230511.tar.gz | https://installpackages.gbim.vip/docker_update/coturn-latest-arm64-20230511.tar.gz | |
显卡驱动 | x86_64 | NVIDIA 显卡驱动 | NVIDIA-Linux-x86_64-550.78.run | https://pan.baidu.com/s/1JEqonlVIgdveURtQ4ytaDQ?pwd=he8x | |
显卡驱动 | ARM64 | NVIDIA 显卡驱动 | NVIDIA-Linux-aarch64-550.78.run | https://pan.baidu.com/s/1Y20wYbfHwtonVYLfcZOVjA?pwd=haxr | |
显卡驱动 | x86_64 | NVIDIA 显卡驱动【Tesla 系列专用】 | NVIDIA-Linux-x86_64-550.54.15.run | https://pan.baidu.com/s/1LvBEcxrdI_ekzMSsxLNytg?pwd=bhku | |
显卡驱动 | ARM64 | NVIDIA 显卡驱动【Tesla 系列专用】 | NVIDIA-Linux-aarch64-550.54.15.run | https://pan.baidu.com/s/1u9A_PZ0x6I_Y_hb9u0DpwA?pwd=k9cj | |
资源包 | x86_64/ARM64 | Linux专用资源包 | DTS_Library_Linux_0111.pak | https://pan.baidu.com/s/1CV9q5I8M8Krw37Jx9cpMSA?pwd=jwtk |
二、初始化服务器
1.创建 freedo 用户,并授予 sudo 权限
adduser -u 9988 freedo #建立用户名为 freedo 的一般用户
passwd freedo #为用户 freedo 设置密码
#Changing password for user freedo.
#New UNIX password: ← 输入密码(密码不会被显示)
#Retype new UNIX password: ← 再次输入密码确认两次密码一致
#passwd: all authentication tokens updated successfully. ← 密码设置成功
#配置freedo用户sudo免密
echo "freedo ALL=(ALL:ALL) NOPASSWD:ALL" | tee -a /etc/sudoers >/dev/null
2.切换到 freedo 用户
方法一: 从 root 用户切换到freedo
用户
su - freedo
方法二: 直接使用上一步创建的freedo
用户密码登录freedo
用户
3.处理系统防火墙
注意: 根据自己的操作系统环境选择系统防火墙处理步骤
注意: 选择下面所提供的任意一种方法,处理系统自带 firewalld 防火墙
KyLinServer/CentOS/RHEL 系统
方法一:关闭防火墙服务
sudo systemctl stop firewalld
sudo systemctl disable firewalld
方法二:通过防火墙放行相关端口
# 允许vnc访问
sudo firewall-cmd --zone=public --add-port=5900-5902/tcp --permanent
# 允许Cloud页面访问,默认8087/tcp端口,根据实际情况修改
sudo firewall-cmd --zone=public --add-port=8087/tcp --permanent
# 渲染程序连接的端口
sudo firewall-cmd --zone=public --add-port=8088/tcp --permanent
# 实例管理服务使用的端口
sudo firewall-cmd --zone=public --add-port=8089/tcp --permanent
# 允许P2P视频流传输
sudo firewall-cmd --zone=public --add-port=50000-50100/udp --permanent
# 允许中继服务访问,默认3478/tcp 3478/udp端口,根据实际情况修改
sudo firewall-cmd --zone=public --add-port=3478/tcp --permanent
sudo firewall-cmd --zone=public --add-port=3478/udp --permanent
# 重载配置,然后查看配置状态
sudo firewall-cmd --reload
sudo firewall-cmd --list-port
Ubuntu/Debian 系统
方法一:关闭防火墙服务
sudo ufw disable
方法二:通过防火墙放行相关端口
# 允许vnc访问
sudo ufw allow 5900:5902/tcp
# 允许Cloud页面访问,默认8087/tcp端口,根据实际情况修改
sudo ufw allow 8087/tcp
# 渲染程序连接的端口
sudo ufw allow 8088/tcp
# 实例管理服务使用的端口
sudo ufw allow 8089/tcp
# 允许P2P视频流传输
sudo ufw allow 50000:65535/udp
# 允许中继服务访问,默认3478/tcp 3478/udp端口,根据实际情况修改
sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
4.安装配置 Nvidia 显卡驱动与 Vulkan 支持
驱动下载地址:
https://www.nvidia.com/Download/Find.aspx?lang=en-us
若显卡为 Tesla 系列,如 V100、T4、A10、A40 等显卡,请选择 Tesla 系列专用驱动,普通驱动无法适用。
注意: 根据自己的操作系统环境选择安装驱动步骤
KyLinServer/CentOS/RHEL 系统
1. 安装依赖包
sudo yum -y install kernel-devel-$(uname -r) kernel-headers-$(uname -r) pciutils
sudo yum -y install dkms
sudo yum -y install elfutils-libelf-devel libglvnd libglvnd-devel vulkan-loader
sudo yum -y install vulkan-loader-devel
#sudo yum install vulkan
2. 屏蔽自带驱动
sudo touch /etc/modprobe.d/blacklist-nvidia-nouveau.conf
sudo bash -c "cat > /etc/modprobe.d/blacklist-nvidia-nouveau.conf" << EOF
blacklist nouveau
options nouveau modeset=0
EOF
3. 显卡支持
sudo touch /etc/modprobe.d/nvidia.conf
sudo bash -c "cat > /etc/modprobe.d/nvidia.conf" << EOF
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
EOF
4. 重建 initramfs image
sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)
5. 重启
sudo systemctl reboot
6. 停止 x windows 相关服务
sudo systemctl stop lightdm vncserver@\:1
7. 上传下载后的驱动文件到服务器
略
8. 为驱动文件添加执行权限
sudo chmod +x NVIDIA-Linux-x86_64-550.78.run
9. 运行文件安装驱动
sudo ./NVIDIA-Linux-x86_64-550.78.run -m=kernel-open
注意: 最后一步,提示是否自动配置 X Window 的时候,请选择"yes",否则会导致 vnc 无法调用独立显卡,从而无法运行 AirCityExplorer
10. 再次重启
sudo systemctl reboot
11. 重启之后执行命令nvidia-smi
确定显卡驱动状态
Ubuntu/Debian 系统
1. 安装依赖包
sudo apt update
sudo apt install build-essential linux-headers-$(uname -r) libglvnd0 libglvnd-dev libvulkan1 -y
sudo apt install fontconfig -y
2. 屏蔽自带驱动
sudo touch /etc/modprobe.d/blacklist-nvidia-nouveau.conf
sudo bash -c "cat > /etc/modprobe.d/blacklist-nvidia-nouveau.conf" << EOF
blacklist nouveau
options nouveau modeset=0
EOF
3. 显卡支持
sudo touch /etc/modprobe.d/nvidia.conf
sudo bash -c "cat > /etc/modprobe.d/nvidia.conf" << EOF
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
EOF
4. 重建 initramfs image
sudo update-initramfs -u
5. 重启
sudo systemctl reboot
6. 停止 x windows 相关服务
sudo systemctl stop lightdm
7. 上传下载后的驱动文件到服务器
略
8. 为驱动文件添加执行权限
sudo chmod +x NVIDIA-Linux-x86_64-550.78.run
9. 运行文件安装驱动
sudo ./NVIDIA-Linux-x86_64-550.78.run -m=kernel-open
注意: 最后一步,提示是否自动配置 X Window 的时候,请选择"yes",否则会导致 vnc 无法调用独立显卡,从而无法运行 AirCityExplorer
10. 再次重启
sudo systemctl reboot
11. 重启之后执行命令nvidia-smi
确定显卡驱动状态
5. 【可选】配置 tigervnc
1. 安装配置 vncserver 服务
# 安装tigervnc服务端
sudo yum makecache
sudo yum install tigervnc-server tigervnc-server-module
# 配置为系统服务
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/
sudo sed -i 's+<USER>+freedo+g' /etc/systemd/system/vncserver@.service
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1.service
2. 设置 freedo 用户的 vnc 密码
vncpasswd
#Password:
#Verify:
#Would you like to enter a view-only password (y/n)? n
3. 重启系统,确认 vnc 服务正常启动
4. 使用 VNC Viewer 访问
VNC Viewer 下载地址: https://www.realvnc.com/en/connect/download/viewer/windows/
三、上传安装包到服务器任意目录并解压
1. 创建部署目录
sudo mkdir /deploy
sudo chown -R freedo.freedo /deploy
2. 上传安装包 DTS_Cloud_x86_6.1.0613.zip 到/deploy
3. 解压安装包
unzip DTS_Cloud_x86_6.1.0613.zip
四、申请授权
1. 使用 PCIdentifier 工具生成机器码
cd /deploy/DTSCloud/
./PCIdentifier
2. 提供机器码给飞渡,申请授权文件
3. 拿到授权文件,重命名并复制到指定目录
# 假如授权文件名称为68887736D6C4901B9F99B-cloud.lic,并且已上传到/deploy目录
cd /deploy
# 重命名授权文件为License.lic
mv 68887736D6C4901B9F99B-cloud.lic License.lic
# 放置授权文件到指定目录
mv License.lic DTSCloud/CloudServer/
五、拷贝依赖库到指定目录
1. 拷贝依赖库到指定目录
1.1 X86 架构
cd /deploy/
cd DTSCloud/dep/dll/
cp lib* ../../CloudRenderer/AirCityExplorer/Binaries/Linux/
- 备用
cd /deploy/ cd DTSCloud/dep/dll_extend/ cp lib* ../../CloudRenderer/AirCityExplorer/Binaries/Linux/
1.2 ARM64 架构
cd /deploy/
cd DTSCloud/dep/dll/
cp lib* ../../CloudRenderer/AirCityExplorer/Binaries/LinuxAArch64/
- 备用
cd /deploy/ cd DTSCloud/dep/dll_extend/ cp lib* ../../CloudRenderer/AirCityExplorer/Binaries/LinuxAArch64/
六、启动集群管理服务
名称 | 详情 |
---|---|
Cloud 集群管理服务: | CloudServer |
配置文件: | DTSCloud/CloudServer.conf |
启动脚本: | DTSCloud/startCloudServer.sh |
默认监听端口: | 8087/tcp |
日志文件: | /var/tmp/logs/Cloud/v6.1/CloudServer/CloudServer_terminal.log |
1. 修改配置文件 DTSCloud/CloudServer.conf
修改 serverIP 变量为本机 IP 地址
【可选】修改服务端口,默认 8087/tcp
2. 执行脚本,启动集群管理服务
cd /deploy/
cd DTSCloud/
./startCloudServer.sh
3. 【可选】配置为 systemd 服务,并开机启动
cd /deploy/
cd DTSCloud/
# 先停止脚本直接启动的服务
./stopCloudServer.sh
# 执行脚本自动配置服务
cd dep/
./makeService_CloudServer.sh
# 启动CloudServer服务
sudo systemctl start CloudServer.service
# 查看CloudServer服务状态
sudo systemctl status CloudServer.service
3. 访问实例管理页面[无渲染实例]
服务设置界面
系统维护界面 直接展示授权信息
七、启动渲染服务
名称 | 详情 |
---|---|
渲染服务: | NodeService |
配置文件: | DTSCloud/NodeService.conf |
启动脚本: | DTSCloud/startNodeService.sh |
日志文件: | /var/tmp/logs/Cloud/v6.1/NodeService/NodeService_terminal.log |
注意: 子节点只需要启动本 NodeService 服务,不需要启动 CloudServer 以及中继服务
1. 修改配置文件 DTSCloud/NodeService.conf,使渲染节点加入到集群管理服务中
1、 修改 serverIP 变量为集群管理服务的 IP 地址 2、 修改 serverPort 变量为集群管理服务的端口 - 【默认 8087 端口;启用 Https 时,默认 8089 端口】
2. 执行脚本,启动渲染实例
cd /deploy/
cd DTSCloud/
./startNodeService.sh
3. 【可选】配置为 systemd 服务,并开机启动
cd /deploy/
cd DTSCloud/
# 先停止脚本直接启动的服务
./stopNodeService.sh
# 执行脚本自动配置服务
cd dep/
./makeService_NodeService.sh
# 启动NodeService服务
sudo systemctl start NodeService.service
# 查看NodeService服务运行状态
sudo systemctl status NodeService.service
4. 添加工程数据并访问
- 上传工程数据到服务器上,这里使用自带demo数据,demo数据路径
DTSCloud/SDK/media/project/demo.acp
点击"工程管理",打开工程添加界面
复制粘贴之前上传的 acp 工程的绝对路径到"工程文件完整路径"中,点击"添加工程"
点击"云渲染",然后就可以跳转到视频流页面
5. 添加资源库
- 把下载的Linux专用资源库文件
DTS_Library_Linux_0111.pak
上传到服务器任意目录 配置资源库所在文件夹到NodeSerivce.conf配置文件中
重启NodeService服务使配置生效
cd /deploy/DTSCloud/ ./stopNodeService.sh ./startNodeService.sh
八、安装视频流中继服务
生产环境必须安装本服务 在需要跨网段访问的cloud服务的环境下,就需要部署中继coturn服务。 只有在同网段测试的情况下,不需要此服务。
coturn 是一个基于 TURN(Traversal Using Relay NAT)协议实现的用于在 NAT 网络下进行实时音视频通信的服务器软件。在网络层中,NAT 路由器会将源 IP 地址重写为自己的公网 IP 地址,而 TURN 服务器则可以通过中继数据包的方式,将经过 NAT 路由器的音视频数据转发到目标客户端,实现穿越 NAT 的效果,从而保证实时音视频通信的顺畅和稳定。
1. 安装 docker 服务
根据操作系统选择安装方法
KyLin V10 Server系统
sudo yum install docker -y
sudo systemctl --now enable docker
sudo systemctl start docker
CentOS/RHEL 系统
sudo yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce -y
sudo systemctl --now enable docker
sudo systemctl start docker
Ubuntu/Debian 系统
sudo apt update
sudo apt -y install docker.io
sudo systemctl --now enable docker
sudo systemctl start docker
2. 使 freedo 用户可运行 docker
# 使freedo用户可运行docker
sudo usermod -aG docker freedo
newgrp docker
3. 设置内核支持 ipv4 转发
sudo sed -i "s+net.ipv4.ip_forward=0+net.ipv4.ip_forward=1+g" /etc/sysctl.conf
sudo sysctl -p
4. 上传镜像到服务器
x86 架构镜像: https://installpackages.gbim.vip/docker_update/coturn-latest-amd64-20230510.tar.gz aarch64 架构镜像: https://installpackages.gbim.vip/docker_update/coturn-latest-arm64-20230511.tar.gz
5. 挂载镜像
tar zxvf coturn-latest-amd64-20230510.tar.gz
docker load < coturn-latest-amd64-20230510.tar
6. 编辑启动脚本,然后启动服务
默认使用
3478/tcp
和3478/udp
端口 如果要修改中继服务为其他端口,比如9999
,替换下面脚本中的
-p 3478:3478 \
为-p 9999:3478 \
脚本中的
-p 3478:3478/udp \
为-p 9999:3478/udp \
# 切换到部署目录,创建coturn目录
cd /deploy
mkdir coturn
# 创建coturn启动脚本
cat > start_coturn.sh << "EOF"
docker run -d \
--name freedo-coturn-01 \
--restart=always \
-e DETECT_EXTERNAL_IP=yes \
-e DETECT_RELAY_IP=yes \
-p 3478:3478 \
-p 3478:3478/udp \
coturn/coturn:latest \
-n --log-file=stdout \
--min-port=50000 \
--max-port=50100 \
--user=freedo:freedo \
--realm=cloud_rendering \
--lt-cred-mech
EOF
# 授予脚本执行权限
chmod +x start_coturn.sh
# 启动脚本
./start_coturn.sh
# 查看服务是否正常
sudo docker ps
7. 在浏览器端Cloud"服务设置"页面,启用中继服务
- 模式选择"UDP转发(默认)",当UDP端口无法使用时,可选择TCP转发
- 中继IP填写部署中继服务的服务器的IP地址
- 端口选择中继服务的对外监听端口,默认3478
- 用户名和密码均为
freedo
,如果想要修改本账户,请修改上一步的的脚本start_coturn.sh
中的--user=freedo:freedo
参数
8. 修改完配置之后,点击"保存配置",之后CloudServer服务会自动重启,从而导致所有实例自动重启
九、公网端口映射配置
1. 【联系网络管理人员配置端口】在出口路由器上映射8087/tcp
和3478/udp
端口到公网
8087/tcp 为 player 页面访问端口,保证页面和接口的正常访问 3478/udp 为 coturn 中继服务访问端口,保证视频流正常传输
本文档测试环境映射配置
内网 IP | 内网端口 | 映射 IP | 映射端口 |
---|---|---|---|
192.168.20.145 | 8087/tcp | 43.227.255.154 | 20535/tcp |
192.168.20.145 | 3478/udp | 43.227.255.154 | 13489/udp |
2. 根据端口映射配置,在浏览器端Cloud"服务设置"页面配置端口映射
- 在
服务地址
下面找到并勾选使用端口映射
- 在
使用端口映射
后面的空白输入框中填写映射后的 IP
- 在
服务地址
下面的端口8087映射
后的输入框中填写8087映射后的端口
- 在
中继服务
下面的端口3478映射
后的输入框中填写3478映射后的端口
3. 修改完配置之后,点击"保存配置",之后CloudServer服务会自动重启,从而导致所有实例自动重启
4. 通过映射之后的IP地址访问CloudMaster
把内网的
192.168.20.145:8087
修改为映射后的43.227.255.154:20535
十、配置超文本传输安全协议访问
1. 申请证书,推荐腾讯云免费证书
2. 申请完成之后,下载 nginx 证书
3. 上传下载的证书到服务器任意目录,并解压
4. 在浏览器端Cloud"服务设置"页面配置"HTTPS配置",启用 Https 服务
5. 修改完配置之后,点击"确定",之后CloudServer服务会自动重启,从而导致所有实例自动重启
6. 使用 https 访问集群管理页面
7. 点击视频流测试,会自动变成https协议
十一、常见问题与解决思路
1. 实例无法启动
- 检查是否已申请授权,并重命名为
License.lic
,并放置到指定目录 - 检查是否使用拥有 sudo 权限的普通用户运行 CloudServer 和 NodeService
- 检查是否安装 vulkan 相关 rpm 或者 deb包
- 集群环境下,若实例一直处于 starting 状态,尝试先停止实例,再启动实例
2. 无法访问页面
检查服务是否正常启动 检查命令
ps -ef|grep DTSCloud
检查系统防火墙是否关闭,或者放行 cloud api 的端口,默认 8087/tcp
3. player 页面正常的情况下无法获取视频流
问题描述: 卡在以下画面无法获取视频流
排查步骤:
- 未使用中继服务的情况下,请确认已完成系统防火墙的配置
通过浏览器打开 webrtc 调试地址
chrome://webrtc-internals/
,获取 webrtc 调试信息,确认访问中继服务的地址是否正确确认中继服务正常启动
确认从服务器本地可以访问映射之后的中继服务端口
确认客户机可以联通中继服务端口而不是被防火墙拦截
4. 实例卡死、性能问题
- 使用
htop
命令排查 cpu,查看各个 cpu 核心使用率
注意: htop 命令系统没有自带,请单独安装。
wget https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/x86_64/Packages/htop-3.0.5-4.ky10.x86_64.rpm
sudo rpm -ivh htop-3.0.5-4.ky10.x86_64.rpm
htop
- 使用
nvidia-smi
命令查看显卡运行状态
- 使用
free -m
命令查看内存使用
5. 中继服务无法访问问题
有些服务器修改了内核参数
net.ipv4.ip_forward=0
,关闭了IPv4 转发
,导致无法访问容器端口,从而无法访问容器部署的中继服务
修复方式
修改/etc/sysctl.conf
sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1
- 执行命令重载内核参数
sudo sysctl -p
- 重启 docker 服务
sudo systemctl restart docker
6. 离线安装的情况下,挂载本地 ISO 镜像
使用
root
用户执行以下操作
# 创建/mnt/ISO目录,并上传系统镜像iso文件到服务器的/mnt/ISO目录中
sudo mkdir /mnt/ISO
sudo mv Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso /mnt/ISO/
# 创建挂载目录
sudo mkdir /mnt/localISO
mount -o loop /mnt/ISO/Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso /mnt/localISO
# 设置ISO文件开机自动挂载
sudo bash -c "cat >> /etc/fstab" << "JIESHU"
/mnt/ISO/Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso /mnt/localISO iso9660 defaults 0 0
JIESHU
# 测试fstab配置文件,并挂载ISO文件
sudo mount -a
# 备份原repo文件
cd /etc/yum.repos.d/
sudo mkdir bak
sudo mv *.repo bak/
# 编写本地yum源文件,使用挂载的ISO文件中的yum源
sudo bash -c "cat > /etc/yum.repos.d/localISO.repo" << "JIESHU"
[ks10-sp2-iso]
name = Kylin Local ISO
baseurl = file:////mnt/localISO/
priority = 1
gpgcheck = 0
JIESHU
# 建立yum源缓存,测试yum源是否配置成功
sudo yum makecache