如何为Selenium网格配置Nomad作业
我正在尝试在Hashicorp Nomad中设置Selenium网格,但我不知道如何使网络工作。 我想要的是有一个selenium hub和8个chrome节点。我发现,如果将节点任务放入其自己的组中,则只能对节点任务进行多次分配 在本地运行时,我会像这样启动网格:如何为Selenium网格配置Nomad作业,selenium,selenium-grid,nomad,Selenium,Selenium Grid,Nomad,我正在尝试在Hashicorp Nomad中设置Selenium网格,但我不知道如何使网络工作。 我想要的是有一个selenium hub和8个chrome节点。我发现,如果将节点任务放入其自己的组中,则只能对节点任务进行多次分配 在本地运行时,我会像这样启动网格: docker network create grid docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4 docker
docker network create grid
docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4
docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -v /dev/shm:/dev/shm selenium/node-chrome:4
docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -v /dev/shm:/dev/shm selenium/node-chrome:4
...
job "selenium" {
datacenters = ["dc1"]
type = "service"
group "selenium_hub" {
network {
}
task "selenium_hub" {
driver = "docker"
config {
image = "selenium/hub:4"
}
}
}
group "selenium_nodes" {
count = 8
network {
}
task "selenium_node" {
driver = "docker"
env {
SE_EVENT_BUS_HOST = "selenium-hub"
SE_EVENT_BUS_PUBLISH_PORT = "4442"
SE_EVENT_BUS_SUBSCRIBE_PORT = "4443"
}
config {
image = "selenium/node-chrome:4"
}
}
}
}
job "selenium" {
datacenters = ["dc1"]
type = "service"
group "selenium_hub" {
network {
mode = "host"
}
task "selenium_hub" {
driver = "docker"
config {
image = "selenium/hub:3.141.59-20201010"
network_mode = "host"
}
}
}
group "selenium_nodes" {
count = 8
network {
mode = "host"
port "http" {}
}
task "selenium_node" {
driver = "docker"
env {
HUB_HOST = "localhost"
SE_OPTS = "-port ${NOMAD_PORT_http}"
}
config {
network_mode = "host"
image = "selenium/node-chrome:3.141.59-20201010"
}
}
}
}
我需要如何配置网络才能工作
我目前的工作是这样的:
docker network create grid
docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4
docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -v /dev/shm:/dev/shm selenium/node-chrome:4
docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -v /dev/shm:/dev/shm selenium/node-chrome:4
...
job "selenium" {
datacenters = ["dc1"]
type = "service"
group "selenium_hub" {
network {
}
task "selenium_hub" {
driver = "docker"
config {
image = "selenium/hub:4"
}
}
}
group "selenium_nodes" {
count = 8
network {
}
task "selenium_node" {
driver = "docker"
env {
SE_EVENT_BUS_HOST = "selenium-hub"
SE_EVENT_BUS_PUBLISH_PORT = "4442"
SE_EVENT_BUS_SUBSCRIBE_PORT = "4443"
}
config {
image = "selenium/node-chrome:4"
}
}
}
}
job "selenium" {
datacenters = ["dc1"]
type = "service"
group "selenium_hub" {
network {
mode = "host"
}
task "selenium_hub" {
driver = "docker"
config {
image = "selenium/hub:3.141.59-20201010"
network_mode = "host"
}
}
}
group "selenium_nodes" {
count = 8
network {
mode = "host"
port "http" {}
}
task "selenium_node" {
driver = "docker"
env {
HUB_HOST = "localhost"
SE_OPTS = "-port ${NOMAD_PORT_http}"
}
config {
network_mode = "host"
image = "selenium/node-chrome:3.141.59-20201010"
}
}
}
}
如果有人遇到这种情况,我会让它像这样工作:
docker network create grid
docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4
docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -v /dev/shm:/dev/shm selenium/node-chrome:4
docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -v /dev/shm:/dev/shm selenium/node-chrome:4
...
job "selenium" {
datacenters = ["dc1"]
type = "service"
group "selenium_hub" {
network {
}
task "selenium_hub" {
driver = "docker"
config {
image = "selenium/hub:4"
}
}
}
group "selenium_nodes" {
count = 8
network {
}
task "selenium_node" {
driver = "docker"
env {
SE_EVENT_BUS_HOST = "selenium-hub"
SE_EVENT_BUS_PUBLISH_PORT = "4442"
SE_EVENT_BUS_SUBSCRIBE_PORT = "4443"
}
config {
image = "selenium/node-chrome:4"
}
}
}
}
job "selenium" {
datacenters = ["dc1"]
type = "service"
group "selenium_hub" {
network {
mode = "host"
}
task "selenium_hub" {
driver = "docker"
config {
image = "selenium/hub:3.141.59-20201010"
network_mode = "host"
}
}
}
group "selenium_nodes" {
count = 8
network {
mode = "host"
port "http" {}
}
task "selenium_node" {
driver = "docker"
env {
HUB_HOST = "localhost"
SE_OPTS = "-port ${NOMAD_PORT_http}"
}
config {
network_mode = "host"
image = "selenium/node-chrome:3.141.59-20201010"
}
}
}
}
我使用Selenium 3而不是4,因为4还有其他问题。
因为我使用了主机网络,所有节点都使用端口5555,所以我需要通过SE_OPTS环境变量将动态端口(http)传递给Selenium