
Я вижу следующие записи syslog примерно раз или два в день на одном из моих серверов. Этот сервер создает резервные копии файлов в пространстве AFS с использованием принципала службы Kerberos:
Dec 6 04:01:06 myserver kernel: [3681180.757245] afs: Tokens for user of AFS id -1 for cell realm.example.com have expired (server 192.168.22.24)
На сервере установлен Debian wheezy 64-bit. Что я могу сделать, чтобы отследить, что может быть причиной этого сообщения?
решение1
Вероятной причиной идентификатора -1 является то, что токены были уничтожены примерно в то же время, когда появилось сообщение. Либо кто-то «вывел токены из системы», либо (что более вероятно) периодические процессы очистки в модуле ядра заметили, что токены просрочены, и сделали их недействительными. Идентификатор -1 — это один из способов, которым токены помечаются как недействительные (это ViceId в структуре «unixuser» в модуле ядра openafs). Если вы всегда видите идентификатор -1 в этом сообщении, то на самом деле не возможнознатьчто именно вызывает эти сообщения, если только в это время не запущено всего несколько процессов, аутентифицированных в AFS.
Если вы еще этого не делаете, вам следует использовать k5start или krenew (оба в пакете «kstart» в Debian) с опцией -t, чтобы гарантировать, что ваш процесс резервного копирования файлов имеет неистекшие токены для доступа к AFS.
Однако если вы используете k5start, все равно возможны сбои доступа с истекшим сроком действия токенов из-за некоторых пограничных случаев в работе опции -K:http://permalink.gmane.org/gmane.comp.encryption.kerberos.general/18343. Поскольку k5start с -K гарантирует, что его билеты krb5 будут действительны в течение 2 минут в будущем, можно получить токены AFS, которые будут действительны в течение примерно 2 минут или меньше в будущем. Если эти токены, действительные в течение 2 минут, используются для связи с файловым сервером AFS, и связь занимает больше 2 минут, доступ может быть прерван с сообщением «срок действия токенов истек». Или если максимальный срок действия билета для принципала службы AFS меньше максимального срока действия билета для TGT, токены AFS могут истечь до истечения срока действия ваших билетов, и поэтому k5start позволит им истечь.
Вы можете гарантировать, что этого не произойдет, увеличив гарантированный срок действия тикета, используя опцию -H вместе с опцией -K. Просто установите -H на что-то большее, чем 2 минуты по умолчанию; может быть, 30 минут или час. Или вы можете использовать опцию -a, чтобы всегда обновлять тикеты каждый раз, когда k5start/krenew просыпается (это то, что я бы рекомендовал). Однако все, что написано в абзаце, невозможно с последней выпущенной версией k5start, поэтому для этого вам нужно дождаться нового релиза k5start или собрать его из git.
Другой способ решения этой проблемы — не использовать k5start, а запустить собственный скрипт примерно kinit -kt /path/to/keytab && aklog
каждый час в той же PAG, что и процесс резервного копирования файлов в AFS.