1

Hashicorp Nomad で Selenium Grid をセットアップしようとしていますが、ネットワークを機能させる方法がわかりません。私が欲しいのは、1 つのセレン ハブと 8 つのクロム ノードを持つことです。ノードタスクを独自のグループに配置した場合にのみ、ノードタスクの複数の割り当てを持つことができることがわかりました。

ローカルで実行すると、次のようにグリッドを開始します。

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"
      }
    }
  }  
}
4

1 に答える 1

1

誰かがこれに出くわした場合、私は次のように機能しています:

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"
      }
    }
  }  
}

4 には他の問題もあったため、4 の代わりに Selenium 3 を使用しました。 ホスト ネットワークを使用し、すべてのノードがポート 5555 を使用しているため、SE_OPTS 環境変数を介して動的ポート (http) を Selenium に渡す必要がありました。

于 2020-11-04T14:34:52.093 に答える