Вопрос или проблема
Для домашней лаборатории я настроил сервер кеширования Squid 3.3.8 на CentOS 7 (минимальная версия) в качестве прокси-сервера (не в качестве шлюза по умолчанию с прозрачным кэшированием).
С клиентом Xubuntu я настроил прокси-сеть с помощью:
export http_proxy="192.168.1.15:3128" (то же самое для https и ftp)
Веб-серфинг работает, и я вижу, что это попадает в журнал /var/log/squid/access.log
. Однако большие файлы, такие как .ISO образы, не кэшируются, несмотря на 30 ГБ доступного пространства кэша и лимит размера объекта в 6 ГБ.
Как мне это диагностировать и исправить?
Я вижу два пропуска подряд в журналах, что я понял означает, что кэширование Squid не удалось.
1442197979.371 394811 192.168.1.61 TCP_MISS/200 666894705 GET http://ftp.osuosl.org/pub/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso - HIER_DIRECT/140.211.166.134 application/octet-stream ---- 1442199880.195 414232 192.168.1.61 TCP_MISS/200 666894705 GET http://ftp.osuosl.org/pub/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso - HIER_DIRECT/140.211.166.134 application/octet-stream
Конфигурация Squid:
cache_dir ufs /var/spool/squid 30720 16 256 cache_mem 256 MB maximum_object_size_in_memory 512 KB maximum_object_size 6 GB cache_replacement_policy heap LFUDA range_offset_limit -1 quick_abort_min -1 KB
Согласно этому ответу на Server Fault — и перенесенному из этой ветки на официальном сайте поддержки Squid Proxy — maximum_object_size
должен быть размещен выше cache_dir
в файле squid.conf
.
Зная это, просто измените вашу конфигурацию с этого:
cache_dir ufs /var/spool/squid 30720 16 256
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 6 GB
cache_replacement_policy heap LFUDA
range_offset_limit -1
quick_abort_min -1 KB
На это:
maximum_object_size 6 GB
cache_dir ufs /var/spool/squid 30720 16 256
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
cache_replacement_policy heap LFUDA
range_offset_limit -1
quick_abort_min -1 KB
Перезапустите прокси Squid и посмотрите, что произойдет.
Ответ или решение
Чтобы решить проблему с кешированием больших файлов в Squid 3.3.8, установленном на CentOS 7, необходимо провести этапы диагностики и настройки конфигурации. Ваша ситуация, когда веб-серфинг работает, а большие файлы, такие как .ISO образы, не кешируются, требует внимательного анализа.
1. Анализ конфигурации
Для начала обратим внимание на ваш конфигурационный файл squid.conf
:
cache_dir ufs /var/spool/squid 30720 16 256
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 6 GB
cache_replacement_policy heap LFUDA
range_offset_limit -1
quick_abort_min -1 KB
Вот ключевые моменты, которые вам нужно проверить:
- Порядок настроек: Как вы уже отметили, параметр
maximum_object_size
должен располагаться вышеcache_dir
. То есть конфигурация должна выглядеть так:
maximum_object_size 6 GB
cache_dir ufs /var/spool/squid 30720 16 256
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
cache_replacement_policy heap LFUDA
range_offset_limit -1
quick_abort_min -1 KB
2. Перезапуск службы
После внесения изменений в конфигурацию необходимо перезапустить службу Squid для применения новых настроек:
sudo systemctl restart squid
3. Проверка логов
После рестарта проверьте логи доступа и ошибки, чтобы увидеть, были ли изменения успешными:
tail -f /var/log/squid/access.log
tail -f /var/log/squid/cache.log
Ищите записи о больших файлах. Дважды «TCP_MISS» указывает на то, что файл не был закеширован.
4. Изменение других параметров
В дополнение к порядку параметров, рекомендуется улучшить кеширование больших объектов с помощью настройки:
-
range_offset_limit
: Убедитесь, что этот параметр установлен на нужное значение. Ваш текущий параметр-1
позволяет Сquid обрабатывать большие файлы без ограничения по диапазону. -
quick_abort_min
: Убедитесь, что этот параметр не мешает кешированию. Вы можете попробовать изменить его значение, если загрузка больших файлов по-прежнему не происходит.
5. Мониторинг загруженности сети и диска
Следующий этап — это мониторинг. Иногда проблемы с кешированием могут быть связаны с недостаточной пропускной способностью сети или загруженностью дисковой подсистемы:
- Используйте утилиты мониторинга, такие как
htop
иiotop
, чтобы проверить загрузку CPU и I/O.
6. Известные ограничения и настройки
Учтите, что некоторые серверы могут содержать заголовки, которые предотвращают кеширование. Проверьте HTTP-заголовки ответа с помощью инструментов, таких как curl
:
curl -I http://ftp.osuosl.org/pub/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso
Обратите внимание на заголовки Cache-Control
и Expires
, которые могут указывать на то, почему файл не кешируется.
Заключение
Настройка кеширования больших файлов в Squid требует определенного подхода и внимательного анализа конфигурации. Следуя предложенным шагам, вы сможете устранить проблемы с кешированием в вашей среде homelab. Помните, что правильная последовательность параметров, проверка логов и мониторинг системы имеют ключевое значение для достижения успешных результатов.