Расширение марионетки и лимит расширения объясняются?

Я ищу кого-то, кто объяснит использование расширения и предела расширения в конфигурации Puppet.

Документация на самом сайте Puppet, мягко говоря, ограничена. Я страдаю от громоподобного стада на моем мастере, то есть несколько агентов одновременно забивают агента для своего каталога до такой степени, что мастер падает, и каждый агент сообщает об ошибке тайм-аута.

Я знаю, что мне нужно использовать параметры splay и splaylimit в моей конфигурации, чтобы остановить регистрацию всех агентов одновременно, но я не знаю, как это реализовать. Кто-нибудь может помочь, пожалуйста?


person LLB3000    schedule 02.10.2015    source источник


Ответы (1)


Параметры splay и splaylimit работают вместе с параметром runinterval, помогая распределять запросы агентов по каталогу во времени. Они полезны в первую очередь в ситуациях, когда агенты многих машин могут быть запущены одновременно, например, когда группа виртуальных машин запускается вместе под управлением одного и того же хоста.

Обычно агент, работающий в режиме демона, запускает запуск каталога при первом запуске и снова с интервалом runinterval. Если для параметра splay установлено значение true, то вместо этого генерируется (псевдо)случайная задержка, не превышающая splaylimit, и откладывается запуск каждого запуска каталога на это время относительно того, когда он запустился бы, если бы расширение было отключено.

Таким образом, если у вас есть проблема с громогласным стадом, возникающая из-за того, что многие агенты запускаются примерно в одно и то же время, вы можете попытаться решить ее, установив

splay = true

в конфигурациях ваших агентов. Если вы не настроите конкретный splaylimit, то по умолчанию будет использоваться ваш runinterval, в результате чего запуски каталога всех агентов, запущенных в одно и то же время, распределятся более или менее равномерно по всему интервалу и, следовательно, по всему времени в будущем.

С другой стороны, если запуск ваших агентов каким-то образом не организован таким образом, чтобы заставить их группироваться, то расширение ничего вам не даст. То есть, если запуск агентов в любом случае примерно случайный, то это не поможет вам сдвинуть их циклы запросов к каталогу.

Я думаю, что splay также может помочь, когда вы запускаете агент в режиме --onetime через внешний планировщик (например, cron). Это было бы хорошим примером использования параметра splaylimit, потому что в этом случае настроенный параметр runinterval не имеет ничего общего с тем, когда и как часто запускается агент.

person John Bollinger    schedule 02.10.2015
comment
Спасибо, Джон, это точно мое понимание, поэтому я рад видеть, что кто-то подтверждает это. У нас нет установленного интервала выполнения, поэтому по умолчанию он составляет 30 минут. Где бы вы установили параметр splay = true? У меня есть это в моем puppet.conf в разделе агента. Но потоки агентов, кажется, не разнесены в стороны, чтобы предотвратить проблему громоподобного стада. Это должно быть в puppet master puppet.conf? Если да, то куда он пойдет? Под основной раздел? - person LLB3000; 02.10.2015
comment
@CoolHandLuke, параметр splay должен быть установлен в разделе [agent] агентов puppet.conf. Убедитесь, что вы работаете с правильным puppet.conf, так как каталог, в котором Puppet ищет его, зависит от идентификатора пользователя процесса и параметров командной строки. Перезапустите агенты после внесения изменений. Кроме того, убедитесь, что это действительно проблема громоподобного стада, а не более общая проблема мощности сервера. - person John Bollinger; 02.10.2015