Jenkins从机JNLP连接被终止

4

需要一些帮助!

我正在使用 Rancher(v1.6.16) 管理的 Docker 容器中运行 Jenkins(v2.134),我使用 haproxy(HA-Proxy version 1.6.3 2015/12/25) 作为我的负载均衡器。Jenkins JNLP 端口配置为 50000,haproxy 具有 TCP 端口转发规则(8081 > 50000)。

我的从机(macmini)位于不同的网络上,位于防火墙后面(该网络可以访问我的 Jenkins 基础设施)。我使用“通过隧道连接”属性并指定端口“:8081”。端口 8081 在防火墙中已打开。

我的 Jenkins Java 版本是 -

openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-1~deb9u1-b12)

我的Slave Java版本是 -

Sun JDK "1.8.0_151"

这里是代理日志 -
*INFO: Setting up agent: my-slave-01*
    Sep 26, 2018 2:48:50 PM hudson.remoting.jnlp.Main$CuiListener <init>
    INFO: Jenkins agent is running in headless mode.
    Sep 26, 2018 2:48:50 PM hudson.remoting.Engine startEngine
    INFO: Using Remoting version: 3.23
    Sep 26, 2018 2:48:50 PM hudson.remoting.Engine startEngine
    WARNING: No Working Directory. Using the legacy JAR Cache location: /Users/jenkins/.jenkins/cache/jars
    Sep 26, 2018 2:48:51 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Locating server among [http://<My Jenkins URL>/]
    Sep 26, 2018 2:48:51 PM org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve
    INFO: Remoting server accepts the following protocols: [JNLP4-connect, Ping]
    Sep 26, 2018 2:48:51 PM hudson.remoting.jnlp.Main$CuiListener status
    *INFO: Agent discovery successful*
     *Agent address: <My Jenkins DNS Name>*
     *Agent port:    8081*
     Identity:      b5:c7:33:8d:9c:97:41:3f:e1:b1:b5:31:25:ea:b5:2e
    Sep 26, 2018 2:48:51 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Handshaking
    Sep 26, 2018 2:48:51 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Connecting to <My Jenkins DNS>:8081
    Sep 26, 2018 2:48:51 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Trying protocol: JNLP4-connect
    Sep 26, 2018 2:48:51 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Remote identity confirmed: b5:c7:33:8d:9c:97:41:3f:e1:b1:b5:31:25:ea:b5:2e
    Sep 26, 2018 2:48:52 PM hudson.remoting.jnlp.Main$CuiListener status
    *INFO: Connected*
    Sep 26, 2018 2:48:54 PM org.jenkinsci.remoting.util.AnonymousClassWarnings warn
    WARNING: Attempt to (de-)serialize anonymous class org.jenkinsci.plugins.envinject.EnvInjectComputerListener$2; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/
    Sep 26, 2018 2:49:49 PM hudson.remoting.jnlp.Main$CuiListener status
    *INFO: Terminated*

任何帮助都将不胜感激。

有没有一种方法可以获得更详细的日志?

2个回答

5
我发现问题出在我的负载均衡器(haproxy)默认的TCP连接超时时间(如果没有流量)为50000毫秒。您可以参考https://cbonte.github.io/haproxy-dconv/configuration-1.5.html了解更多信息。
然而,Jenkins对从机的ping间隔,即hudson.slaves.ChannelPinger.pingInterval为5分钟(默认值)。您可以参考https://wiki.jenkins.io/display/JENKINS/Features+controlled+by+system+properties了解更多信息。
将负载均衡器超时时间增加至大于5分钟即可解决该问题。

你找到了获取更详细日志的方法吗?我还在努力弄清楚。 - Will Brode
1
在我们的情况下,是ELB的超时设置。默认值为60秒。我将其设置为4000(amx),问题得到解决。 - Mamun

0

如果您之前使用了-noReconnect选项来限制过于频繁的重新连接,现在也可以从参数中删除它。

<arguments>... -noReconnect</arguments>

您可以在这里阅读关于此选项的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接