web-dev-qa-db-ja.com

Jenkinsスレーブがマスターに接続できません:確認シーケンスが正しくありません

Jenkinsマスターインストールを最新のLTSバージョン2.46.3に更新した後、そのスレーブの1つ(Windows 7マシン、32ビット)がマスターに接続できなくなります。

私たちが得ているエラーは次のとおりです。

Java -jar slave.jar -jnlpUrl https://<jenkins-name>/computer/<node-name>/slave-agent.jnlp -secret <secret-value>
Jun 22, 2017 1:19:05 PM hudson.remoting.jnlp.Main createEngine
INFO: Setting up slave: node-name
Jun 22, 2017 1:19:05 PM hudson.remoting.jnlp.Main$CuiListener <init>
INFO: Jenkins agent is running in headless mode.
Jun 22, 2017 1:19:05 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Locating server among [https://<jenkins-name>/]
Jun 22, 2017 1:19:05 PM org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve
INFO: Remoting server accepts the following protocols: [JNLP3-connect, JNLP-connect, CLI2-connect, Ping, CLI-connect, JNLP4-connect, JNLP2-c
onnect]
Jun 22, 2017 1:19:05 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Agent discovery successful
  Agent address: <jenkins-name>
  Agent port:    <jenkins-port>
  Identity:      <id:en:ti:ty>
Jun 22, 2017 1:19:05 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Jun 22, 2017 1:19:05 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to <jenkins-name>:9150
Jun 22, 2017 1:19:05 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Jun 22, 2017 1:19:05 PM org.jenkinsci.remoting.protocol.impl.AckFilterLayer abort
WARNING: [JNLP4-connect connection to <our-proxy>/10.253.0.11:81] Incorrect acknowledgement sequence, expected 0x0003414333 got 0x4854545044
Jun 22, 2017 1:19:05 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Protocol JNLP4-connect encountered an unexpected exception
Java.util.concurrent.ExecutionException: org.jenkinsci.remoting.protocol.impl.ConnectionRefusalException: Connection closed before acknowled
gement sent
        at org.jenkinsci.remoting.util.SettableFuture.get(SettableFuture.Java:223)
        at hudson.remoting.Engine.innerRun(Engine.Java:385)
        at hudson.remoting.Engine.run(Engine.Java:287)
Caused by: org.jenkinsci.remoting.protocol.impl.ConnectionRefusalException: Connection closed before acknowledgement sent
        at org.jenkinsci.remoting.protocol.impl.AckFilterLayer.onRecvClosed(AckFilterLayer.Java:280)
        at org.jenkinsci.remoting.protocol.FilterLayer.abort(FilterLayer.Java:164)
        at org.jenkinsci.remoting.protocol.impl.AckFilterLayer.abort(AckFilterLayer.Java:130)
        at org.jenkinsci.remoting.protocol.impl.AckFilterLayer.onRecv(AckFilterLayer.Java:258)
        at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecv(ProtocolStack.Java:669)
        at org.jenkinsci.remoting.protocol.NetworkLayer.onRead(NetworkLayer.Java:136)
        at org.jenkinsci.remoting.protocol.impl.BIONetworkLayer.access$2200(BIONetworkLayer.Java:48)

私たちは問題を解決するために多くの時間を費やしました。残念ながら成功しませんでした。

何が問題を引き起こした可能性があり、どのように解決できるかについての考えはありますか?

6
andreasgk

最近、リモート統合テストにJNLPを使用するAWSベースのJenkinsでこの問題が発生しました。リモートスレーブはJenkinsマスターにコールバックしますが、同様のエラーで失敗しました。この問題は、Jenkinsマスター用に動的に生成されたHTTPタイプのAWS ELB(Kubernetes ELBプロビジョナーは現在マルチプロトコルELBをサポートしていないため)になりました。 ELBのJNLP入力ポートタイプを手動でTCPに変更する必要がありましたが、Webインターフェイスの入力「インスタンスポート」はプロトコルHTTPで、「ロードバランサー」はプロトコルHTTPSでした。

1
mars64

これは、WindowsUpdateまたはその他のサイレントバックグラウンド更新がスレーブの環境変数を台無しにしたときに発生しました。 HTTPS_PROXYおよびHTTP_PROXYを再度追加する必要があり、それが完了すると、ビジネスに戻りました。

0

ノードの秘密鍵が無傷であることを確認する必要があります。適切でない場合は、slave.jarをダウンロードし、コマンドラインから新しいjarファイルを使用してエージェントを実行する必要があります。

Java -jar slave.jar -jnlpUrl http://<ipaddress>:8080/computer/<computername>/slave-agent.jnlp -secret 340d54sdrgtjj334kelkahsdjkf83f1c5120dc2fb74939fcdb7f05e1926049f8d7991

また、Javaインストールされているバージョンが> 7であることを確認します

0
user8532358

メッセージ:

Incorrect acknowledgement sequence ...

Javaプロパティhudson.TcpSlaveAgentListener.portの値を、Jenkinsが使用するHTTPポートと同じポート番号として誤って構成したときに発生しました。 TcpSlaveAgentListener javadoc =は、次のように表示されている場合、構成が間違っていることを示します。

HTTPエンドポイントとは別に、JenkinsはTCPソケットでリッスンするTcpSlaveAgentListenerを実行します。これまで、これはインバウンド接続に使用されていましたエージェントから(そのため名前が付けられています)、時間の経過とともに拡張されて汎用化されたため、異なる目的の複数のプロトコルが同じソケットに共存できます(強調を追加)

HTTPポートが8080で、hudson.TcpSlaveAgentListener.portも8080の場合、JNLPエージェントは接続に失敗しました。 hudson.TcpSlaveAgentListener.portに別の値(50000など)を割り当ててJenkinsを再起動するとすぐに、JNLPエージェントが接続できるようになりました。

失敗したJNLPエージェントのスタックトレースは次のとおりです。

INFO: Trying protocol: JNLP4-connect
Mar 02, 2019 3:49:29 PM org.jenkinsci.remoting.protocol.impl.AckFilterLayer abort
WARNING: [JNLP4-connect connection to agent.example.com/172.16.16.113:8080] Incorrect acknowledgement sequence, expected 0x000341434b got 0x485454502f
Mar 02, 2019 3:49:29 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Protocol JNLP4-connect encountered an unexpected exception
Java.util.concurrent.ExecutionException: org.jenkinsci.remoting.protocol.impl.ConnectionRefusalException: Connection closed before acknowledgement sent
        at org.jenkinsci.remoting.util.SettableFuture.get(SettableFuture.Java:223)
        at hudson.remoting.Engine.innerRun(Engine.Java:614)
        at hudson.remoting.Engine.run(Engine.Java:474)
Caused by: org.jenkinsci.remoting.protocol.impl.ConnectionRefusalException: Connection closed before acknowledgement sent
        at org.jenkinsci.remoting.protocol.impl.AckFilterLayer.onRecvClosed(AckFilterLayer.Java:280)
        at org.jenkinsci.remoting.protocol.FilterLayer.abort(FilterLayer.Java:164)
        at org.jenkinsci.remoting.protocol.impl.AckFilterLayer.abort(AckFilterLayer.Java:130)
        at org.jenkinsci.remoting.protocol.impl.AckFilterLayer.onRecv(AckFilterLayer.Java:258)
        at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecv(ProtocolStack.Java:668)
        at org.jenkinsci.remoting.protocol.NetworkLayer.onRead(NetworkLayer.Java:136)
        at org.jenkinsci.remoting.protocol.impl.BIONetworkLayer.access$2200(BIONetworkLayer.Java:48)
        at org.jenkinsci.remoting.protocol.impl.BIONetworkLayer$Reader.run(BIONetworkLayer.Java:283)
        at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at hudson.remoting.Engine$1.lambda$newThread$0(Engine.Java:93)
        at Java.lang.Thread.run(Unknown Source)

Mar 02, 2019 3:49:29 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to testing-a.markwaite.net:8080
Mar 02, 2019 3:49:29 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Server reports protocol JNLP4-plaintext not supported, skipping
Mar 02, 2019 3:49:29 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Server reports protocol JNLP3-connect not supported, skipping
Mar 02, 2019 3:49:29 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Server reports protocol JNLP2-connect not supported, skipping
Mar 02, 2019 3:49:29 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Server reports protocol JNLP-connect not supported, skipping
Mar 02, 2019 3:49:29 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:682)
        at hudson.remoting.Engine.innerRun(Engine.Java:639)
        at hudson.remoting.Engine.run(Engine.Java:474)
0
Mark Waite