当我们写好一个程序以后,需要在多台机器上进行部署操作,如果我们使用每台机器独立部署的话,就很耗时间,这个时候我们可以利用Jenkins的主从机制来进行部署操作。
首先看个图,大概理解一下Master Slave模式的可以应用的场景
1.首先,安装Jenkins Master,这个可以参考上一篇文章
2.安装成功之后,接下来就是配置Slave Node
打开Jenkins->Manage Jenkis->Manage Nodes
点击New Node,创建一个新的Slave节点
填写好相关参数信息
保存成功以后,在列表中点击Node的名称,然后会看到如下信息,点击agent.jar进行文件下载并保存。
接下来,使用root并ssh登录到slave的机器,如图中192.168.10.101。创建/jenkins/jenkins-slave这个目录,并将agent.jar复制到这个目录中。
mkdir /jenkins/jenkins-slave
chmod -R 777 /jenkins/jenkins-slave
cd /jenkins/jenkins-slave
# 将agent.jar复制到该目录下
创建文件/etc/init.d/jenkins-slave并修改并复制以下代码到该文件中
vi /etc/init.d/jenkins-slave
#!/bin/bash
#
# /etc/init.d/jenkins-slave
#
# To add the script to autostart call =>
# sudo update-rc.d jenkins-slave defaults
#
# To remove the script from autostart call =>
# sudo update-rc.d -f jenkins-slave remove
#
### BEGIN INIT INFO
# Provides: jenkins-slave
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts jenkins-slave
# Description: Starts jenkins-slave
### END INIT INFO
Name="192.168.10.101"
InstanceName="192.168.10.101"
JenkinsUrl="http://jenkins-master-ip:8080"
SlaveWorkspace="/weixing/jenkins"
# 启动slave的日志文件,启动的时候可以查看,是否有报错
Log="/var/log/jenkins"
Pidfile="/var/run/jenkins-slave.pid"
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# 在下载agent.jar的地方下面的命令里面有这个key
SecretKey="xxxxxxxxxxxxxxxxxxxxxxxx"
case "$1" in
start)
touch $Log
# chown shopbuilduser.root $Log
echo "Starting $Name">>$Log
"$JAVA_HOME/bin/java" -jar $SlaveWorkspace/agent.jar -jnlpUrl $JenkinsUrl/computer/$InstanceName/slave-agent.jnlp -secret $SecretKey 2>>$Log >>$Log &
Pid=$!
if [ -z $Pid ]; then
printf "%s\n" "Fail"
else
echo $Pid > $Pidfile
printf "%s\n" "Ok"
fi
;;
stop)
printf "%-50s" "Stopping $Name"
Pid=`cat $Pidfile`
if [ -f $Pidfile ]; then
kill -TERM $Pid
printf "%s\n" "Ok"
rm -f $Pidfile
else
printf "%s\n" "pidfile not found"
fi
;;
restart)
$0 stop
$0 start
;;
status)
printf "%-50s" "Checking $Name..."
if [ -f $Pidfile ]; then
Pid=`cat $Pidfile`
if [ -z "`ps axf | grep ${Pid} | grep -v grep`" ]; then
printf "%s\n" "Process dead but pidfile exists"
echo "Pidfile: $Pidfile"
else
echo "Running"
echo "Pid: $Pid"
echo "Pidfile: $Pidfile"
fi
else
printf "%s\n" "Service not running"
fi
;;
*)
echo "Usage: $0 {start|stop|restart}"
;;
esac
现在可以启动jenkins-slave了
sudo chmod 755 /etc/init.d/jenkins-slave
sudo chown root:root /etc/init.d/jenkins-slave
/etc/init.d/jenkins-slave start
添加开机启动命令
vi /etc/rc.local
# 在exit前面增加一行这个命令: sh /etc/init.d/jenkins-slave start
Jenkins Slave的其他的一些命令
# 启动Slave
/etc/init.d/jenkins-slave start
# 停止Slave
/etc/init.d/jenkins-slave stop
# 重启Slave
/etc/init.d/jenkins-slave restart
启动成功以后,如果以上步骤都没有问题,并且日志也没有报错。在master中的节点列表中点击节点名称,详细信息中就可以看到,已连接
至此,我们已经成功将Master和Salve建立了连接。接下来,的一篇文章将介绍如何使用我们建立好的Master-Slave模式来部署Java的Springboot应用。
大家加油!
以下是参考文章: