pve-agent websockify解决vnc问题

前情提要

PVE在使用vncproxy接口时发现其最大接入100个端口,在实际场景可能造成瓶颈。

绕过方案

利用PVE qemu的配置args: -vnc ip:port参数,可以为虚拟机添加一个专用的vnc端口。

如果合理利用这个配置,每一个虚拟机都可以有一个独立的端口而不收到API接口的限制。

但是其无法被web端识别,所以需要使用websockify进一步封装。

1
docker run -it --name websockify -p 8080:8080 -v VNC_HTML:/data --rm jokin1999/websockify:amd64-20221020 --web /data :8080 --token-plugin JSONTokenApi --token-source "http://192.168.90.20:8080/api/v1/vnc/%s"

以上述方法运行websockify可以对虚拟机的vnc端口进行代理,从而使得novnc识别vnc的tcp socket。

同时,需要对--token-source参数进行封装,%s是websockify请求代理源地址的token参数,这个API地址需要范围一个json,例如:

1
2
3
4
{
    "host": "localhost",
    "port": 10001
}

Built with Hugo
主题 StackJimmy 设计