连接过程
- master通过ssh协议访问slave的sshd服务,先建立ssh连接
- 检查slave中的java程序及版本
- 拷贝最新的remoting.jar到slave中,如果slave中已经存在remoting.jar,则校验master与slave中jar的md5值是否一致,如果不一致则更新。
- 启动命令建立master与slave通信的专用通道,后续master向slave下发命令都是通过该通道进行。
slave中的连接日志保存在 ${slave_workspace}/remoting/logs 目录下,每次master与slave的连接都会生成一个 remoting.log.x 的日志文件
master中的连接日志保存在 ${master_jenkins_home}/logs/slaves/${slave_name}/slave.log.x
master上的连接日志如下:
1 | SSHLauncher{host='192.168.43.150', port=22, credentialsId='test', jvmOptions='', javaPath='', prefixStartSlaveCmd='', suffixStartSlaveCmd='', launchTimeoutSeconds=210, maxNumRetries=10, retryWaitTime=15, sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.NonVerifyingKeyVerificationStrategy, tcpNoDelay=true, trackCredentials=true} |
重连方法
修改了slave的某些配置(如修改了tmpdir)后需要重新建立slave与master的连接,通过master上的Mark this node temporarily offline
按钮时实现不了重连功能的。
- 通过
Disconnect
按钮进行断链,然后重新Launch agent
- 重启执行机,执行机重启后,master会自动重连
- 执行
Delete Agent
删掉该执行机后重新添加该执行机 到执行机上杀掉对应进程,然后再master中再
Launch agent
1
2
3
4
5
6
7[root@localhost ~]# ps -ef |grep remoting.jar
root 8015 7860 0 17:16 ? 00:00:00 bash -c cd "/data/workspace" && java -jar remoting.jar -workDir /data/workspace -jar-cache /data/workspace/remoting/jarCache
root 8020 8015 5 17:16 ? 00:00:08 java -jar remoting.jar -workDir /data/workspace -jar-cache /data/workspace/remoting/jarCache
root 10188 5056 0 17:19 pts/0 00:00:00 grep --color=auto remoting.jar
[root@localhost ~]# kill -9 8015
[root@localhost ~]# ps -ef |grep remoting.jar
root 10552 5056 0 17:19 pts/0 00:00:00 grep --color=auto remoting.jar