首页 > 解决方案 > GGR 和 Selenoid 设置问题 - 无法在需要 selenoid 服务器机器上运行测试

问题描述

我对 GGR 和 Selenoid 有一些问题。我尝试设置并遵循文档,以下是我尝试在 Linux 机器上设置 GGR 的两种方法。我们有三台服务器 selenoid1、selenoid2 和 selenod3。我在 selenoid3 服务器上配置 GGR

  1. 根据公司提供的文档进行设置以配置 GGR

配额文件和htpasswd按照官网描述创建,配额文件包含主机selenoid1和selenoid2服务器,selenoid3作为GGR服务器

在所有三个服务器上启动 Selenoid: docker run -d --name selenoid -p 4444:4444 -e TZ=Etc/GMT+0 -e OVERRIDE_VIDEO_OUTPUT_DIR=/usr/local/selenoid/video/ -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/selenoid/config:/etc/selenoid/:ro -v /usr/local/selenoid/logs:/opt/selenoid/logs -v /usr/local/selenoid/video:/opt/selenoid/video aerokube/selenoid:latest-release -video-output-dir /opt/selenoid/video -timeout 3m0s -limit 8

在 selenoid3 服务器上启动 GGR: docker run -d --name ggr -p 4445:4444 -v /etc/grid-router:/etc/grid-router:ro aerokube/ggr:latest-release -guests-allowed -guests-quota /etc/grid-router/quota/auto

在 selenoid3 服务器上启动 GGR-UI: docker run -d --name ggr-ui -p 8888:8888 -v /etc/grid-router/quota/:/etc/grid-router/quota:ro aerokube/ggr-ui:latest-release

在所有三个服务器上启动 Selenoid-UI: docker run -d --name selenoid-ui -p 8081:8080 --link ggr-ui aerokube/selenoid-ui:latest-release --selenoid-uri http://ggr-ui:8888

使用上面的配置,当我运行测试时curl http://auto:password@#{ggr_servername}:4445/status,我得到404 page not found它没有连接到 GGR 并给出500错误。我还重新启动了所有容器,但仍然出现同样的错误

GGR-ui 日志:

2021/07/02 21:10:32 [INIT] [Loading quota files from /etc/grid-router/quota]
2021/07/02 21:10:32 [INIT] [Listen on :8888]

GGR 日志:

2021/07/02 22:00:28 [-] [-] [INIT] [-] [-] [-] [-] [-] [-] [Users file is "/etc/grid-router/users.htpasswd"]
2021/07/02 22:00:28 [-] [-] [INIT] [-] [-] [-] [-] [-] [-] [Loading configuration files from "/etc/grid-router/quota"]
  1. 根据我基于 GGR 网站上的官方指南的理解

配额文件和htpasswd按照官网描述创建,配额文件包含主机selenoid1和selenoid2服务器,selenoid3作为GGR服务器

在所有三台服务器上启动 Selenoid: docker run -d --name selenoid -p 4444:4444 -e TZ=Etc/GMT+0 -e OVERRIDE_VIDEO_OUTPUT_DIR=/usr/local/selenoid/video/ -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/selenoid/config:/etc/selenoid/:ro -v /usr/local/selenoid/logs:/opt/selenoid/logs -v /usr/local/selenoid/video:/opt/selenoid/video aerokube/selenoid:latest-release -video-output-dir /opt/selenoid/video -timeout 3m0s -limit 8

在 selenoid3 服务器上启动 GGR: docker run -d --name ggr -v /etc/grid-router:/etc/grid-router:ro aerokube/ggr:latest-release -guests-allowed -guests-quota /etc/grid-router/quota/auto

在 selenoid3 服务器上启动 GGR-UI: docker run -d --name ggr-ui -p 8888:8888 -v /etc/grid-router/quota/:/etc/grid-router/quota:ro aerokube/ggr-ui:latest-release

在所有三个服务器上启动 Selenoid-UI: docker run -d --name selenoid-ui -p 8081:8080 aerokube/selenoid-ui:latest-release --selenoid-uri http://#{ggr_servername}:8888

日志 GGR:

2021/07/02 20:51:55 [STATUS] [Failed to fetch status: Get http://#{selenoid1_name}:4444/status: dial tcp: lookup #{selenoid1} on #{selenoid1_ip}: no such host] [172.17.0.1]
2021/07/02 20:51:56 [SHUTDOWN] [Shutting down in 5m0s]
2021/07/02 21:05:00 [-] [-] [INIT] [-] [-] [-] [-] [-] [-] [Users file is "/etc/grid-router/users.htpasswd"]
2021/07/02 21:05:00 [-] [-] [INIT] [-] [-] [-] [-] [-] [-] [Loading configuration files from "/etc/grid-router/quota"]

日志抱怨 Selenoid1 没有 Selenoid2 的此类详细信息,我假设 Selenoid2 正在工作并成功连接。

日志 GGR-UI

2021/07/02 22:54:37 [INIT] [Loading quota files from /etc/grid-router/quota]
2021/07/02 22:54:37 [INIT] [Listen on :8888]

通过上面的配置,当我运行时,curl http://auto:password@#{ggr_servername}:4444/status我得到了预期的 JSON 响应,并且我能够运行测试,但是测试正在 Selenoid3 服务器上执行,chrome 浏览器和 vnc 容器在 selenoid3 服务器上启动,我期待测试将在 Selenoid1 或 Selenoid2 上执行服务器,但这永远不会发生。我不确定我的配置有什么问题,是我遗漏了什么吗?

我感谢您的帮助!!!

标签: selenium-webdriverselenoid

解决方案


推荐阅读