系列目录html
前面的demo咱们使用的都是只有一个windows主节点的的jenkins,实际生产环境中,一个节点每每是不能知足需求的.好比,.net项目要使用windows节点构建,java项目若是部署在linux服务器上每每也须要目标类型的linux节点作为构建节点,开发中使用的jdk版本不一样也可能须要不一样的构建主机.构建docker镜像每每也须要linux主机(强烈不建议使用docker for windows 进行linux环境的docker构建).本节咱们讲解如何搭建一个主节点为windows server主机,从节点同时包含windows server和centos的jenkins集群java
须要注意的是,因为windows不支持ssh(至少目前绝大多数线上的windows server主机是这样的),所以windows从节点每每是经过JNLP
的方式搭建的.而linux则相对较为简单,只须要配置ssh便可.linux
使用JNLP
配置从节点虽然也不十分复杂,可是缺点也比较明显.那就是须要在目标主机上启动一个控制台程序,一方面这个程序容易被误关,另外一方面若是windows server重启则须要手动把它启动起来,这样极大增长了工做量.若是运维的工做负荷很是高,极可能在一次大规模主机重启后忘记重启一些软件,这样不少错误可能在已经影响使用的状况下才会发现.所以,这里咱们探索一种新的方式,即便用微软公司开发的win32-openssh
(现已集成到windows 10和windows server 2019),配置也很是方式.有了win32-openssh,咱们就能够像linux主机同样使用ssh方式配置windows从节点.虽然咱们提倡使用win32-openssh,可是仍然会介绍如何使用JNLP来配置windows从节点git
通过笔者测试,win32-openssh支持windows server 2008及以上版本,目前恐怕没有更老的服务器版本了吧,你们不用担忧生产环境没法使用的问题.固然,win32-openssh的用途毫不仅限于搭建jenkins混合集群,还能够用它完成更多的基于windows的自动化管理工做.笔者基于win32-openssh作了一套windows服务的自动化管理工具(支持windows服务的关闭,更新,启动,重启,中止,扩容等功能),目前部署在大约30台线上服务器上.github
前面咱们说到要基于win32-openssh来基于ssh配置Jenkins的windows从节点,这节咱们就先介绍如何安装win32-openssh,而后紧接着开始使用ssh配置jenkins windows从节点.docker
linux从节点ssh配置也是同样,所以再也不单独介绍linux从节点的ssh配置shell
咱们进入openssh-win32github页面进行下载,根据本身系统位数选择32位或者64位的.windows
下载完成之后进行解压,把解压后的文件夹放到C盘(也能够是其它盘),而后进入文件夹里面,内容相似以下:centos
在当前目录下打开powershell(或者从其它位置打开,cd到当前目录),在powershell命令窗口输入.\install-sshd.ps1
,执行安装命令.安全
若是在执行过程当中powershell报错,提示权限不足,则进行如下设置
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
,不少网上的教程没有指定scope,则很容易形成安全问题,在我的电脑上无所谓,在服务器上必定要重视太高的权限.
完了之后再执行FixHostFilePermissions.ps1
和FixUserFilePermissions.ps1
这两个文件.(在powershell命令窗口输入.\文件名
).
安装完成之后,ssh相关服务默认是不启动的,咱们打开服务管理界面,手动启动它们并把启动类型设置为自动,这样服务器重启开机时ssh相关的服务就会自动启动.
windows较新的版本已集成了openssh,可是须要手动开启它.
个人电脑
,而后点击上面的计算机
标签,而后选择卸载或更新应用
管理额外功能
添加功能
,而后在出现的列表里找到ssh相关的功能,都添加上咱们把win32-openssh所在文件夹路径添加到环境变量path里,这样咱们就能够在控制台输入ssh
命令来链接远程主机,而不须要相似xshell,putty这样的终端工具.
添加完环境变量后,咱们打开cmd或者powershell命令窗口,输入ssh-keygen
命令,生成ssh key,输入命令后一路回车.最终生成的key存放在C:/Users/当前用户名/.ssh/
目录下.
其中id_rsa
为私钥,id_rsa.pub
为公钥,authorized_keys
为受权访问本机的远程电脑的公钥,known_hosts
为,初次访问远程主机时存储的信息.晚些时候咱们会用到这些文件.
安装完ssh之后若是忘记了它的安装位置,打开命令窗口,输入
where ssh
就能够看到ssh.exe所在的目录.