Политика cfengine 3 медленное обновление для клиентов
Моя проблема: политики cfengine3 создаются / обновляются вручную на сервере (концентратор политик), и клиенты регулярно (каждые ~ 5 минут) извлекают их с сервера:/var/cfengine/masterfiles на свой соответствующий клиент: / var / cfengine / входы (как они должны).
Но это ведет себя непоследовательно несколько раз. Обновленный файл на сервере может не отображаться на клиентах до тех пор, пока через некоторое время. Это может быть> 30 минут или более, пока он внезапно не "увидит" обновление. Это происходит особенно, если то, что я создал / обновил, находится в подкаталоге в./masterfiles.
Я проверил с помощью tcpdump, что каждый клиент фактически связывается с главным сервером через порт cfengine (5308) каждые 5 минут.
Я не вижу причины, по которой файлы политики не обновляются.
Кто-нибудь испытал то же самое или есть предложение? Благодарю.
(Только что обновленный до cfengine 3.3.1, смешанная изолированная среда CentOS/Fedora - остальная часть сети успешно работает на cf2).
4 ответа
Дэвид,
Копируются ли обновленные файлы, а локальный cf-agent не реагирует на изменения? Или обновленные файлы не копируются намного позже?
Единственная причина, по которой я могу подумать, - это то, что часы между системами не синхронизированы. Проверьте /var/cfengine/inputs/cf_promises_validated - этот файл заполняется последней проверкой обещаний на сервере, и клиенты перезагружают свои локальные политики, используя эту метку времени.
Вы также можете разместить свой вопрос на Справочном форуме CFEngine, где его обязательно увидит большее количество экспертов CFEngine:)
Дэвид,
Я также подозреваю, что часы перекосят, как Диего. Найдите cf_promises_validated по адресу http://cfengine.com/blog/cfengine-330-release-notes который может дать вам некоторые ресурсы. Ключ - обещания копирования в вашем failsafe.cf.
Как и другие, я подозреваю, что часы искажены Проверьте свои времена. Вы также можете удалить файл cf_promises_validated в /var/cfengine/input на удаленном агенте. Затем он увидит, что файл cf_promises_validated в /var/cfengine/masterfiles на хабе политик отличается и будет выполнять полное обновление политики.
Начиная с 3.3.0 cf_promises_validated должен содержать отметку даты и времени, чтобы мы не полагались на правильную синхронизацию времени для обновлений политики.
Проверьте ваш failsafe.cf, если вы используете политику начальной загрузки по умолчанию.
Политика с 3.3.1 или 3.3.0 (неуверенная в том, что сгенерировала отказоустойчивую систему, на которую я смотрю) имеет обещание с дескриптором check_valid_update, которое использует u_rcp для обновления файла cf_promises_validated при необходимости. Если он исправляет обещание, то он вызывает класс / контекст validated_updates_ready, для которого обещание с дескриптором update_files_inputs_dir ограничено, чтобы обновить остальную часть политики. Проверьте в теле copy_from от u_rcp, что используется для атрибута сравнения. Если это дайджест, то он должен использовать содержимое файла, а не только метки времени на нем.
Вы упомянули, что только что обновили свой CFEngine до 3.3.1.
В 3.3.1 есть новая временная метка в / var / cfengine / masterfiles / cf_promises_validated (я догадался, что предыдущая версия - это пустой файл), что означает, что мы можем просто изменить способ копирования файла из "mtime" в "digest" в вашем файле. текущий failsafe.cf, чтобы избежать проблем с системными часами. Смотрите также /var/cfengine/share/CoreBase/failsafe.cf, body copy_from u_rcp уже имеет "дайджест" составного тела.