Jenkins Slave JNLP 连接被终止
Posted
技术标签:
【中文标题】Jenkins Slave JNLP 连接被终止【英文标题】:Jenkins Slave JNLP connection gets terminated 【发布时间】:2019-03-02 17:45:01 【问题描述】:在这里寻求帮助!
我将 Jenkins(v2.134) 作为由 Rancher(v1.6.16) 管理的 docker 容器运行;我正在使用 haproxy(HA-Proxy 版本 1.6.3 2015/12/25)作为我的负载均衡器。 Jenkins JNLP端口配置为50000。haproxy得到了TCP端口转发规则(8081 > 50000)
我的奴隶(macmini)在不同的网络中并且在防火墙后面(这个网络可以到达我的詹金斯基础设施)。我正在使用“隧道连接通过”属性和指定端口“: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*
任何帮助将不胜感激。
有没有办法获得更详细的日志?
【问题讨论】:
【参考方案1】:我发现了问题;这是我的负载均衡器(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 分钟解决了这个问题。
【讨论】:
您找到获取更详细日志的方法了吗?我仍在努力解决这个问题。 在我们的例子中,它是 ELB 的超时设置。之前是默认的 60 秒。我将它设置为 4000 (amx) 并做到了。以上是关于Jenkins Slave JNLP 连接被终止的主要内容,如果未能解决你的问题,请参考以下文章