在我的项目中,我们有一台AWS服务器运行Jenkins Master + 1 Jenkins slave(2位执行器)......我们需要更多: - )
为了增强我们的构建能力,我们有三个选择:
A)向上扩展:使AWS实例更大,并添加更多执行程序。
B)向上扩展:使AWS实例更大,并添加另一个jenkins从属进程。
C)横向扩展:使用jenkins slave创建另一个AWS实例并将其连接到master
我们想做B)因为我们在一个大型组织中,我们现在的Jenkins Master已经可以访问他需要的每个地方。选项C)“新服务器”很复杂,因为它需要更多的官僚批准,需要数周时间。
所以我的问题是:
选项B中是否存在任何技术问题?。也许每个jenkins奴隶的执行者都不知道其他奴隶执行者?
一般来说,缩放Jenkins的最佳方法是什么?扩展或扩展?
答案 0 :(得分:0)
如果我理解正确,你可以使用Jenkins服务器" master"节点有2个执行器。
您已经在使用AWS或其他可扩展的云基础架构,请选择。 B是要走的路。我建议瞄准解决方案,您可以在其中动态添加和删除节点,因为工作负载离开" master"节点(Jenkins服务器)用于作业管理和报告。
我的提示:
- 不要在" master"上运行任何工作。 (或者至少限制尽可能保留cpu功率以进行作业调度)
- 使用用于节点设置的配置脚本为节点创建可重用的映像(配置由脚本或其他部署工具(如Puppet或Docker)完成,以确保节点完全相同)。
- 根据需要运行/终止节点(检查swarm-plugin,简化节点配置和与Jenkins的连接)
- 每个节点的执行程序 - 取决于情况/实例的性能和需求。如果在执行程序上完成的项目使用来自节点的共享资源,则执行程序不会知道同一节点上的其他节点可能会导致问题。 Windows节点和GUI测试的简单示例 - 一个执行者可以从其他人那里窃取应用程序焦点。请注意这些问题,因为这可能会导致不稳定的构建结果。 Docker,VM和其他方式可能会有所帮助。
答案 1 :(得分:0)
找到了一个很好的文档,说明如何设置它。 https://d0.awsstatic.com/whitepapers/DevOps/Jenkins_on_AWS.pdf
还有一节介绍了主实例的自动恢复。
我目前有EFS附加的ASG主实例。这提供了主实例的扩展/缩小以及主实例失败时的某种程度的自动恢复。对于奴隶,如果您设置了适当的奴隶ami图像,EC2插件会产生奇迹。奴隶ami需要git和java-1.8。如果您对奴隶有进一步的要求,请将它们添加到混合物中。
如果对此设置有进一步的疑问,请随时发表评论。