Your browser was unable to load all of the resources. They may
have been blocked by your firewall, proxy or browser configuration.
Press Ctrl+F5 or Ctrl+Shift+R to have your browser try again.
I have a problem connecting my Build Agent to the server across a WAN, the IP addresses are translated via NAT. So when the agent starts it throws error:
jvm 1 | 2010-11-08 14:40:07,792 WARN - failed SocketConnector@192.168.xxx.xxx:8811
java.net.BindException: Cannot assign requested address: JVM_Bind
When the really IP on the machine is 204.155.xxx.xxx, something else, so of course the machine cannot create a socket on that IP because it does not belong to it physically. So I tried using the optional IP Address in config.bat dialog, and it starts up fine. But then the master does not know about this server it seems.
brando.
-
replies
4
-
views
1682
-
stars
0
-
A little more info. If I start it like mentioned below, I get this error on Master:
2010-11-08 12:59:59,998 [10749937@qtp-3945515-26874] ERROR com.pmease.quickbuild.RemotingSerializerFactory - Error invoking hessian service.
com.caucho.hessian.client.HessianRuntimeException: Can not connect to 'http://204.155.xxx.xxx:8811/service/agent
So I try another thing, I added another IP to the Interface corresponding to the NAT it is assigned and this is what I get.
It starts on the new IP but of course it is not the one getting the traffic. <!-- s:( --><img src="{SMILIES_PATH}/icon_sad.gif" alt=":(" title="Sad" /><!-- s:( -->.
************ Minutes Later **************
/etc/hosts on Master server did the trick! I used host name instead of IP and was able to add agent.
BTW I have a question on this in the config it says all agents needs to be able to talk to each other? Why is that necessary?
QuickBuild server and agent need to take in both direction. When you configure agent to bind to a specific ip address, the server will also use that address to connect to agent in case a build job needs to be assigned.
Agents need to talk to each other only when one build agent tries to assign build jobs to another agent. For example, if master step is configured to run on agent1, and the child step is assigned to run any other build agents, agent1 will poll current load of other agents to determine the best node to run the child step.
Cool good to know, about the agents.
I still have an issue on one of the systems I am configuring. That is because one of the systems has multiple interfaces, and for some reason the interface that we are communicating on, that is NAT'ed is not the one the the agent chooses to bind too is the other interface.
We are working on another firewall request for this interface, luckily it is a interface in the WAN that I can get to, but maybe what would have had it work would have been to have it listen on 0.0.0.0. Are there any parameters that could override some of the default behavior.
Brando.
Hi Brando,
Unfortunately there are only two options here:
1. do not specify IP address in <agent install dir>/conf/node.properties. This way agent will bind to 0.0.0.0 and server will talk to agent using ip address found in the request header when agent initially connects to server.
2. specify a IP address in node.properties. This way agent will bind to specified ip address and report this address to server for use.
If the agent is put inside a NAT network, you might be able to work around the problem by configuring the agent to listen on a special port, for example, 8851. Then configure your NAT system to add a port forward entry to forward any traffic of port 8851 to this agent.
Regards
Robin