背景
目前项目中,管理的实例底层为虚拟机,而在用户或运维人员管理具体的实例时,需另外启动VNC Viewer客户端才能配置实例,增加了操作复杂性,所以准备采用web vnc的方式,更快捷更方便的在网页上操作
目标
在项目页面中,选择相应的实例,点击远程进入vnc页面
方案
1、项目所在服务器上(liunx系统)部署novnc服务,前台通过访问url的方式进入vnc页面
2、因为是内网项目,所以首先需要获取novnc的离线安装包及其依赖包,这里我整理好了,有需要的可以下载(里面附带一键安装的脚本)
(链接:https://pan.baidu.com/s/1jD3f7mzfd5aZHysHwK8uLQ 提取码:v70u)
3、部署完成后,在/usr/share/novnc/conf下创建文件:tokens.conf,里面的内容格式为:虚拟机标识: ip:端口号,注意虚拟机标识的冒号后面有空格哈,一条虚拟机一行
4、前台点击某个实例,只需访问url(地址附带虚拟机标识参数)即可进入vnc页面
5、如果是在线项目,无需离线部署,请看如下的部署步骤:
部署步骤
1、在线安装novnc
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum install novnc
2、设置novnc配置文件
mkdir -p /usr/share/novnc/conf && cd /usr/share/novnc/conf
vi tokens.conf
tokens.conf的内容举例如下:
host1: 192.168.1.10:8001
host2: 192.168.1.11:8002
这里的host1作为虚拟机标识可随意设置
格式要求为:虚拟机标识: ip:端口号
注意标识冒号后面有空格
3、生成证书和密钥以供 Websockify 加载
openssl req -x509 -nodes -newkey rsa:2048 -keyout /usr/share/novnc/conf/self.pem -out /usr/share/novnc/conf/self.pem -days 365 -batch
4、websockity实现代理到目标机器,这里设置的端口号为23017,可随意修改,可以理解为启动后novnc的服务端口就是此端口
websockify -D --web=/usr/share/novnc/ --cert=/usr/share/novnc/conf/self.pem 23017 --target-config=/usr/share/novnc/conf/tokens.conf
完成后验证效果
在浏览器输入:https://novnc所在服务器地址:novnc的服务端口/vnc_auto.html?path=/conf?token=虚拟机标识