winbind аутентификация через апач медленный
У меня есть машина linux для аутентификации пользователей, использующих Active Directory с samba/winbind.
Затем устанавливается Apache, чтобы использовать его для аутентификации пользователей. Это делается с помощью:
<IfModule mod_authnz_external.c>
AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe
</IfModule>
Но запросы страниц, занимающие менее 1 секунды без аутентификации, теперь занимают> 6 секунд. Глядя на вход /var/log/samba/log.winbindd
не показывает никаких ошибок, но каждая загрузка страницы, кажется, требует много запросов на аутентификацию. В основном, кажется, что для каждого загруженного ресурса существует одна аутентификация, например, для каждого файла CSS.
В /etc/samba/smb.conf
Я пытался играть с некоторыми настройками, такими как winbind cache time = 300
а также winbind offline logon = yes
, Я также попытался изменить серверную часть idmap с tdb на ad.
Во время загрузки страницы загрузка процессора winbindd становится очень высокой, ~50-60%, в то время как другие процессы, по-видимому, не превышают 10-20%.
Я пропустил некоторые конфигурации, которые могли бы ускорить это, или есть лучшие подходы к этой проблеме (например, использование чего-то другого, кроме mod_authnz_external)?
2 ответа
Я до сих пор не нашел, как улучшить производительность при использовании mod_authnz_external. Однако переход на другой модуль apache mod_authnz_ldap избавил от проблемы с производительностью. Единственным недостатком является то, что конфигурация ldap дублируется для системы и для Apache.
В аналогичной настройке с использованием Ubuntu 18.04 в качестве клиента и Samba 4.7.8 в качестве сервера одна аутентификация с использованием pwauth занимает около 200 мс, что недопустимо для операций SVN, поскольку простой список репозитория использует довольно много запросов.
Загрузка authn_socache в качестве кэша аутентификации (например, authnz_external и authz_unixgroup) со следующими параметрами приводит к повышению производительности:
<Location /svn>
DAV svn
SVNParentPath /var/local/svn/
SVNListParentPath on
AuthType Basic
AuthName "private area"
AuthBasicProvider socache external
AuthExternal pwauth
AuthExternalProvideCache on
AuthnCacheProvideFor external
AuthnCacheTimeout 300
Require unix-group svngroup
</Location>
AuthExternalProvideCache On важен, иначе authnz_external не будет кэшировать логины.