AIP Web 代理

AIP的作业,如VNC、JupyterLab、VSCode等通过HTTP协议提供服务的应用,可以使用AIP自带的Web代理为通过门户访问集群的用户提供服务, 而不用对外暴露计算节点。

安装

在用户访问的前端服务器上(如天纺安装的服务器、AIP门户安装的服务器),解压AIP包,然后运行:./crvproxy-install (命令可以带一些参数,详见 ./crvproxy-install –help) 安装后的服务名为:crvproxy

安装后/opt/skyformai/etc/vncsub.yaml里的两个参数被修改:

  1. pp: 这个参数指向crvproxy的入口,如:https://192.168.10.10:1443,如果系统部署了多台天纺服务器,用户接入使用虚IP,把修改这个参数改成虚拟IP。vncsub生成的URL会指向这个IP地址

  2. ppapi:这个是用户动态修改转发的API入口,是从集群内部(vncsub)可以访问的地址。如: http://192.168.10.10:1444,如果部署了多台天纺服务器,每台服务器的crvproxy配置API地址都必须列出,以实现高可用

vncsub.yaml的例子:

pp: https://192.168.10.179:1443
ppapi:
- http://192.168.10.179:1444

这些参数可以直接运行vncsub来查看:

$ vncsub
Usage: vncsub [-geometry MxN] [-vnc vncserver_dir] [-vglrun|-novglrun] [-xstartup script] [scheduler_submit_options] [-command] [desktop] job_command ...
Common parameters:
  Web forwarding proxy: https://192.168.10.179:1443
    proxy API URL: http://192.168.10.179:1444
  Session geometry: -geometry 1900x1060
  VNC desktop autokill: Yes
  vncserver directory: /opt/skyformai/etc/skyformcrv/bin
  Graphics compression (0-9): 5
  CRV port: 16000
  Desktop scaling mode: remote

crvproxy-install的参数

./crvproxy-install [--port=front_port] [--sslkey=ssl_keypath] [--sslcert=ssl_certfile]

–port 定义对外服务的端口,这个端口为用户访问作业服务的端口,缺省为1443,这个端口必须与vncsub.yaml里配置的一致。

–sslkey 定义对外服务使用HTTPS时使用的SSL key文件路径。

–sslcert 定义对外服务使用HTTPS时使用的SSL证书文件路径。

排错

查看已配置的转发:curl http://<api_url>/api/routes,具体API参考:https://github.com/jupyterhub/configurable-http-proxy?tab=readme-ov-file#using-the-rest-api

通过vncsub提交的作业桌面共享

桌面共享是通过生成特定的crvproxy转发实现的,这样可以随时删除这个转发配置,从而删除共享。桌面共享管理使用AIP内置的命令vncurl实现。

生成共享

vncurl -k [-r] -j 作业号 需要共享的用户名。-r 是生成只读,不可操作的共享。

例子:

$ vncsub desktop                       # 启动一个桌面
Job 200916 has been submitted to the default queue [medium].
$ cread 200916                         # 获取桌面链接
Messages posted to jobID 200916
POST_TIME: Mar  7 11:03:07  MESSAGE: https://192.168.10.100:1443/job/8000d7977eea3782e686724c5ecddbf5/crv.html?path=?token=token200916&autoconnect=true&password=T9Xp9JQt9vryt2G01Lb41ijJlI3imJg5&quality=9&compression=5&vncip=192.168.10.22&vncport=5901&localip=192.168.10.22&localport=5901&resize=remote&mark=30

$ vncurl -k -r -j 200916 cadmin        # 生成与用户cadmin共享的只读桌面
https://192.168.10.100:1443/job/8000d7977eea3782e686724c42cbda33/crv.html?path=?token=token200916&autoconnect=true&password=T9Xp9JQt9vryt2G01Lb41ijJlI3imJg5&quality=9&compression=5&resize=remote&mark=30

删除共享

vncurl -d -j 作业号 共享的用户名

例子:

$ vncurl -d -j 200916 cadmin         # 删除共享链接