Selenium4 Dynamic Grid跨VM部署config.toml的host/port配置疑问
1. [server] 配置段host、port参数含义
这两个参数是跨VM分布式部署场景的专属配置,填的是当前Node节点自身的对外访问信息:
host:填当前Node所在VM的IP,必须是Hub节点能直接连通的地址(内网/公网IP都可以,根据你VM之间的网络模式选),作用是让Hub知道该往哪个地址发送调度指令、同步任务状态port:填Node服务在当前VM宿主机上暴露的监听端口。Node容器内部默认用5555端口做事件监听,你启动Node容器时通过-p参数把容器端口映射到宿主机的哪个端口,这里就填哪个端口。
如果Node和Hub跑在同一台机器、同一个docker网络内,这段配置直接注释即可,不需要填写。
2. config.toml是否需要放在运行Node的VM上
你的判断是正确的。
config.toml是Node节点的专属配置文件,只对加载它的Node进程生效:文件里[docker]段配置的是当前Node所在主机的Docker daemon连接地址、支持的浏览器镜像、录像镜像等和本机环境强绑定的内容,和Hub节点无关。每台部署Node的VM都需要存放一份适配本机环境的config.toml,启动Node容器时把该文件挂载到容器内/opt/selenium/config.toml路径即可生效,Hub节点不需要用到这个配置文件。
3. host参数是否填Hub的IP?port参数从哪获取
这里你理解反了,[server]段的host填的是Node自身的IP,不是Hub的IP。
要让Node连接到远端Hub,不需要在config.toml里填写Hub地址,而是在启动Node容器时通过环境变量传参指定Hub信息:
- 用
SE_EVENT_BUS_HOST指定Hub所在VM的IP - 用
SE_EVENT_BUS_PUBLISH_PORT指定Hub的事件发布端口,默认值为4442 - 用
SE_EVENT_BUS_SUBSCRIBE_PORT指定Hub的事件订阅端口,默认值为4443
上述两个端口是Hub启动时默认暴露的,只要你启动Hub容器时没有修改默认端口映射,直接使用默认值即可。
给你一个参考的Node启动命令:
docker run -d --name selenium-node \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /本地配置存放路径/config.toml:/opt/selenium/config.toml \ -e SE_EVENT_BUS_HOST=Hub节点的IP \ -e SE_EVENT_BUS_PUBLISH_PORT=4442 \ -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \ selenium/node-docker:4.3.0-20220706
补充一个常见踩坑点:部署前先在Node所在VM上测试连通Hub的4442、4443端口,再到Hub所在VM上测试连通你配置的Node IP+端口,提前放开防火墙、安全组的对应规则,避免出现Node注册不上Hub的问题。
内容的提问来源于stack exchange,提问作者HemanthRaja
相关产品推荐
相关产品推荐

