LINUX.ORG.RU
ФорумAdmin

squid + NTLM + wbinfo_group.pl = низкая производительность


0

3

Добрый день господа.

Есть задача, заменить Forefront TMG 2010, на свободный аналог.

Я выбрал squid3, + ntlm_auth + wbinfo_groups.pl

Все успешно завелось.

При внедрении в продакшн столкнулись с проблемой низкой производительности.

Люди не могут получить URL по пять минут. На данный момент откатились назад к Forefront TMG 2010.

Как я понимаю проблему: Схема имеет низкую производительность изза того что используются внешние компоненты такие как wbinfo->winbind и ntlm_auth->winbind.

Схема распространения адреса прокси это wpad.dat через DHCP OPTION 252 и запись WPAD в нашей зоне.

Клиентов примерное 100, у всех Windows Xp, ie8.

Сервер развернут на платформе Vmware, debian 6.0, squid3 3.1.6-1.2, samba 2:3.5.6~dfsg-3squeeze2.

Мысли и идеи приветствуются.

+ wbinfo_groups.pl

Зачем конкретно wbinfo_groups.pl, --require-membership-of={SID|Name} в качестве параметра для ntlm_auth недостаточно?

Схема распространения адреса прокси это wpad.dat через DHCP

Показывайте

Люди не могут получить URL по пять минут.

Это вы, видимо, преувеличили. Скажите точное время на 1 url


Как я понимаю проблему: Схема имеет низкую производительность изза того что

Конечно winbind медленный, но

1) он имеет возможность кеширования
2) он точно работает быстрее, чем раз в 5 минут

У вас скорее проблемы с wpad и dns, делайте на тестовой машине сначала и проверяйте на себе, чтобы сервисы туда-сюда не откатывать. Мне в страшном сне не привидится, что я не проверяя воткнул что-то и ВНЕЗАПНО оно занимает по 5 минут на операцию.

zgen ★★★★★
()
Ответ на: комментарий от zgen

>Зачем конкретно wbinfo_groups.pl, --require-membership-of={SID|Name} в качестве параметра для ntlm_auth недостаточно?

Затем конретно чтобы разделять доступ разным группам к разным ресурсам.

Схема распространения адреса прокси это wpad.dat через DHCP
Показывайте

А что тут показывать. cisco catalyst -> ip dhcp pool localnet -> option 252 ascii "http://xx.xx.yy.yy/wpad.dat"

Люди не могут получить URL по пять минут.
Это вы, видимо, преувеличили. Скажите точное время на 1 url

Грубо говоря URL может открыться через 2 секунды а может висеть 5 минут.

делайте на тестовой машине сначала и проверяйте на себе, чтобы >сервисы туда-сюда не откатывать. Мне в страшном сне не привидится, >что я не проверяя воткнул что-то и ВНЕЗАПНО оно занимает по 5 минут >на операцию.

Вообщето было предварительное тестирование во время которого все работало идеально. Но что мы действительно не проверяли так это автоматическое распознавание прокси. Я предполагаю что проблема может быть в этом.

fxp0fxp0fxp0
() автор топика
Ответ на: комментарий от fxp0fxp0fxp0

насколько я знаю, распознавание прокси происходит один раз, при первом запросе при открытии браузера. тормоза всегда или при первом старте?

убедись еще, что никаким волшебным образом запрос до wpad.dat не заруливается на прокси. ;) хотя, тут это вряд ли.. проксирование-то не прозрачное..

aol ★★★★★
()
Ответ на: комментарий от aol

Как бы сказать.

Вообщем тормоза были утром когда люди пришли на работу и начали открывать сайты.

Т.е при нагрузке.

При тестировании 4 человека были фокус группой.

И все работало.

fxp0fxp0fxp0
() автор топика
Ответ на: комментарий от fxp0fxp0fxp0

сделай еще нагрузочное тестирование. сначала погрузи ту тачку, которая wpad.dat отдает, потом сквид сам..
проги для этого дела найдешь так: google://нагрузочное+тестирование+http

и да, 4 человека из 100 - это не тестирование

aol ★★★★★
()
Ответ на: комментарий от fxp0fxp0fxp0

у меня есть инсталяция squid+ntlm(--require-membership-of)+wpad через dhcp человек на 50 где-то. никаких твиков не делал. тормозов не испытываю.

aol ★★★★★
()
Ответ на: комментарий от fxp0fxp0fxp0

Затем конретно чтобы разделять доступ разным группам к разным ресурсам.


не знаю, правельно ли я понял, что именно нужно, но у меня разделение по группам и ресурсам организованно так, что в АД создано несколько групп, а в конфиге сквида добавлены аклы для этих групп, типа вот так:


acl internetusers external nt_group NTDOMAIN\\InternetUsers-gr

acl httpsusers external nt_group NTDOMAIN\\HttpsUsers-gr
acl arjusers external nt_group NTDOMAIN\\ArjUsers-gr
acl mediausers external nt_group NTDOMAIN\\MediaUsers-gr

а юзеров потом просто добавляю в нужные группы доступа

deys ★★★
()
Ответ на: комментарий от deys

спасибо, у нас все так и организовано.

через external_acl

fxp0fxp0fxp0
() автор топика
Ответ на: комментарий от aol

тачка та же самая.

т.е на ней просто развернут апач для самса, который также занимается отдачей файла wpad.dat

все дело еще осложняется виртуализацией.

fxp0fxp0fxp0
() автор топика
Ответ на: комментарий от fxp0fxp0fxp0

Затем конретно чтобы разделять доступ разным группам к разным ресурсам.

Сделайте с одной группой, и исключите perl компонент, если проблема будет идентичной, значит дело не в нем.

Ах, да, я еще не говорил, что во время проблемы надо в логи смотреть, а потом приводить их в форуме? Ну, считайте что сказал.


А что тут показывать.

wpad.dat показывайте. В IE 8 сменилась функциональность некоторых функций, что привело к замедлению.

zgen ★★★★★
()
Ответ на: комментарий от zgen

wpad.dat:

function FindProxyForURL(url, host) { if(shExpMatch(url,«*.domain.local/*»)) { return «DIRECT»; } if(shExpMatch(host,«10.xx.*»)) { return «DIRECT»; } if (shExpMatch(host, «localhost*») || shExpMatch(host, «127.0.0.1*»)) { return «DIRECT»; } return «PROXY 10.xx.xx.xx:8080»; }

fxp0fxp0fxp0
() автор топика
Ответ на: комментарий от fxp0fxp0fxp0

ё. А с нормальным форматированием никак не получается?

shExpMatch лучше заменить:


if (isInNet(dnsResolve(host), «ip», «mask»))
return «DIRECT»;

if (isInNet(myIpAddress(), «ip», «mask»))
return «PROXY proxy:3128»;

Только проверьте.

Покажите ваш smb.conf и squid.conf (без комментариев)

zgen ★★★★★
()
Ответ на: комментарий от zgen

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 60
auth_param ntlm keep_alive on
auth_param ntlm use_ntlm_negotiate on

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 10
auth_param basic realm Squid Proxy-Server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
authenticate_ttl 2 hour

external_acl_type nt_group %LOGIN /usr/lib/squid3/wbinfo_group.pl -d

acl gmailaccess external nt_group gmailaccess
acl yahooaccess external nt_group yahooaccess
acl youtubeaccess external nt_group youtubeaccess
acl ordinaryaccess external nt_group ordinaryaccess
acl fullaccess external nt_group fullaccess

acl MYDOMAIN proxy_auth REQUIRED

acl mydomain_site dstdomain «/etc/squid3/acl/allow_all»
acl isa-closed-domains dstdomain «/etc/squid3/acl/isa-closed-domains»
acl mailru-closed-ip-range dst «/etc/squid3/acl/ip-range-mail.ru»
acl 194-allowed-ip-range dst «/etc/squid3/acl/ip-range-194.87.50.83»
acl 212-allowed-ip-range dst «/etc/squid3/acl/ip-range-212.57.104.162»

acl isa-closed-gmail dstdomain «/etc/squid3/acl/isa-closed-gmail»
acl isa-closed-youtube dstdomain «/etc/squid3/acl/isa-closed-youtube»
acl isa-closed-yahoo dstdomain «/etc/squid3/acl/isa-closed-yahoo»

acl bad_urls url_regex «/etc/squid3/acl/urlregex»
acl blockads url_regex -i «/etc/squid3/acl/blockads»

acl direct-access dstdomain «/etc/squid3/acl/direct-access»
acl blockads-domains dstdomain «/etc/squid3/acl/blockads-domains»

acl manager proto cache_object
acl webserver src 10.169.0.50/255.255.255.255
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.169.2.0/24 # RFC1918 possible internal network

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 4000 # multiling http
acl CONNECT method CONNECT

http_access allow manager webserver
http_access allow manager localhost
http_access deny manager

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny bad_urls
http_access deny blockads
http_access deny blockads-domains

http_access allow direct-access
http_access allow fullaccess all
http_access allow gmailaccess !isa-closed-gmail
http_access allow youtubeaccess 194-allowed-ip-range
http_access allow youtubeaccess 212-allowed-ip-range
http_access allow youtubeaccess !isa-closed-youtube
http_access allow yahooaccess !isa-closed-yahoo
http_access allow MYDOMAIN !isa-closed-domains
http_access allow MYDOMAIN mydomain_site
http_access deny MYDOMAIN mailru-closed-ip-range
http_access allow MYDOMAIN ordinaryaccess

http_access allow localnet
http_access allow localhost
http_access deny all

http_port 8080
hierarchy_stoplist cgi-bin ?
cache_mem 512 MB
cache_dir ufs /var/spool/squid3 2048 16 256
maximum_object_size 100000 KB
coredump_dir /var/spool/squid3
cache_mgr support@domain.local
visible_hostname PROXY.domain.local
error_directory /usr/share/squid-langpack/ru

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern -i \.gif$ 10080 90% 43200
refresh_pattern -i \.(jpg|jpeg|png|bmp)$ 10080 90% 43200
refresh_pattern -i \.swf$ 10080 90% 43200
refresh_pattern . 1440 50% 22160

delay_pools 4
delay_class 1 1
delay_class 2 1
delay_class 3 1
delay_class 4 1

delay_parameters 1 64000/64000 64000/64000
delay_access 1 allow gmailaccess
delay_access 1 deny all

delay_parameters 2 64000/64000 64000/64000
delay_access 2 allow youtubeaccess
delay_access 2 deny all

delay_parameters 3 64000/64000 64000/64000
delay_access 3 allow yahooaccess
delay_access 3 deny all

delay_parameters 4 64000/64000 64000/64000
delay_access 4 allow ordinaryaccess
delay_access 4 deny all

fxp0fxp0fxp0
() автор топика
Ответ на: комментарий от zgen

smb.conf:

[global]
workgroup = DOMAIN
server string = %h server
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = domain
realm = SERVER.DOMAIN.LOCAL
encrypt passwords = true
password server = 10.169.0.5
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pampassword change = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
domain master = no
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
winbind separator = +
winbind use default domain = yes

[homes]
comment = Home Directories
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S

fxp0fxp0fxp0
() автор топика
Ответ на: комментарий от fxp0fxp0fxp0

squid.conf:

auth_param ntlm children 60

Рекомендую увеличить как минимум втрое, а лучше вчетверо.

smb.conf:

Добавить

winbind offline logon = true
winbind cache time = 900

Это сгладит пики по запросам.

В момент возникновения проблемы смотреть в логи вообще и в cache.log в частности, на предмет all auth are busy.

В динамике посмотреть, что происходит с ntlm_auth можно так:

squidclient -h proxyhost mgr:ntlmauthenticator

Как правило там видно, что в 1 момент времени 1 клиент может «залочить» по 20-40 ntlm_auth, и остальным приходится ждать, пока он их освободит (пара-тройка минут timeout'а)



zgen ★★★★★
()
Ответ на: комментарий от fxp0fxp0fxp0

А вот это

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

если используете samba в т.ч. как файл-сервер - уберите.

zgen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.