Jenkins部署多台服务器;3个节点配置最容易错

一台 Jenkins 带多台机器,最耗时间的从来不是写流水线,而是节点这一层。jenkins部署多台服务器这个事,装包、开端口只是开头,真正让人反复返工的是「任务在 A 机上正常、换到 B 机就直接挂」这种没头没脑的现象。下面这三块是最容易配错的地方,顺序按我遇到问题的密度排,不代表重要程度。

Linux

jenkins部署多台服务器时,标签这栏最容易想当然

标签(Label)和「用法(Usage)」是两件事,很多人混着用。标签是给任务挑机器的,用法是决定 Jenkins 会不会主动把任务往这台机器上派。你把一台机器打成 linux 这种太宽的标签,所有任务也都写着 linux,结果就是谁空闲谁跑——要跑数据库迁移的脚本落在只装了 nginx 的机器上,不出事才怪。比较稳的做法是按「用途+环境」打两层,比如 build-prod、build-test,别拿操作系统名字当业务标签,那个适合做通用池。

还有「用法」那栏只有两个选项:尽可能使用这台节点、只允许绑定到此节点。后者配错的结果特别隐蔽——任务不写标签就永远排在队列里,构建页面不报红,队列就是不往下走,新手能盯半天。

SSH 那条线,密钥对了照样可能连不上

新建节点时 Jenkins 会生成一对密钥,或者让你贴私钥,公钥要放到目标机对应用户的 ~/.ssh/authorized_keys 里。权限这块是硬性的:authorized_keys 得 600,.ssh 目录得 700,松了 sshd 直接拒,反馈给你只有一句 authentication failed,看着像密码错,实际是权限被挡。

另一个是 known_hosts。Jenkins 用户家目录一般是 /var/lib/jenkins,它认的指纹就在 /var/lib/jenkins/.ssh/known_hosts 里。目标机重装过、换过机器、镜像重建过,指纹一变,连接就卡在 host key 校验。要么手工用 ssh-keyscan 把那台的公钥写进去,要么在节点配置里放宽严格校验——内网测试机随便,生产环境自己权衡,别图省事。

工作目录别几台机器共用一条路

远程节点的工作目录默认在 jenkins 用户家目录下,如果几台机器是同一个模板镜像做出来的,路径会一模一样,看着很整齐。问题出在流水线里写死了绝对路径:workspace 名字相同,里面的缓存可完全不同,maven 本地仓库、node_modules、docker 镜像层都是各存各的,谁先跑谁先把磁盘吃满,然后构建无缘无故失败。

更危险的是拿 NFS 把同一份 workspace 挂给多台机器。两个构建同时写一个 target 目录,出来的包完整不完整只能靠运气。要么每台节点独立磁盘,要么把缓存目录按节点名分开,别共享可写目录。

时间不同步,日志会骗你

多节点并行、定时触发、跨机器收日志的时候,时间差几分钟就能把人绕进去。master 上记录的开始时间是一个点,agent 上打出来的日志是另一个点,你按时间对齐去看,怎么都对不上,还怀疑任务被重复触发了。

配 ntp 或者 chronyd 是基础动作,另外别忘了时区。国内机器是 Asia/Shanghai,海外节点有的默认 UTC,两边日志一混差好几个小时,排起来非常劝退。

agent 主动连还是 master 连过去,方向反了全是超时

这是网络层最容易搞反的一处。默认是 master 通过 SSH 连 agent 的 22 端口,机器一多、网段一散,加白名单就变成体力活。这时候可以反过来,用 inbound agent 让 agent 主动连 master 的 50000 端口(新版也可以改),一般出网比入网好说话。

麻烦在于两边要同时改:agent 端要能让 50000 出去,master 端要能让 50000 进来。云上的安全组和机器里的 firewalld、ufw 是两套规则,改完一套忘了另一套,症状就是转圈超时,还不告诉你卡在哪一步。

环境不一致,最容易被误判成配置问题

JDK 版本不同、PATH 里先找到的是哪个 python、docker 命令要不要 sudo、默认 shell 是 bash 还是 sh——这些在节点列表里看不出来,只有真跑一次才暴露,但表现出来很像「节点没配好」。

省事的办法是给所有节点跑一条体检流水线,把 java -version、node -v、docker version、echo $PATH 和环境变量打出来,几台机器结果一对比就清楚,比一台台手敲快得多。新机器进来先跑体检,再挂真实任务。

加机器之前,照着这几条核一遍

标签字符串和任务里写的完全一致吗,大小写算不算对;用法选了「只允许绑定」的话,每个任务是不是都写了标签;目标机 authorized_keys 权限 600、.ssh 是 700;known_hosts 里那台的指纹是不是当前这台机器的;工作目录还剩多少空间,缓存有没有按节点隔离;ntp 或 chronyd 在不在跑,时区对不对;连接方向、端口、安全组和系统防火墙两边都放行没有;最后体检流水线跑一遍,输出存下来留着对比。

节点配错的代价通常不是报错,而是排队卡住、任务跑歪、包不对,这三种都不给明确提示。所以别急着一次接十台,先把一台跑顺,再照同样的模板往上加,出错时至少知道是哪一步动过。

【版权声明】:本站内容若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

赞 (0)
爱家的头像爱家
Ei收录3个硬门槛,卡住的多在检索号
上一篇 2026-10-27 21:42
小程序打开报错是什么原因,该如何正确解决?
下一篇 2025-10-05 15:50

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信