You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Agent无法通过JNLP连接(主从节点均安装Java 11)

Jenkins Agent无法通过JNLP连接主节点(连接超时)解决方案

问题概述

Jenkins Agent通过JNLP连接主节点时失败,日志底层报错为java.net.ConnectException: 连接超时,主节点与Agent均已安装Java 11。

错误日志详情

2023年2月17日 上午10:06:16 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
信息:使用/home/ubuntu/remoting作为远程工作目录
2023年2月17日 上午10:06:16 org.jenkinsci.remoting.engine.WorkDirManager setupLogging
信息:错误日志和输出日志均将打印至/home/ubuntu/remoting
2023年2月17日 上午10:06:16 hudson.remoting.jnlp.Main createEngine
信息:正在设置Agent:test
2023年2月17日 上午10:06:16 hudson.remoting.Engine startEngine
信息:使用Remoting版本:3071.v7e9b_0dc08466
2023年2月17日 上午10:06:16 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
信息:使用/home/ubuntu/remoting作为远程工作目录
2023年2月17日 上午10:08:27 hudson.remoting.jnlp.Main$CuiListener error
严重:连接失败。
io.jenkins.remoting.shaded.jakarta.websocket.DeploymentException: Connection failed.
at io.jenkins.remoting.shaded.org.glassfish.tyrus.container.jdk.client.JdkClientContainer$1.call(JdkClientContainer.java:187)
at io.jenkins.remoting.shaded.org.glassfish.tyrus.container.jdk.client.JdkClientContainer$1.call(JdkClientContainer.java:107)
at io.jenkins.remoting.shaded.org.glassfish.tyrus.container.jdk.client.JdkClientContainer.openClientSocket(JdkClientContainer.java:192)
at io.jenkins.remoting.shaded.org.glassfish.tyrus.client.ClientManager$3$1.run(ClientManager.java:647)
at io.jenkins.remoting.shaded.org.glassfish.tyrus.client.ClientManager$3.run(ClientManager.java:696)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at io.jenkins.remoting.shaded.org.glassfish.tyrus.client.ClientManager$SameThreadExecutorService.execute(ClientManager.java:849)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
at io.jenkins.remoting.shaded.org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:493)
at io.jenkins.remoting.shaded.org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:337)
at hudson.remoting.Engine.runWebSocket(Engine.java:674)
at hudson.remoting.Engine.run(Engine.java:499)
Caused by: java.net.ConnectException: 连接超时
at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect(Native Method)
at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishConnect(UnixAsynchronousSocketChannelImpl.java:252)
at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:198)
at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213)
at java.base/sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:306)
at java.base/java.lang.Thread.run(Thread.java:829)

排查与解决步骤

1. 网络连通性验证

  • 在Agent节点执行端口连通性测试:
    # 替换为主节点IP和JNLP端口(默认50000)
    telnet <主节点IP> 50000
    # 或用nc命令
    nc -zv <主节点IP> 50000
    
  • 检查主节点与Agent之间的防火墙、安全组规则,确保**JNLP端口(默认50000)**和Jenkins服务端口(如8080)双向开放。
  • 确认Agent能解析主节点的主机名(若使用域名/主机名连接):
    ping <主节点主机名>
    

2. Jenkins主节点配置检查

  • 进入Manage Jenkins > Configure Global Security,确保Agent protocols中勾选了JNLP4-connect(当前Remoting版本默认使用该WebSocket协议)。
  • 进入Manage Jenkins > Configure System,验证Jenkins URL为Agent可访问的公网/内网地址,避免使用localhost或仅主节点本地可达的地址。
  • 若主节点使用反向代理(如Nginx),需添加WebSocket转发配置到代理location块:
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    

3. Agent启动命令校验

  • 确认启动命令中的-url参数指向正确的Jenkins主节点地址,示例:
    java -jar agent.jar -url http://jenkins-master:8080/ -secret <节点密钥> -name test
    
  • 若主节点启用HTTPS,需确保Agent的Java环境信任主节点证书,或临时添加-noCertificateCheck参数(生产环境不推荐)跳过证书验证。

4. Remoting版本兼容优化

  • 从主节点http://<jenkins-url>/jnlpJars/agent.jar下载最新版Agent Jar包,替换Agent节点上的旧版本,避免版本兼容问题(当前日志中Remoting版本3071.v7e9b_0dc08466与Java 11兼容,但更新版本可修复已知问题)。

内容的提问来源于stack exchange,提问作者Mani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:21:48