从版本2.7.2更新到2.107.2后,Jenkins代理无法连接

时间:2018-05-07 16:11:00

标签: jenkins jnlp

我最近在Windows Server Standard 2016(服务器和代理)上将jenkins服务器从版本2.7.2更新到2.107.2。之后,一切都在运行,直到我重新启动其中一个代理。代理上的jenkins Windows服务不断崩溃,并在错误日志文件中报告以下内容:

Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main createEngine
INFO: Setting up slave: dsvjenkins4
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener <init>
INFO: Jenkins agent is running in headless mode.
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Locating server among [https://dsvjenkins1/]
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to dsvjenkins1:16923
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP3-connect
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Server didn't accept the handshake: Disabled protocol:Protocol:JNLP3-connect
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to dsvjenkins1:16923
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP2-connect
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Server didn't accept the handshake: Disabled protocol:Protocol:JNLP2-connect
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to dsvjenkins1:16923
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP-connect
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Server didn't accept the handshake: Disabled protocol:Protocol:JNLP-connect
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to dsvjenkins1:16923
Mai 07, 2018 5:59:34 PM hudson.remoting.jnlp.Main$CuiListener error
SEVERE: The server rejected the connection: None of the protocols were accepted
java.lang.Exception: The server rejected the connection: None of the protocols were accepted
    at hudson.remoting.Engine.onConnectionRejected(Engine.java:335)
    at hudson.remoting.Engine.run(Engine.java:307)

我尝试通过连接到新的jenkins服务器来卸载和安装代理服务。它确实从Java Web Start开始。但我需要让它作为Windows服务运行。 重新安装代理服务后,我确实重新启动了代理。 后来我发现它不是一个代理人。重启后,所有代理都会受到影响。

我该怎么做才能解决这个问题?

[更新]
Jenkins 2.107.2在安装后引导我完成了一些改进。其中之一是禁用不安全的JNLP协议。 JNLP1,JNLP2和JNLP3被禁用。由于已经发生了与代理的握手,因此服务器和代理之间的通信仍将基于这些禁用的协议之一,直到代理重新启动。 我最终重新启用所有协议,然后逐个禁用,以找出仍然有效的最安全设置。在JNLP1和JNLP2被禁用时启用JNLP3和JNLP4仍然有效。
这引出了一个后续问题:如何才能使用JNLP4协议在主服务器和代理程序之间进行通信?

2 个答案:

答案 0 :(得分:0)

我通过从Jenkins服务器重新下载agent.jar文件,然后重新启动从服务器来解决了该问题。示例:

$ wget http://[servername:port]/jenkins/jnlpJars/agent.jar

$ java -jar agent.jar -jnlpUrl http://[servername:port]/jenkins/computer/[slave-name]/slave-agent.jnlp

这允许Jenkins奴隶使用JNLP4启动。

答案 1 :(得分:0)

仅供参考,以防万一–我只需要在我的站点上进行大量的诊断工作,就需要使用一堆Windows JNLP代理程序,这些代理程序在过去几天中因上述同样的失败/错误而停止工作。

经过一系列漫长的跟踪-我在我的案例中发现-反向DNS解析最终解决的问题停止了工作(无关的本地问题-“始终是DNS”,对吗?)-但是无法反向解决正在连接客户端(Windows框)导致JNLP服务器端断开连接。

只是想在此处添加它,以防碰巧相关的其他将来遇到类似问题的人。