I'd say talk with the IT guys who operate the firewalls and get them to check their logs - if it is a firewall issue they should be able to see what is getting dropped and why.
One possibility (not knowing how "chatty" Jenkins is with its slaves), is that there is no activity going on the connection for a period of time and the firewall is dropping the connection for inactivity. Again, the firewall admins should be able to see that. Richard. On Thu, Sep 26, 2013 at 12:17 PM, Dan Tenenbaum <[email protected]> wrote: > Hello, > > Previously I had a Jenkins master running on an EC2 instance in the Amazon > cloud, and two slave nodes, one of which was also in EC2 and the other of > which is here at my institution, behind a firewall. Both slaves connected > to the master using Java Web Start and everything worked fine. > > Now I am not able to set up new slaves inside my institution--they time > out while handshaking with the master. And while my existing node inside > the institute continued to work, after I disconnected it and tried to > reconnect, it experienced the same problem. I am pretty sure that the > problem is being behind the institution firewall, because when I unplugged > my laptop from the ethernet cable and connected it to a public wi-fi > network, it was able to connect, but when connected by ethernet only it > times out during handshaking. > > The master is running Jenkins ver. 1.532. The slaves are running the > slave.jar from http://mymasternode.tld:8080/jnlpJars/slave.jar. > > To be clear, the slave nodes CAN start a network connection with the > master. I've set the master up to use a fixed port (33440) for JNLP slave > agents, and made sure that port is made available in my EC2 security group. > > From a machine at my institution I can do this (slightly edited): > > $ telnet mymasternode.tld 33440 > Trying xx.xx.xx.xx... > Connected to mymasternode.tld > Escape character is '^]'. > > So that means in principle I can initiate a socket connection to the > master. I try starting a slave agent like this: > > java -Djava.awt.headless=true -jar slave.jar -jnlpUrl > http://mymasternode.tld:8080/computer/laptop/slave-agent.jnlp -secret > LONGSECRETCODEGOESHERE > > I get this: > > Sep 25, 2013 4:55:55 PM hudson.remoting.jnlp.Main$CuiListener <init> > INFO: Jenkins agent is running in headless mode. > Sep 25, 2013 4:55:55 PM hudson.remoting.jnlp.Main$CuiListener status > INFO: Locating server among [http://mymasternode.tld:8080/] > Sep 25, 2013 4:55:55 PM hudson.remoting.jnlp.Main$CuiListener status > INFO: Connecting to mymasternode.tld:33440 > Sep 25, 2013 4:55:55 PM hudson.remoting.jnlp.Main$CuiListener status > INFO: Handshaking > Sep 25, 2013 4:55:56 PM hudson.remoting.jnlp.Main$CuiListener status > INFO: Connected > > On the master in $JENKINS_HOME/logs/slaves/myslavename, I see this in the > log: > > NLP agent connected from /xx.xx.xx.xx > <===[JENKINS REMOTING CAPACITY]===> > .... and then after several minutes I see this: > ERROR: Connection terminated > ha:AAAAWC+LCAAAAAAAAP9b85aBtbiIQSmjNKU4P08vOT+vOD8mVc8DzHWtSE4tKMnMz/PLL0ldFVf2c+b/lb5MDAwVRQxSaBqcITRIIQMEMIIUFgAAckCEiWAAAAA=java.net.SocketException: > Connection timed out > at java.net.SocketInputStream.socketRead0(Native Method) > at java.net.SocketInputStream.read(SocketInputStream.java:146) > at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) > at java.io.BufferedInputStream.read(BufferedInputStream.java:254) > at > hudson.remoting.FlightRecorderInputStream.read(FlightRecorderInputStream.java:77) > at > java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2271) > at > java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2564) > at > java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2574) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1314) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368) > at hudson.remoting.Command.readFrom(Command.java:92) > at > hudson.remoting.ClassicCommandTransport.read(ClassicCommandTransport.java:71) > at > hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48) > > Back at the slave, it still says 'connected'. > > What is going on? OK, so I'm behind a firewall, but I've shown that I can > initiate a socket connection, so why do inside-the-firewall slaves behave > differently during the handshake than outside-the-firewall slaves which > start right up just fine? Maybe something changed on my end but I don't > know what it could be so not sure what to ask my IT folks about. Thought > maybe someone here could help. > > Thanks, > Dan > > > > -- > You received this message because you are subscribed to the Google Groups > "Jenkins Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
