一、技术架构



1.1 接入层


选用高性能的 Nginx 来提供统一接入服务,主要使用其反向代理服务:



1.2 应用层


Node Web Application

提供了一个漂亮的 Web 界面来方便用户发起远程连接并启动配置在 Windows Server 上的 RemoteApp。



guacamole-client

与用户实际交互的部分,它主要将用户的实际远程连接信息传递给 guacd 服务。


1.3 数据层


选用 MySQL 存储数据,用以存储日志、用户信息以及 WebDriver 节点等。


1.4 服务层


guacdGuacamole 的核心,它动态加载对远程桌面协议的支持,并根据从 guacamole-client 收到的指令来连接到远程桌面。


二、配置详解


F2etest-web 主要包含以下 4 个配置文件:


2.1 免登配置


配置文件位置:/etc/guacamole/noauth-config.xml

由于官方版本的 Guacamole 有登录限制,我们基于官方版进行了简单的定制和增强。


每一条 config 对应界面上一个应用,其格式如下:


<configs>
    <config name="f2etest-ie8" protocol="rdp">
        <param name="hostname" value="192.168.56.102" />
        <param name="port" value="3389" />
        <param name="enable-drive" value="true" />
        <param name="drive-path" value="/home/guacdshare" />
    </config>
</configs>


参数释义



2.2 应用配置


配置文件位置:/home/f2etest-web/conf/app.json


数组中每一条记录对应界面上一个应用,其格式示例如下:


[
  {
    "id": "hostsshare",
    "name": "hosts",
    "server": "f2etest-ie11",
    "program": "c:\\app\\hostsshare.bat"
  },
  {
    "id": "ie8",
    "name": "IE 8",
    "server": "f2etest-ie8",
    "program": "c:\\app\\ie8.bat"
  },
  {
    "id": "ie9",
    "name": "IE 9",
    "server": "f2etest-ie9",
    "program": "c:\\app\\ie9.bat"
  }
]


参数释义



2.3 服务器配置


配置文件位置:/home/f2etest-web/conf/server.json


数组中每条数据对应一台 Windows 服务器。


[
  {
    "id": "f2etest-ie8",
    "ip": "10.0.0.1",
    "remoteApp": false
  },
  {
    "id": "f2etest-ie9",
    "ip": "10.0.0.2",
    "remoteApp": false
  },
  {
    "id": "f2etest-ie10",
    "ip": "10.0.0.3",
    "remoteApp": true
  }
]


参数释义



2.4 站点配置


配置文件位置:/home/f2etest-web/conf/site.json


NodeJS Web 的站点配置文件:


{
    "port": 3000,
    "name": "F2eTest",
    "about": "浏览器云测平台",
    "icon": "/favicon.ico",
    "dbHost": "127.0.0.1",
    "dbUser": "root",
    "dbPass": "",
    "dbTable": "f2etest",
    "clientApiKey":"f2etest",
    "guacamoleApi": "http://127.0.0.1/guacamole/client.xhtml",
    "footer": "",
    "wdEnabled": false,
    "wdCheckNodesInterval": 5000,
    "wdCheckNodesParallelLimit": 16
}


参数释义