aerokube / ggr

A lightweight load balancer used to create big Selenium clusters
https://aerokube.com/ggr/latest/
Apache License 2.0
314 stars 74 forks source link

Unable to ping ggr from host machine #200

Closed ed84 closed 6 years ago

ed84 commented 6 years ago

First off, thank you for all the hard work on ggr/selenoid/-ui.

My setup: Host Machine: Windows Server 2012 Hypervisor: Hyper-V running Ubuntu 16.04 LTS Docker (client/server) Version: 1.12.0, API Version: 1.24, Go version: go1.6.3

I have no issues executing tests on selenoid and viewing them on selenoid-ui from my host machine.

Followed all the instructions to create quota directory and create users.htpasswd file etc.

To make sure it's working properly, I only started the ggr container using:

docker run -d --name ggr -v /etc/grid-router/:/etc/grid-router:ro --net host aerokube/ggr:latest-release

When I try to ping it from inside of ubuntu, everything works fine: {"uptime":"16.624757336s","lastReloadTime":"2018-05-15 18:23:18.079808378 +0000 UTC m=+0.001698442","numRequests":0,"version":"1.5.3"}

Issue is when I try to ping it from my host machine: ERR_CONNECTION_TIMED_OUT..

I can access selenoid/selenoid-ui / run tests without any issues from my host machine, but only having issues when trying to ping/access ggr. I can see the container status running without any issues either.

I start the selenoid container and captured the netstat info to compare vs when running only ggr on using: docker run -d --name selenoid \ -p 4444:4444 \ (just fyi, when running it with ggr, I tried -p 4445:4444) -v /etc/selenoid:/etc/selenoid:ro \ -v /var/run/docker.sock:/var/run/docker.sock \ aerokube/selenoid:1.6.0 \ -conf /etc/selenoid/browsers.json -limit 16

netstat info when only running ggr: https://pasteboard.co/HlkAjFK.jpg

netstat info when only running selenoid: https://pasteboard.co/HlkAvVm.jpg

any additional info please advise

vania-pooh commented 6 years ago

@ed84 hi, --net host does not seem work on Docker for Mac and Docker for Windows. You have to forward port using -p flag. E.g.:

docker run -d --name ggr -p 4444:4444 -v /etc/grid-router/:/etc/grid-router:ro aerokube/ggr:latest-release

If port 4444 is occupied by Selenoid, then choose another one, e.g. -p 4445:4444.

ed84 commented 6 years ago

I tried your suggestion above, now I'm able to ping it. However, when I execute my test, I'm getting 401 Unauthorized. I did not tamper with the grid-router directory or edit the test.xml file. Please see the following image which includes my docker logs for selenoid,ui,ggr along with my browser.json file / test.xml.

https://pasteboard.co/HltQsEw.jpg

questions?

please advise, thank you

vania-pooh commented 6 years ago

@ed84 are you specifying your Selenium URL as: http://test:some-password@ggr-host.example.com:4444/wd/hub? 401 usually means invalid password in htpasswd file or missing user (quota files are not used on HTTP auth stage). However we match quota files by user name, so creating test.xml means you should have an entry for test user in htpasswd file.

ed84 commented 6 years ago

@vania-pooh, yeah that's correct but I'm starting ggr on -p 4445:4444 and selenoid on -p 4444:4444 and my url would be:

http://test:some-password@ggr-host.example.com:4445/wd/hub

Anything else should I try?

vania-pooh commented 6 years ago

@ed84 correct. Is password in users.htpasswd encrypted? Should be created like this: $ htpasswd -bc /path/to/new.htpasswd test test-password

ed84 commented 6 years ago

@vania-pooh that's how I originally created it, using the above command. I see it there and I see it get loaded when I start ggr container. I did not open the file or tamper with users.htpasswd. I also tried creating it using sudo htpasswd -bc /path/to/new.htpasswd test test-password.

anything else should I try?

aandryashin commented 6 years ago

Are you using C#? There was issue on client side library. Please try to create session using java...

2018-05-17 20:54 GMT+03:00 ed84 notifications@github.com:

@vania-pooh https://github.com/vania-pooh that's how I originally created it, using the above command. I see it there and I see it get loaded when I start ggr container. I did not open the file or tamper with users.htpasswd. I also tried creating it using sudo htpasswd -bc /path/to/new.htpasswd test test-password.

anything else should I try?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/aerokube/ggr/issues/200#issuecomment-389953843, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWNbcySxS6Z3NWwZzXU6QwyjOqzDSqyks5tzbk8gaJpZM4UAD9J .

ed84 commented 6 years ago

@aandryashin yeah, I'm using c#. I'll try java temporarily and see if it works. However, our solution libraries are in c#. Is this something that would be fixed anytime soon?

vania-pooh commented 6 years ago

@ed84 ah, forgot about C#. They implemented working with HTTP basic auth URLs a month ago or so. Please try wil the latest client library release.

ed84 commented 6 years ago

@vania-pooh , I upgraded the c# libraries to latest, now I'm getting the following error: "cannot create session chrome-66.0 on any hosts after 1 attempt(s)" here is my test.xml ggr file, along with my browsers.json file and docker-compose file https://pasteboard.co/HmoTDDc.png

when I ping my host, I can see the available chrome nodes with the correct version: {"total":16,"used":0,"queued":0,"pending":0,"browsers":{"chrome":{"66.0":{}}}}

vania-pooh commented 6 years ago

@ed84 configs seems to be ok. Please take a look at Selenoid logs to see an error (e.g. docker logs selenoid).

ed84 commented 6 years ago

@vania-pooh , here's the selenoid logs along with docker-compose activity logs when executing a test:

https://pasteboard.co/HmxvxUk.png

aandryashin commented 6 years ago

There were no requests to selenoid from ggr. Than means there is mistake in configuration or firewall rules. Could you please tell which errors prints ggr when session failed?

ср, 23 мая 2018 г., 20:43 ed84 notifications@github.com:

@vania-pooh https://github.com/vania-pooh , here's the selenoid logs along with docker-compose activity logs when executing a test:

https://pasteboard.co/HmxvxUk.png

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/aerokube/ggr/issues/200#issuecomment-391436831, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWNbS34Mpsm7rPLsbdVHXZlSKiHYe1hks5t1Z-xgaJpZM4UAD9J .

aandryashin commented 6 years ago

Hm, there are empty error messages, which versions of selenoid and ggr you are using?

ср, 23 мая 2018 г., 20:50 Alexander Andryashin aandryashin@gmail.com:

There were no requests to selenoid from ggr. Than means there is mistake in configuration or firewall rules. Could you please tell which errors prints ggr when session failed?

ср, 23 мая 2018 г., 20:43 ed84 notifications@github.com:

@vania-pooh https://github.com/vania-pooh , here's the selenoid logs along with docker-compose activity logs when executing a test:

https://pasteboard.co/HmxvxUk.png

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/aerokube/ggr/issues/200#issuecomment-391436831, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWNbS34Mpsm7rPLsbdVHXZlSKiHYe1hks5t1Z-xgaJpZM4UAD9J .

ed84 commented 6 years ago

@aandryashin @vania-pooh , docker images:

aerokube/ggr: latest-release aerokube/selenoid: 1.6.0 aerokube/selenoid-ui: v1.5.6

ed84 commented 6 years ago

re-created the ubuntu image and installed selenoid/ui/ggr and got it to work with the latest libraries