DTS Cloud For Linux 安装文档

实测环境

系统: Kylin Linux Advanced Server V10 (Sword)(SP2) 架构: X86_64 用户: freedo[具有sudo权限]


一、安装包准备

分类 系统架构 组件 安装包名称 下载地址 备注
DTS Cloud x86_64 DTS Cloud DTS Cloud_x86_0912.zip https://pan.baidu.com/s/1sJJPm9J8e0BNpziPQu_FPA?pwd=bjpu
DTS Cloud ARM64 DTS Cloud DTS Cloud_arm64_0912.zip https://pan.baidu.com/s/1HSyF1KjF_bTwO5TOnxsK2g?pwd=xpz8
中继服务 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-525.116.03.run https://pan.baidu.com/s/1JEqonlVIgdveURtQ4ytaDQ?pwd=he8x
显卡驱动 ARM64 NVIDIA 显卡驱动 NVIDIA-Linux-aarch64-525.116.04.run https://pan.baidu.com/s/1Y20wYbfHwtonVYLfcZOVjA?pwd=haxr
显卡驱动 x86_64 NVIDIA 显卡驱动【Tesla 系列专用】 NVIDIA-Linux-x86_64-535.54.03.run https://pan.baidu.com/s/1LvBEcxrdI_ekzMSsxLNytg?pwd=bhku
显卡驱动 ARM64 NVIDIA 显卡驱动【Tesla 系列专用】 NVIDIA-Linux-aarch64-535.54.03.run https://pan.baidu.com/s/1u9A_PZ0x6I_Y_hb9u0DpwA?pwd=k9cj

二、初始化服务器

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

Img


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支持  否则应用无法识别显卡
sudo yum -y install 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
sudo systemctl stop vncserver@\:1
7. 上传下载后的驱动文件到服务器

8. 为驱动文件添加执行权限
sudo chmod +x NVIDIA-Linux-x86_64-525.116.03.run
9. 运行文件安装驱动
sudo ./NVIDIA-Linux-x86_64-525.116.03.run -m=kernel-open

Img

Img

Img

注意: 最后一步,提示是否自动配置 X Window 的时候,请选择"yes",否则会导致 vnc 无法调用独立显卡,从而无法运行 AirCityExplorer

Img

10. 再次重启
sudo systemctl reboot
11. 重启之后执行命令nvidia-smi确定显卡驱动状态

Img


Ubuntu/Debian 系统

1. 安装依赖包
sudo apt update
sudo apt install -y build-essential linux-headers-$(uname -r) libglvnd0 libglvnd-dev




# 安装vulkan支持  否则应用无法识别显卡
sudo apt install -y libvulkan1
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-525.116.03.run
9. 运行文件安装驱动
sudo ./NVIDIA-Linux-x86_64-525.116.03.run -m=kernel-open

Img

Img

Img

注意: 最后一步,提示是否自动配置 X Window 的时候,请选择"yes",否则会导致 vnc 无法调用独立显卡,从而无法运行 AirCityExplorer

Img

10. 再次重启
sudo systemctl reboot
11. 重启之后执行命令nvidia-smi确定显卡驱动状态

Img


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 服务正常启动

Img

4. 使用 VNC Viewer 访问

VNC Viewer 下载地址: https://www.realvnc.com/en/connect/download/viewer/windows/

Img Img


三、上传安装包到服务器任意目录并解压

1. 创建部署目录

sudo mkdir /deploy
sudo chown -R freedo.freedo /deploy

2. 上传安装包 AirCityCloud_x86_0912.zip 到/deploy

3. 解压安装包

unzip AirCityCloud_x86_0912.zip

四、申请授权

1. 使用 PCIdentifier 工具生成机器码

cd /deploy/AirCityCloud/
./PCIdentifier

Img

2. 提供机器码给飞渡,申请授权文件

Img

3. 拿到授权文件,重命名并复制到指定目录

Img

# 假如授权文件名称为68887736D6C4901B9F99B-cloud.lic,并且已上传到/deploy目录

cd /deploy

# 重命名授权文件为License.lic
mv 68887736D6C4901B9F99B-cloud.lic License.lic

# 放置授权文件到指定目录
mv License.lic AirCityCloud/CloudServer/

五、拷贝依赖库到指定目录

1. 拷贝依赖库到指定目录

1.1 X86 架构

cd /deploy/
cd AirCityCloud/dep/dll/
cp lib* ../../CloudRenderer/AirCityExplorer/Binaries/Linux/

1.2 ARM64 架构

cd /deploy/
cd AirCityCloud/dep/dll/
cp lib* ../../CloudRenderer/AirCityExplorer/Binaries/LinuxAArch64/

六、启动集群管理服务

名称 详情
Cloud 集群管理服务: CloudServer
配置文件: AirCityCloud/CloudServer.conf
启动脚本: AirCityCloud/startCloudServer.sh
默认监听端口: 8087/tcp

1. 修改配置文件 AirCityCloud/CloudServer.conf

  1. 修改 serverIP 变量为本机 IP 地址

    Img

  2. 【可选】修改服务端口,默认 8087/tcp

    Img

2. 执行脚本,启动集群管理服务

cd /deploy/
cd AirCityCloud/

./startCloudServer.sh

Img

3. 【可选】配置为 systemd 服务,并开机启动

cd /deploy/
cd AirCityCloud/

# 先停止脚本直接启动的服务
./stopCloudServer.sh

# 执行脚本自动配置服务
cd dep/
./makeService_CloudServer.sh

# 启动CloudServer服务
sudo systemctl start AirCityCloudServer.service

# 查看CloudServer服务状态
sudo systemctl status AirCityCloudServer.service

Img

3. 访问实例管理页面[无渲染实例]

Img


七、启动渲染服务

名称 详情
渲染服务: NodeService
配置文件: AirCityCloud/NodeService.conf
启动脚本: AirCityCloud/startNodeService.sh

注意: 子节点只需要启动本 NodeService 服务,不需要启动 CloudServer 以及中继服务

1. 修改配置文件 AirCityCloud/NodeService.conf,使渲染节点加入到集群管理服务中

1、 修改 serverIP 变量为集群管理服务的 IP 地址 2、 修改 serverPort 变量为集群管理服务的端口 - 【默认 8087 端口;启用 Https 时,默认 8089 端口】

Img

2. 执行脚本,启动渲染实例

cd /deploy/
cd AirCityCloud/

./startNodeService.sh

Img

3. 【可选】配置为 systemd 服务,并开机启动

cd /deploy/
cd AirCityCloud/

# 先停止脚本直接启动的服务
./stopNodeService.sh

# 执行脚本自动配置服务
cd dep/
./makeService_NodeService.sh

# 启动NodeService服务
sudo systemctl start AirCityNodeService.service

# 查看NodeService服务运行状态
sudo systemctl status AirCityNodeService.service

Img

4. 添加工程数据并访问

  1. 上传工程数据到服务器上
  2. 点击"设置参数",打开实例设置界面

    Img

  3. 复制粘贴之前上传的 acp 工程的绝对路径到工程空白框中

    Img

  4. 点击确定,然后本实例就会自动启动

    Img

  5. 点击"视频流测试",然后就可以跳转到视频流页面

    Img


八、安装视频流中继服务

在需要跨网段访问的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

Img

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

Img

6. 编辑启动脚本,然后启动服务

默认使用 3478/tcp 和 3478/udp 端口 如果要修改中继服务为其他端口,比如 9999,替换下面脚本中的 -p 3478:3478 \ -p 3478:3478/udp \-p 9999:3478 \ -p 9999:3478/udp \

cd /deploy
mkdir 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=48100 \
--max-port=48200 \
--user=freedo:freedo \
--realm=feidu \
--lt-cred-mech
EOF

# 授予脚本执行权限
chmod +x start_coturn.sh

# 启动脚本
./start_coturn.sh

# 查看服务是否正常
sudo docker ps

Img

7. 配置 AirCityCloud/Config/TurnServer.conf 配置文件,启用中继服务

Img

1. 修改turnServerPort变量为上一步启动的中继服务的端口,默认3478
2. 修改useTurnServer变量,yes表示启用中继服务,no表示不启用
3. 修改useTCP变量,默认使用udp协议进行数据转发,yes表示使用TCP协议

8. 重启服务使中继服务配置生效

sudo systemctl restart AirCityCloudServer.service

九、公网端口映射配置

1. 【联系网络管理人员配置端口】在出口路由器上映射8087/tcp3478/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. 根据端口映射配置,修改 AirCityCloud/Config/TurnServer.conf

Img

  1. 修改useMappingServeryes
  2. 修改mappingServerIP为映射后的 IP
  3. 修改portTurnMapping3478/udp映射后的端口
  4. 修改playerPortMapping8087/tcp映射后的端口

3. 重启 CloudServer 服务使端口映射配置生效

sudo systemctl restart AirCityCloudServer.service

4. 获取集群管理地址

sudo systemctl status AirCityCloudServer.service

Img

5. 使用上一步获取的映射后的地址访问集群管理页面

Img


十、配置超文本传输安全协议访问

1. 申请证书,推荐腾讯云免费证书

2. 申请完成之后,下载 nginx 证书

Img

3. 上传下载的证书到服务器任意目录,并解压

Img

4. 配置 AirCityCloud/Config/Https.conf 配置文件,启用 Https 服务

Img

5. 重启服务使 Https 配置生效

sudo systemctl restart AirCityCloudServer.service

6. 使用 https 访问集群管理页面

Img Img

7. NodeService 服务配置修改【所有节点服务配置都要修改】

注意: 当启用 Https 的时候,实例管理服务的端口为 8089 端口,所以需要修改配置文件中的端口


Img

8. 重启 NodeService 服务

sudo systemctl restart AirCityNodeService.service

十一、系统配置文件共享

使用 NFS 方式进行文件共享


本文档中的用户的 uid 为 9988 gid 为 9988 共享目录和挂载目录均为 /deploy/shareData

以上参数根据系统实际情况进行灵活修改

1、环境准备

IP 功能
192.168.20.145 NFS 服务端
192.168.20.139 NFS 客户端

1. 服务端安装 NFS

KyLinServer/CentOS/RHEL 系统
sudo yum install nfs-utils
Ubuntu/Debian 系统
sudo apt-get update
sudo apt-get install nfs-kernel-server

2. 客户端安装 NFS

KyLinServer/CentOS/RHEL 系统
sudo yum install nfs-utils
Ubuntu/Debian 系统
sudo apt-get update
sudo apt-get install nfs-common

2、服务端启动 NFS 服务

  1. 配置防火墙【若 firewalld 已禁用,跳过本步骤】
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload
  1. 创建共享目录并授权
mkdir /deploy/shareData
chmod 777 /deploy/shareData
  1. 修改 nfs 配置文件
# anonuid=9988,anongid=9988 若客户端用户的uid/gid有变化,请自行修改
sudo bash -c "cat >> /etc/exports" << "JIESHU"
/deploy/shareData 192.168.20.0/24(rw,sync,insecure,no_subtree_check,no_root_squash,anonuid=9988,anongid=9988)
JIESHU
  1. 启动 nfs 服务,并配置开机启动
sudo systemctl start nfs.service
sudo systemctl enable nfs.service

3、客户端挂载 NFS 共享目录,并配置开机自动挂载

  1. 确认可正常访问共享
showmount -e 192.168.20.145
  1. 配置开机自动挂载
mkdir /deploy/shareData

sudo bash -c "cat >> /etc/fstab" << "JIESHU"
192.168.20.145:/deploy/shareData /deploy/shareData nfs4 defaults 0 0
JIESHU
  1. 挂载目录
sudo mount -a
sudo df -hT
  1. 测试
# 服务端
cd /deploy/shareData
touch ThisIsServer

# 客户端
cd /deploy/shareData
touch ThisIsClient

十二、常见问题与解决思路

1. 实例无法启动

  1. 检查是否已申请授权,并重命名为 License.lic,并放置到指定目录
  2. 检查是否使用拥有 sudo 权限的普通用户运行 CloudServer 和 NodeService
  3. 检查是否安装 vulkan 相关 rpm 包
  4. 集群环境下,若实例一直处于 starting 状态,尝试先停止实例,再启动实例

2. 无法访问页面

  1. 检查服务是否正常启动 检查命令ps -ef|grep AirCityCloud

    Img

  2. 检查系统防火墙是否关闭,或者放行 cloud api 的端口,默认 8087/tcp

    Img

3. player 页面正常的情况下无法获取视频流

问题描述: 卡在以下画面无法获取视频流

Img Img

排查步骤:

  1. 未使用中继服务的情况下,请确认已完成系统防火墙的配置
  2. 通过浏览器打开 webrtc 调试地址 chrome://webrtc-internals/,获取 webrtc 调试信息,确认访问中继服务的地址是否正确

    Img

  3. 确认中继服务正常启动

    Img

  4. 确认从服务器本地可以访问映射之后的中继服务端口

    Img

  5. 确认客户机可以联通中继服务端口而不是被防火墙拦截

    Img

4. 实例卡死、性能问题

  1. 使用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

Img

  1. 使用nvidia-smi命令查看显卡运行状态

Img

  1. 使用free -m命令查看内存使用

Img

5. 中继服务无法访问问题

有些服务器修改了内核参数 net.ipv4.ip_forward=0,关闭了 IPv4 转发,导致无法访问容器端口,从而无法访问容器部署的中继服务

  • 修复方式

  • 修改/etc/sysctl.conf

sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1
  1. 执行命令重载内核参数
sudo sysctl -p
  1. 重启 docker 服务
sudo systemctl restart docker

results matching ""

    No results matching ""

    results matching ""

      No results matching ""