Я пытаюсь настроить прокси-кластер squid с двумя узлами. Это был бы обычный прокси (ни обратный, ни прозрачный).
Я использую LVS (ядро 2.6.32, ipvsadm v.1.2.1, туннелирование) для балансировки нагрузки, ldirectord (v. 1.0.3) для HA, squid (v.3.1.7) в качестве прокси-сервера.
Кластер работает нормально для большинства сайтов, но возникают проблемы с (например) входом в учетные записи google, входом на serverfault.com через OpenID и т.д. закодированные перенаправления работают нормально. Когда я работаю напрямую через каждый прокси-узел, все в порядке. Я пробовал разные типы алгоритмов планирования заданий в LVS, но это не помогло. Оставление только одного узла в кластере также не решает проблемы. Squid's access.log и cache.log тоже "чистые", ошибок нет, только нормальная работа.
Кто-нибудь сталкивался с такими проблемами? Есть ли у кого-нибудь рабочий кластер такого типа (сбалансированный с IPVS)? Есть идеи по устранению неполадок?
Вот некоторые части файлов конфигурации: ldirectord.cf:
# Virtual Server for HTTP_PROXY
virtual=10.128.0.109:8080
fallback=127.0.0.1:80
real=10.128.1.43:8080 ipip 30
real=10.128.0.106:8080 ipip 40
service=http_proxy
request="http://www.google.com/index.html"
receive="Google Search"
scheduler=wlc
#persistent=600
protocol=tcp
checktype=negotiate
squid.conf:
http_port 10.128.0.106:8080 # "real" IP of the node
http_port 10.128.0.109:8080 # "Virtual" IP of the cluster on tunl0 interface
http_port 127.0.0.1:8080
cache_mem 300 MB
cache_dir ufs /opt/squid/var/cache 500 16 256
cache_effective_user squid
cache_effective_group squid
visible_hostname AQUA-node
cachemgr_passwd SquidCM all
access_log /opt/squid/var/logs/access.log
logfile_rotate 5
# ICQ connect (experimental)
acl ICQ_ADDR dst 64.12.0.0/16 205.188.0.0/16
acl ICQ_PORT port 5190 443
acl CONNECT method CONNECT
acl ICQ_PROTO proto HTTPS
acl ICQ_DOMAIN dstdomain .icq.com .aol.com .aim.com
always_direct allow ICQ_DOMAIN ICQ_PORT CONNECT
always_direct allow ICQ_ADDR ICQ_PORT CONNECT
acl allnet_temp src 10.0.0.0/8
http_access allow allnet_temp
http_access deny all
Если потребуется какая-либо другая информация, просто дайте мне знать.
Попробуйте использовать планировщик lblc, lblcr или sh. lblcr лучше всего подходит для кеш-прокси. Проблемы из-за балансировки циклического соединения.
Есть ли у кого-нибудь рабочий кластер такого типа (сбалансированный с IPVS)? Есть идеи по устранению неполадок?
У меня два http-прокси кластера (10-12 прокси в кластере). Используйте LVS (lblcr, ipip tunneling, squid 2.7 transparent)
Задача решена.
Я построил ванильное ядро 2.6.35-7 с pv-ops (были необходимы, потому что балансировщик нагрузки - это паравиртуальная машина), и LVS начал работать по мере необходимости. Может быть, это был регресс в ядре Xenlinux, может быть просто ошибка старой версии. Версии остальных программных компонентов не изменились.
P.S. Спасибо bindbn за советы по выбору планировщика.