windows阿里云服务器UE5像素流公网部署第一步
服务器、硬件设备、node.js,测试时防火墙全部关闭,且登录服务器调试时开通所有端口,且开通tcp,udp协议,显卡是非常重要的可以现在服务器上运行,就知道是否支持
第二步
可能没有启动实列,可以自建一个启动实例.bat文件、并放入如下内容,或者对
exe文件创建一个快捷方式
@echo off
start D:\YingJiApp\Windows\YingJiProject.exe -ResX=1920 -ResY=1080 -AudioMixer -PixelStreamingIP=41.103.95.113 -PixelStreamingPort=9999 -AllowPixelStreamingCommands -log -RenderOffScreen
你需要修改你的像素流实例文件路径,以及公网IP及端口,然后运行启动实例.bat
第三步
在该文件夹下修改config.json
修改成公网IP
第四步
第四步运行
Start_WithTURN_SignallingServer.ps1,这就打完收工了
第五步 如何判断turn服务器成功
可以使用telnet查看端口是否以开启,以及运行后看到如下结果,就会显示成功
telnet ip port
第六步
这样就可以公网访问了
-
注意 -
必须要开通udp协议
-
config.json的StreamerPort与 启动实例.bat端口PixelStreamingPort要一致
第七步 运行Matchmaker
复制一下Matchmaker 文件夹,到目录,可以看到,其实是一个node服务,先运行setup.bat,然后再运行run.bat
matchmaker是用来做多实例部署的,里面的核心代码如下:
// 动态的获取可连接的信令服务,该服务其实是webSocket连接,可以根据需要动态的写接口
function getAvailableCirrusServer() {
for (cirrusServer of cirrusServers.values()) {
if (cirrusServer.numConnectedClients === 0 && cirrusServer.ready === true) {
if (cirrusServer.hasOwnProperty('lastRedirect')) {
if (((Date.now() - cirrusServer.lastRedirect) / 1000) < 10)
continue;
}
cirrusServer.lastRedirect = Date.now();
return cirrusServer;
}
}
console.log('WARNING: No empty Cirrus servers are available');
return undefined;
}
app.get('/url', (req, res) => {
cirrusServer = getAvailableCirrusServer();
if (cirrusServer != undefined) {
// 地址重定向res.redirect(`http://${cirrusServer.address}:${cirrusServer.port}/`);
res.json({code: 200, data: `${cirrusServer.address}:${cirrusServer.port}`, message: 'success'})
console.log(`Redirect to ${cirrusServer.address}:${cirrusServer.port}`);
} else {
res.json({code: 200, data: '', message: '空'})
}
})
他其实就是进行了转发,或者说动态的获取可用的信令服务器接口
第八步 复制多份windows文件,如下Window2,Window3,Window4,Window5,Window6,并复制且修改启动实例2,3,4,5,6端口,如第二步。第三步一样修改端口,分别启动
- 最终这就是多实例部署了,哦哦注意
这里要改为true
第九步 集群部署
上面的差不多多实例部署完成了,但是还差了一点,你的显卡如果是RTX系列的话,会发现,像素流应用最多只能部署四个,再多GPU利用率可能就挂了,这该怎么办呢,那么就要说到集群部署以及性能优化了,这个方法太核心了,等我心情好的时候再写吧
集群部署又分为两种方式
- 第一种:每一台服务器都是单独的实体都有一个Matchmaker服务,前端通过查询不同的matchmaker服务查找可用的像素流服务器
- 第二种:所有的服务器都是通过同一个Matchmaker服务进行一个中转,及所有
config.json文件中MathchmakerPort字段与MatchmakerAddress字段一致,从而达到一个Matchmaker服务服务与多个像素流服务