如何在主从之间分配负载
How to split load between master and slave
我设置了一个slave。
对于执行 shell 脚本的作业,我在从站和主站上配置为 运行。
如果我启动同一个作业的 2 个实例,我观察到该作业仅由 master 运行,第二个实例等待第一个完成,它也将 运行 由 master大师.
希望master和slave同时工作
为什么slave总是空闲?
有没有办法优先考虑一个奴隶?
UPDATE:在我的用例中,作业使用数据库进行破坏性测试,因此在一个节点中拥有多个相同作业的实例不利于可靠性.每个节点都有一份数据库。
首先,转到作业配置页面并检查 "Execute concurrent builds if necessary"。这将允许您的作业的多个实例同时执行。
接下来,转到构建节点的配置页面(通过主页上的 link "Build Executor Status")并将每个节点的“# of executors”设置为 1(master 和奴隶) 。这将防止一个构建节点同时 运行 多个作业。
结果应该是,如果您启动同一个作业的 2 个实例,一个将在 master 上执行,一个将在 slave 上执行。
使用 jenkins 管道脚本的解决方案:
node("master") {
parallel (
"masterbuild" : {
node ("master") {
mybuild()
}
},
"slavebuild" : {
node ("slave") {
mybuild()
}
}
)
}
def mybuild() {
sh 'echo build on `hostname`'
}
这是对 Wim
答案的改进:
转到作业配置页面并检查 "Execute concurrent builds if necessary"。这将允许您的作业的多个实例同时执行。
接下来,使用 Throttle Concurrent Builds Plug-in.
这样每个节点只允许执行一次,不同节点之间负载均衡
通过这种方式,节点不会失去同时 运行 多个不相关作业的能力。
我设置了一个slave。 对于执行 shell 脚本的作业,我在从站和主站上配置为 运行。 如果我启动同一个作业的 2 个实例,我观察到该作业仅由 master 运行,第二个实例等待第一个完成,它也将 运行 由 master大师.
希望master和slave同时工作
为什么slave总是空闲?
有没有办法优先考虑一个奴隶?
UPDATE:在我的用例中,作业使用数据库进行破坏性测试,因此在一个节点中拥有多个相同作业的实例不利于可靠性.每个节点都有一份数据库。
首先,转到作业配置页面并检查 "Execute concurrent builds if necessary"。这将允许您的作业的多个实例同时执行。
接下来,转到构建节点的配置页面(通过主页上的 link "Build Executor Status")并将每个节点的“# of executors”设置为 1(master 和奴隶) 。这将防止一个构建节点同时 运行 多个作业。
结果应该是,如果您启动同一个作业的 2 个实例,一个将在 master 上执行,一个将在 slave 上执行。
使用 jenkins 管道脚本的解决方案:
node("master") {
parallel (
"masterbuild" : {
node ("master") {
mybuild()
}
},
"slavebuild" : {
node ("slave") {
mybuild()
}
}
)
}
def mybuild() {
sh 'echo build on `hostname`'
}
这是对 Wim
答案的改进:
转到作业配置页面并检查 "Execute concurrent builds if necessary"。这将允许您的作业的多个实例同时执行。
接下来,使用 Throttle Concurrent Builds Plug-in.
这样每个节点只允许执行一次,不同节点之间负载均衡
通过这种方式,节点不会失去同时 运行 多个不相关作业的能力。