2016-02-04 1 views
1

Ну, вопрос не новый, но я все еще не могу найти приятного решения. Я распространяю двоичные файлы размером 100-300 МБ через кукольный файловый сервер, но он работает очень плохо в случае производительности, я уверен, из-за проверки md5. Теперь у меня более 100 серверов, и мой марионеточный мастер очень усердно справляется со всеми проверками вычислений md5. В кукольной контрольной сумме 3.x для файла {} не работает. Я не могу обновить марионетку 4.x, и у меня нет шансов изменить поток. файлы должны поступать из кукового файлового сервера. Так что я не могу поверить, что нет настраиваемого типа файла с фиксированной опцией контрольной суммы, но я не могу его найти :( Или, может быть, есть какой-либо другой способ скачать файлы с кукольного файлового сервера? Пожалуйста, любой совет поможет! Rsync или пакет как родной пакет невозможно вариант для меня.кукольный файловый сервер распространяет двоичные файлы

ответ

3

это действительно разумно предположить, что, используя алгоритм контрольной суммы по умолчанию (MD5) при управлении большими файлами будет иметь существенное влияние на производительность. File resource имеет checksum attribute, который должен использоваться для указания альтернативного алгоритма контрольных сумм среди тех, которые поддерживаются Puppet (некоторые из них на самом деле не являются контрольными суммами per se), но it was buggy in many versions of Puppet 3. на этот раз не кажется, что исправление, реализованное в Puppet 4, было передано в пакет Puppet 3.

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

file { '/path/to/bigfile.bin': 
    ensure => 'file', 
    source => 'puppet:///modules/mymodule/bigfile.bin', 
    owner => 'root', 
    group => 'root', 
    mode  => '0644', 
    checksum => 'none', 
    replace => false 
} 

Если вы хотите управлять существующими файлами, однако, затем кукольный нужен способ, чтобы определить, является ли файл уже присутствует на узле до настоящего времени. Это одна из двух основных целей контрольных сумм. Если вы настаиваете на распространении файла через файловый сервер Puppet, и вы застряли на Puppet 3, то я боюсь, что вам не повезло, насколько ослабить нагрузку. Файловый сервер Puppet тесно интегрирован с типом файлового ресурса и не предназначен для общих целей. Насколько мне известно, не существует стороннего типа ресурсов, который его использует. В любом случае, файловый сервер сам по себе является одним из основных факторов проблемы File. checksum параметр не работает. Ошибочные версии не выполняют никаких контрольных сумм, отличных от MD5.

В качестве альтернативы вы можете рассмотреть возможность упаковки большого файла в собственный формат упаковки вашей системы, сброс его в свой внутренний репозиторий пакетов и управление пакетом (через ресурс Package) вместо управления файлом напрямую. Это избавляет его от распространения через файловый сервер, но это почти так.

+0

Спасибо за ответ! Да ... Я некоторое время был проблемой PUP-1208 :), но не знал, что он был отправлен в куклу 3.x Я пробовал 3.8.5, и он не работал так же, как 3.5.x Я имею в виду md5lite или sha даже ctime или mtime. В моем случае я действительно забочусь о состоянии файла uptodate, поэтому мне mtime должно быть достаточно, но оно не работает :( Btw Я застрял на марионетке 3.x из-за проекта TheForeman, мы его много используем, и он по-прежнему не поддерживает кукольный 4. Может быть, нужно попробовать puppetDB ... –

+0

@RomanIuvshin, я написал, что исправление к PUP-1208 не было * не * было передано, поэтому я не удивлен, услышав, что v3.8.5 проявил такое же неправильное поведение, как v3.5 Что касается puppetDB, я не совсем понимаю, что вы надеетесь, что сделаете для вас в этой ситуации. Если вам нужно остаться на Puppet 3, но уйти от MD5, вам, вероятно, придется уйти от файлового сервера Puppet. предложение об использовании пакетов вместо этого является довольно простой альтернативой, но есть и другие. –

+0

О, я вижу сейчас. Спасибо за отличное разъяснение! –