Назад | Перейти на главную страницу

Использование Squid cache_peer для повышения производительности в кластере Apache

У меня есть 3 узла в кластере веб-серверов. На каждом узле работает Squid на интерфейсе LAN и Apache на интерфейсе localhost. Squid кеширует правильно для каждого сервера индивидуально, но я не верю, что правильно настроил одноранговые узлы кеша.

cache_peer 127.0.0.1 parent 80 0 no-query originserver name=Server1
cache_peer Server2 sibling 80 3130 proxy-only
cache_peer Server3 sibling 80 3130 proxy-only
cache_peer_access Server1 allow MYDOMAIN

Каждый сервер имеет аналогичные настройки cache_peer, за исключением того, что каждый является собственным родительским и использует два других сервера как братьев и сестер. Моя цель - максимально повысить процент попаданий, но я не знаю, правильно ли я понимаю логику одноранговых узлов кеша.

Я хочу, чтобы Squid попытался найти http://www.example.com/mypage/ в его локальном кеше, и если он не запрашивает братьев и сестер, пока не найдет его. Если он не может его найти, ТОГДА он должен ударить Apache.

Я правильно это делаю?

Squid пытается запросить каждого однорангового узла через ICP, измеряет время ответа, а затем решает, какой родитель использовать. Есть общие проблемы:

  • ваши коллеги не отвечают на запросы ICP, а squid помечает их как МЕРТВЫЕ
  • ваши коллеги не поддерживают дайджест кеша
  • вы обслуживаете не кешируемый контент, а squid всегда подключается напрямую
  • ваши правила ACL не позволяют использовать других пиров

Ответ есть в ваших журналах доступа. так что попробуйте это и дайте нам пример: tail -f /var/log/squid/access.log

Итак, в этом примере у вас есть squid, который слушает ваш внешний IP-адрес на порту 80, а apache привязан к localhost: 80 на каждом сервере?

Одна вещь, которую нужно проверить, - убедиться, что у вас есть icp_port 3130 если вы используете squid 3.0 или выше; в версиях 2.x 3130 он был по умолчанию, но в 3.x теперь 0 (отключен).