|NO.Z.00037|——————————|^^ 配置 ^^|——|CI/CD&Jenkins_pipeline操作.V11|——|Jenkins_Master_Slave|

一、Jenkins Master-slave:Jenkins Master-Slave架构
### --- Jenkins Master-slave架构说明

~~~     jenkins的Master-slave分布式架构主要是为了解决jenkins单点构建任务多、负载较高、性能不足的场景。
~~~     Master/Slave相当于Server和agent的概念。
~~~     Master提供web接口让用户来管理job和slave,
~~~     job可以运行在master本机或者被分配到slave上运行构建。
~~~     一个master(jenkins服务所在机器)可以关联多个slave用来为不同的job或相同的job不同配置来服务。
二、安装Jenkins-slave
### --- 安装说明

~~~     **前提:slave 所在服务器必须有 java环境**
~~~     jenkins web 端进行操作:
~~~     系统管理->管理节点->新建节点
### --- 进行基础配置

~~~     ——>配置选项中的内容是可变的,根据情况来
~~~     ——>注意这里需要配置凭据,也就是配置slave所在服务器用户和密码
~~~     ——>之后保存,如果无误的话就会直接启动了,如图下所示是有问题的
### --- ——>通过看输出日志,发现是 jdk 的问题,一般来说,
~~~     其会判断 slave 所在服务器有没有 jdk,如果有就会进行检测,
~~~     如下图所示,就是没有检查到(因为jdk是我们自己装的,路径并不是默认的路径)。

SSHLauncher{host='10.10.10.11', port=22, credentialsId='a12986da-f7bd-4ae3-96e5-f6c5e74899ba', jvmOptions='', javaPath='', prefixStartSlaveCmd='', suffixStartSlaveCmd='', launchTimeoutSeconds=60, maxNumRetries=10, retryWaitTime=15, sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.ManuallyTrustedKeyVerificationStrategy, tcpNoDelay=true, trackCredentials=true}
[03/30/21 15:18:27] [SSH] Opening SSH connection to 10.10.10.11:22.
[03/30/21 15:18:27] [SSH] The SSH key with fingerprint 41:6d:e3:57:28:fa:ee:a9:e1:82:7f:19:e8:f0:f1:76 has been automatically trusted for connections to this machine.
[03/30/21 15:18:28] [SSH] Authentication successful.
[03/30/21 15:18:28] [SSH] The remote user's environment is:
BASH=/usr/bin/bash
BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_EXECUTION_STRING=set
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.2.46(2)-release'
DIRSTACK=()
EUID=0
GROUPS=()
HOME=/root
HOSTNAME=jenkins
HOSTTYPE=x86_64
ID=0
IFS=$' \t\n'
LANG=en_US.UTF-8
LESSOPEN='||/usr/bin/lesspipe.sh %s'
LOGNAME=root
MACHTYPE=x86_64-redhat-linux-gnu
MAIL=/var/mail/root
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
PIPESTATUS=([0]="0")
PPID=21781
PS4='+ '
PWD=/root
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=1
SSH_CLIENT='10.10.10.11 45740 22'
SSH_CONNECTION='10.10.10.11 45740 10.10.10.11 22'
TERM=dumb
UID=0
USER=root
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
XDG_RUNTIME_DIR=/run/user/0
XDG_SESSION_ID=80
_=/etc/bashrc
flatpak_dirs=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/
command_not_found_handle () 
{ 
    local runcnf=1;
    local retval=127;
    [[ $- =~ i ]] || runcnf=0;
    [[ ! -S /run/dbus/system_bus_socket ]] && runcnf=0;
    [[ ! -x '/usr/libexec/packagekitd' ]] && runcnf=0;
    [[ -n ${COMP_CWORD-} ]] && runcnf=0;
    if [ $runcnf -eq 1 ]; then
        '/usr/libexec/pk-command-not-found' "$@";
        retval=$?;
    else
        if [[ -n "${BASH_VERSION-}" ]]; then
            printf 'bash: %scommand not found\n' "${1:+$1: }" 1>&2;
        fi;
    fi;
    return $retval
}
[03/30/21 15:18:28] [SSH] Checking java version of /var/lib/jenkins/jdk/bin/java
Couldn't figure out the Java version of /var/lib/jenkins/jdk/bin/java
bash: /var/lib/jenkins/jdk/bin/java: No such file or directory
### --- ——>没有检查到的话其就会去oracle官网下载,来为 slave 所在服务器进行安装,
~~~     但是因为中国的原因,被墙了,所以也会下载失败,最终就导致彻底失败了,失败如图下:

[03/30/21 15:18:28] [SSH] Checking java version of java
[03/30/21 15:18:28] [SSH] java -version returned 1.8.0_161.
[03/30/21 15:18:28] [SSH] Starting sftp client.
[03/30/21 15:18:33] [SSH] Copying latest remoting.jar...
[03/30/21 15:18:34] [SSH] Copied 1,506,923 bytes.
Expanded the channel window size to 4MB
[03/30/21 15:18:34] [SSH] Starting agent process: cd "/var/lib/jenkins" && java  -jar remoting.jar -workDir /var/lib/jenkins -jar-cache /var/lib/jenkins/remoting/jarCache
Mar 30, 2021 3:18:35 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
INFO: Using /var/lib/jenkins/remoting as a remoting work directory
Mar 30, 2021 3:18:35 PM org.jenkinsci.remoting.engine.WorkDirManager setupLogging
INFO: Both error and output logs will be printed to /var/lib/jenkins/remoting
<===[JENKINS REMOTING CAPACITY]===>channel started
Remoting version: 4.6
This is a Unix agent
Evacuated stdout
Agent successfully connected and online

slave构建失败解决方案——JDK环境原因
### --- slave构建失败解决方案——JDK环境原因

~~~     # 方案一:
~~~     ——>在配置时高级的选项里指定java路径:如下图所示:
~~~     # 方案二:
~~~     ——>为 java 路径做一个软链接,保证 jenkins 可以检测到 java。

[root@jenkins ~]# ln -s /usr/local/jdk1.8/bin/java /usr/bin/java
[root@jenkins ~]# ll /usr/bin/java
lrwxrwxrwx 1 root root 26 Jul 25 17:33 /usr/bin/java -> /usr/local/jdk1.8/bin/java

~~~     执行构建——之后在看已经成功了!

[03/30/21 15:18:28] [SSH] Checking java version of java
[03/30/21 15:18:28] [SSH] java -version returned 1.8.0_161.
[03/30/21 15:18:28] [SSH] Starting sftp client.
[03/30/21 15:18:33] [SSH] Copying latest remoting.jar...
[03/30/21 15:18:34] [SSH] Copied 1,506,923 bytes.
Expanded the channel window size to 4MB
[03/30/21 15:18:34] [SSH] Starting agent process: cd "/var/lib/jenkins" && java  -jar remoting.jar -workDir /var/lib/jenkins -jar-cache /var/lib/jenkins/remoting/jarCache
Mar 30, 2021 3:18:35 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
INFO: Using /var/lib/jenkins/remoting as a remoting work directory
Mar 30, 2021 3:18:35 PM org.jenkinsci.remoting.engine.WorkDirManager setupLogging
INFO: Both error and output logs will be printed to /var/lib/jenkins/remoting
<===[JENKINS REMOTING CAPACITY]===>channel started
Remoting version: 4.6
This is a Unix agent
Evacuated stdout
Agent successfully connected and online
~~~     ——>并且也可以在 slave 所在服务器看到:
~~~     ——>jar 包就是负责接收 master 任务的。

[root@jenkins ~]# ps -ef |grep slave
root      22545  20414  0 15:30 pts/2    00:00:00   -c cd -/var/lib/jenkins" && java -jar slave.jar
root      22545  20414  0 15:30 pts/2    00:00:00   java -jar slave.jar
root      22545  20414  0 15:30 pts/2    00:00:00 grep --color=auto slave

三、配置job,执行构建
### --- 配置job,执行构建

~~~     # 在项目 job 中进行配置:
~~~     ——>可通过标签或者名称进行匹配(标签可在安装时配置)
~~~     # 构建
~~~     ——>可以发现控制台的日志,其也是 slave 构建的
~~~     ——>之后查看构建完的工作目录,也有预想中的文件。

[root@tomcat ~]#  ls /var/lib/jenkins/workspace/A-web1
index1.html  index.html
~~~     ——>这样基本上就实现了借助 jenkins 的 slave 去构建 job了。
~~~     目前是在 slave 构建也在 slave 上部署,之后我们可以通过脚本,
~~~     比如借助 rsync、ansible 等部署在其他服务器上。
四、扩展
### --- 扩展

~~~     ——>可以为slave服务器在配置时候加上标签,这样也会方便我们选择,
~~~     用法也不单单局限在一台服务器上,可以让多台 slave 去竞选。

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(52)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示