环境背景:
Linux环境下,Centos操作系统,Master机器安装了Jenkins,节点机Slave已做了关联,然后Slave机器关机后,开机然后jnlp连接不上了,如图:
在这里插入图片描述
解决排查办法:

方法1_普通执行java -jar agent.jar的命令来连接(失败)

1.进入到slave所在的节点服务器,进入到agent.jar所在的目录,然后执行java -jar agent.jar的命令:

java -jar agent.jar -jnlpUrl masterIP+端口/computer/节点机器名称/slave-agent.jnlp -secret 6f19e8130b6bf2c1ae8dbXXXXXX -workDir "/opt/Pro"

如下图示错误提示:远程可执行文件(RWX)应该可以完全访问指定的工作目录
在这里插入图片描述2.然后给slave机器所在的远程工作区域/opt/Pro所在目录赋权

sudo chmod 777 -R  /opt/Pro

应该是大写R,递归赋权,报错是remoting没权限,然后尝试java -jar命令后还是报同样的错
3.继续给agent.jar赋权

sudo chmod 777 -R  agent.jar

然后尝试java -jar命令后还是报同样的错!

方法2_重新下载agent.jar然后赋权,再执行java -jar命令(失败)

1.重新下载agent.jar然后赋权,再执行java -jar命令,agent.jar是Master节点机器下载下来,然后上传到slave节点机上的;也可以在slave机器通过wget方式下载,命令如下(如果是root权限,则不用加sudo)

sudo wget masterIP+端口/jnlpJars/agent.jar

然后赋权sudo chmod 777 -R agent.jar后再次执行java -jar命令,还是不行!在这里插入图片描述

方法3_联系root用户管理员,执行java -jar命令(成功)

1.联系root用户管理员,执行java -jar命令,执行后报错:
bash: java: command not found 即java命令没找到
在这里插入图片描述
2.然后用root用户执行source /etc/profile
在这里插入图片描述
然后执行java -jar命令成功,进入到Jenkins-Master界面查看节点机器状态连接成功,这里怀疑看对应的应用有没有在自动启动项里面,或者环境变量被谁动了。
在这里插入图片描述
4.使用nohup后台运行方式,关闭Xshell终端后发现slave节点机和master又断开后,换一种方式通过nohup方式在后台运行:

nohup java -jar agent.jar -jnlpUrl masterIP+端口/computer/节点机器名称/slave-agent.jnlp -secret 6f19e8130b6bf2c1ae8dbXXXXXX -workDir "/opt/Pro" &

在shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;如果每次在nohup执行成功后直接点关闭程序按钮关闭终端,所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。
参考文章:https://www.cnblogs.com/keystone/p/11159665.html

后记:
a.关键时候要用root权限,另外777 是对root权限的,当前用户如果不知道uid那就 用+wx的方法加权
b. 每天自动执行一次比如执行脚本的定时任务前,因为这个jnlp的socket不稳定(待研究)

Logo

更多推荐