jenkins swarm plugin:无法连接到master,连接被拒绝

ui7jx7zq  于 2024-01-07  发布在  Jenkins
关注(0)|答案(2)|浏览(314)

我正在使用jenkins swarm插件连接一个从节点到一个主节点。但是,它给出了Connection Refused错误。
我正在使用Docker swarm在多节点集群上部署这个。现在我只使用单节点设置进行测试,这里是我的compose文件:

  1. version: '3.1'
  2. services:
  3. viz:
  4. image: manomarks/visualizer
  5. volumes:
  6. - "/var/run/docker.sock:/var/run/docker.sock"
  7. ports:
  8. - "8090:8080"
  9. master:
  10. image: myproject-jenkins-master
  11. ports:
  12. - "8080:8080"
  13. - "50000:50000"
  14. volumes:
  15. - ./jenkins_home:/var/jenkins_home
  16. nginx:
  17. image: myproject-jenkins-nginx
  18. ports:
  19. - "80:80"
  20. linuxagent:
  21. image: myproject-jenkins-linuxagent

字符串
它是使用docker stack deploy命令部署的,因此上面的每个服务都有自己的内部负载均衡器。
Jenkins是通过nginx在web上提供的。但我也保留了8080端口以供调试。如果我打开浏览器并点击http://localhosthttp://localhost:8080,我可以访问jenkins web界面。在master上,我已经安装了jenkins swarm插件。如果我从linuxagent容器进入bash shell,这是一个从节点,我可以ping其他的docker服务,但当我尝试运行swarm-client-3.3.jar文件时会发生以下情况。
如果我试图访问jenkins,我可以通过访问http://myproject_master:8080来实现

  1. root@d139902be5de:~# curl http://myproject_master:8080
  2. <html><head><meta http-equiv='refresh' content='1;url=/login?from=%2F'/><script>window.location.replace('/login?from=%2F');</script></head><body style='background-color:white; color:white;'>
  3. Authentication required
  4. <!--
  5. You are authenticated as: anonymous
  6. Groups that you are in:
  7. Permission you need to have (but didn't): hudson.model.Hudson.Read
  8. ... which is implied by: hudson.security.Permission.GenericRead
  9. ... which is implied by: hudson.model.Hudson.Administer
  10. -->
  11. </body></html> root@d139902be5de:~#


此外,我可以通过http://myproject_nginx访问相同的

  1. root@d139902be5de:~# curl http://myproject_nginx
  2. <html><head><meta http-equiv='refresh' content='1;url=/login?from=%2F'/><script>window.location.replace('/login?from=%2F');</script></head><body style='background-color:white; color:white;'>
  3. Authentication required
  4. <!--
  5. You are authenticated as: anonymous
  6. Groups that you are in:
  7. Permission you need to have (but didn't): hudson.model.Hudson.Read
  8. ... which is implied by: hudson.security.Permission.GenericRead
  9. ... which is implied by: hudson.model.Hudson.Administer
  10. -->
  11. </body></html> root@d139902be5de:~#


如果我尝试启动swarm的jar文件,我会得到这个错误:

  1. root@d139902be5de:~# java -jar swarm-client-3.3.jar -username mandeep -password 12213 -master http://myproject_nginx
  2. Apr 09, 2017 5:52:44 PM hudson.plugins.swarm.Client main
  3. INFO: Client.main invoked with: [-username mandeep -password 12213 -master http://myproject_nginx]
  4. Apr 09, 2017 5:52:44 PM hudson.plugins.swarm.Client run
  5. INFO: Discovering Jenkins master
  6. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  7. SLF4J: Defaulting to no-operation (NOP) logger implementation
  8. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  9. Apr 09, 2017 5:52:44 PM hudson.plugins.swarm.Client run
  10. INFO: Attempting to connect to http://myproject_nginx/ bc1be8e7-eaf0-47ff-8aeb-36f75d6ba081 with ID c84ce43b
  11. Apr 09, 2017 5:52:45 PM hudson.remoting.jnlp.Main createEngine
  12. INFO: Setting up slave: d139902be5de-c84ce43b
  13. Apr 09, 2017 5:52:45 PM hudson.remoting.jnlp.Main$CuiListener <init>
  14. INFO: Jenkins agent is running in headless mode.
  15. Apr 09, 2017 5:52:45 PM hudson.remoting.jnlp.Main$CuiListener status
  16. INFO: Locating server among [http://myproject_nginx/]
  17. Apr 09, 2017 5:52:45 PM hudson.remoting.jnlp.Main$CuiListener status
  18. INFO: Agent discovery successful
  19. Agent address: myproject_nginx
  20. Agent port: 50000
  21. Identity: 86:5b:f3:77:84:92:21:87:95:4c:4b:0e:f7:4e:e5:1d
  22. Apr 09, 2017 5:52:45 PM hudson.remoting.jnlp.Main$CuiListener status
  23. INFO: Handshaking
  24. Apr 09, 2017 5:52:45 PM hudson.remoting.jnlp.Main$CuiListener status
  25. INFO: Connecting to myproject_nginx:50000
  26. Apr 09, 2017 5:52:55 PM hudson.remoting.jnlp.Main$CuiListener status
  27. INFO: Connecting to myproject_nginx:50000 (retrying:2)
  28. java.io.IOException: Failed to connect to myproject_nginx:50000
  29. at org.jenkinsci.remoting.engine.JnlpAgentEndpoint.open(JnlpAgentEndpoint.java:243)
  30. at hudson.remoting.Engine.connect(Engine.java:500)
  31. at hudson.remoting.Engine.innerRun(Engine.java:364)
  32. at hudson.remoting.Engine.run(Engine.java:287)
  33. Caused by: java.net.ConnectException: Connection refused
  34. at sun.nio.ch.Net.connect0(Native Method)
  35. at sun.nio.ch.Net.connect(Net.java:454)
  36. at sun.nio.ch.Net.connect(Net.java:446)
  37. at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648)
  38. at java.nio.channels.SocketChannel.open(SocketChannel.java:189)
  39. at org.jenkinsci.remoting.engine.JnlpAgentEndpoint.open(JnlpAgentEndpoint.java:204)
  40. ... 3 more


看起来问题是从服务器期望主服务器是myproject_nginx,因此命中端口50000,这失败了,因为此服务没有暴露端口50000。因此,出于此目的,我在myproject_master服务上暴露了端口808050000。但是当我尝试该URL时,我得到了不同的错误

  1. root@d139902be5de:~# java -jar swarm-client-3.3.jar -username mandeep -password 12213 -master http://myproject_master:8080
  2. Apr 09, 2017 5:57:01 PM hudson.plugins.swarm.Client main
  3. INFO: Client.main invoked with: [-username mandeep -password 12213 -master http://myproject_master:8080]
  4. Apr 09, 2017 5:57:01 PM hudson.plugins.swarm.Client run
  5. INFO: Discovering Jenkins master
  6. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  7. SLF4J: Defaulting to no-operation (NOP) logger implementation
  8. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  9. Apr 09, 2017 5:57:01 PM hudson.plugins.swarm.Client run
  10. SEVERE: IOexception occurred
  11. java.net.ConnectException: Connection refused (Connection refused)
  12. at java.net.PlainSocketImpl.socketConnect(Native Method)
  13. at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
  14. at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
  15. at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
  16. at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
  17. at java.net.Socket.connect(Socket.java:589)
  18. at java.net.Socket.connect(Socket.java:538)
  19. at java.net.Socket.<init>(Socket.java:434)
  20. at java.net.Socket.<init>(Socket.java:286)
  21. at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:80)
  22. at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:122)
  23. at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
  24. at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
  25. at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
  26. at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
  27. at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
  28. at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
  29. at hudson.plugins.swarm.SwarmClient.discoverFromMasterUrl(SwarmClient.java:224)
  30. at hudson.plugins.swarm.Client.run(Client.java:115)
  31. at hudson.plugins.swarm.Client.main(Client.java:88)


这是我完全卡住的地方,无法理解如何解决这个问题。是否有问题,因为从运行在负载均衡器后面?或者我试图实现的架构中有什么根本性的错误?我希望能够动态扩展linuxagent服务,以便每个节点都充当从代理,并且只与主节点连接我读了关于jenkins的swarm插件的文章,发现它可以用来实现这种设置。

6g8kf2rb

6g8kf2rb1#

对于我来说,改变参数的顺序修复了它。请将-master移动到群参数的开头:

  1. java -jar /usr/share/jenkins/swarm-client-3.4.jar -disableSslVerification -master

字符串
这应该修复了我看到的以下错误:

  1. Jul 25, 2017 6:26:23 PM hudson.plugins.swarm.Client run
  2. INFO: Discovering Jenkins master
  3. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  4. SLF4J: Defaulting to no-operation (NOP) logger implementation
  5. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for
  6. further details.
  7. Exception in thread "main" java.lang.IllegalArgumentException: Host
  8. name may not be null
  9. at org.apache.commons.httpclient.HttpHost.<init>(HttpHost.java:68)
  10. at org.apache.commons.httpclient.HttpHost.<init>(HttpHost.java:107)
  11. at org.apache.commons.httpclient.HttpMethodBase.setURI(HttpMethodBase.java:280)
  12. at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220)
  13. at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:89)
  14. at hudson.plugins.swarm.SwarmClient.discoverFromMasterUrl(SwarmClient.java:220)
  15. at hudson.plugins.swarm.Client.run(Client.java:114)
  16. at hudson.plugins.swarm.Client.main(Client.java:87)

展开查看全部
j7dteeu8

j7dteeu82#

尝试打开TCP端口443和50000的TCP端口。

相关问题