为什么需要分部署部署
对于一般数据量不太或者对浏览器要求不多样化没必要多台机器部署。多台机器部署主要解决以下。
数据量比较大,一台机器无法承受所有的请求
需要不同的浏览器环境
可远程调用,把业务代码和浏览器操作分离
环境准备
我们需要提前准备多台机器(可以是虚拟机)。由于是java的所以需要配置相对来说搞一些,个人建议最低2核4G
主机名 | IP | 配置 | 描述 |
test-001 | 192.168.40.5 | 2核4G | 主节点 + 任务节点(chromedriver + chrome浏览器) |
test-002 | 192.168.40.6 | 2核4G | 任务节点(chromedriver + chrome浏览器) |
开始部署
架构
下载
官方下载地址:https://www.selenium.dev/downloads/ ,目前官方最新版本是4.4
启动
在启动之前chrome浏览器和chromedriver都要安装好,具体可以参考文章:【Selenium学习笔记】介绍和安装
主节点启动命令如下
nohup java -jar selenium-server-4.4.0.jar hub > hub.log & nohup java -jar selenium-server-4.4.0.jar node --detect-drivers true --subscribe-events "tcp://127.0.0.1:4443" --publish-events "tcp://127.0.0.1:4442" > node.log &
任务节点启动命令如下
nohup java -jar selenium-server-4.4.0.jar node --detect-drivers true --subscribe-events "tcp://192.168.40.5:4443" --publish-events "tcp://192.168.40.5:4442" > node.log &
此时你们通过 http://192.168.40.5:4444 就可以看到如下的界面
Nginx配置
如果你想配置一个对外面暴露服务,就需要使用类似Nginx这一类服务。主节点配置如下
server { listen 80; server_name sub.yourdomain.com; location / { proxy_pass http://127.0.0.1:4444; proxy_read_timeout 300s; proxy_connect_timeout 300s; keepalive_timeout 300s; expires 0; proxy_http_version 1.1; proxy_buffering on; proxy_cache off; proxy_set_header Connection ""; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; } }