2015-10-02 30 views
3

我正在寻找某人解释splaylimit在Puppet配置中使用splay &的用法。木偶splay&splaylimit解释?

在木偶网站本身的文档是有限的,至少可以说。 我受到我主人的雷鸣般的牛群的痛苦,即一些代理商一次性敲击代理商的产品目录,导致主人摔倒,每个代理商都报告超时错误。

我知道我需要在我的配置文件中使用splaylimit选项来停止所有代理同时检入,但我不确定如何实现它。 任何人都可以协助吗?

回答

7

splaysplaylimit设置与runinterval设置一起工作,以帮助及时分发代理商的目录请求。它们主要用于可以同时启动许多机器代理程序的情况,例如当一堆虚拟机都在同一主机的控制下一起启动时。

通常,代理人,在守护进程模式下运行时,启动目录运行时,它首先在runinterval间隔启动,并再次。如果splay选项设置true那么它,而不是生成(伪)随机延时不超过splaylimit,并推迟每个目录的时间量,相对时,如果张开,被禁用它就会开始运行的开始。

因此,如果你有许多代理人引起的惊群问题大约在同一时间被启动,那么你可以尝试通过在代理的配置设置

splay = true 

解决这一问题。如果不配置特定splaylimit则默认为您runinterval,导致所有的代理商目录运行在同一时间开始散布或多或少均匀地分布在整个区间,因此在所有的时间向前发展。

在另一方面,如果你代理的启动不以某种方式编排,以便他们造成聚成一团,然后张开,并没有真正为你做任何事情。也就是说,如果代理商初创公司无论如何都是大致随机的,那么它不会帮助您转移他们的目录申请周期。

认为当你在--onetime模式下通过外部调度程序(例如cron)运行代理张开也有帮助。这将为splaylimit设置提供良好的使用案例,因为在这种情况下,配置的runinterval与代理运行的时间或频率无关。

+0

感谢约翰,这是我的理解准确,所以我很高兴看到有人确认。我们没有设置runinterval,所以它默认为30分钟。你会在哪里设置splay = true选项?我在代理部分的puppet.conf中找到它。但代理商的运行似乎没有交错分开以防止雷鸣的牛群问题。它是否需要在puppet master puppet.conf中?如果是这样,它会去哪里?在主控节下? – LLB3000

+1

@CoolHandLuke,'splay'选项应该在代理程序的'puppet.conf'的'[agent]'部分设置。确保你正在使用正确的'puppet.conf',因为Puppet查找它的目录因进程的用户ID和命令行选项而异。进行更改后重新启动代理。此外,确保它确实是一个雷鸣群体的问题,而不是一个更普遍的服务器容量问题。 –