Каскадный squid

Аватар пользователя ttys

Как то не совсем кластерное решение но всё же =)
-Цель:

  • Настроить (каскадный) 2 и более прокси-серверов на локальных десктопах (т.к. на десктопах использую unixовую ОСь).

-Для чего:

  • Что бы не выкачивать одно и тоже по нескольку раз из интернета тк канал от укртелеком всего 2Мбита.

-Как это работает:

  • Первым делом локальный прокси ищет запрашиваемую информацию у своих соседей, если он её там находит то берёт у них из кеша., если же нет то качает и кеширует у себя. В свою очередь соседи работают аналогичным образом. То есть кем то скачанная один раз страница не будет закачиваться повторно. При условии что сосед не выключен! Если сосед выключен или к нему нет доступа это аналогично тому что у соседа этого в кеше нет.

-Что имеем:

  • В наличии несколько компьютеров с установленной Ubuntu.

Для начала ставим Squid я использую версию 3.1:

sudo apt-get update
sudo apt-get install squid3

Если вместо 3.1 стал 3.0 можно добавить следующее:

cat /etc/apt/sources.list

#deb _http://ubuntu.mirror.cambrium.nl/ubuntu/ lucid main universe
#deb _http://ubuntu.mirror.cambrium.nl/ubuntu/ oneiric main universe
#deb _http://ubuntu.mirror.cambrium.nl/ubuntu/ natty main universe

После установки закоментируем эти строки т.к. обновления начали ругаться и пытаться устанавливать какие то промежуточные пакеты.

Создаём директории для Squid и даём имя юзера proxy чтобы кальмар мог в них работать.

sudo mkdir -p /home/squid3/{cache,log}
sudo chown -R proxy:proxy /home/squid3

Настраиваем конфигурацию (конфиги почти идентичные):

cat /etc/squid3/squid.conf
 
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl localnet src 192.168.1.0/24
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
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 CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow localnet
http_access deny all
http_port 3128
icp_port 3130
icp_access allow all
#
###########################################
# вся разница в конфигах в этом месте 
# это ip адрес соседа
#cache_peer 192.168.1.28 parent 3128 3130
cache_peer 192.168.1.28 sibling 3128 3130
###########################################
#
hierarchy_stoplist cgi-bin ?
 
cache_dir ufs /home/squid3/cache 2196 64 256
 
coredump_dir /var/spool/squid3
access_log none
#access_log /home/squid3/log/access.log
cache_log /home/squid3/log/cache.log
cache_store_log none
shutdown_lifetime 3 second
logfile_rotate 1
cache_mgr dtulyakov@gmail.com
 
refresh_pattern ^ftp:        1440    20%    10080
refresh_pattern ^gopher:    1440    0%    1440
refresh_pattern -i (/cgi-bin/|\?) 0    0%    0
refresh_pattern .        0    20%    4320

Я думаю не стоит заострять внимание по поводу опций конфига, лишь хочу обратить внимание на следующем:
icp_port 3130 #порт UDP для соединения с соседями
icp_access allow all #интуитивно понятно
cache_peer 192.168.1.28 parent 3128 3130 #ip-хост родительский сосед прокси-порт icp-порт
cache_peer 192.168.1.28 sibling 3128 3130 #ip-хост равнозначный сосед прокси-порт icp-порт

пришлось поставить sockstat т.к. он по дефолту отсутствует =(

sudo apt-get install sockstat

включаем кальмара и проверяем завёлся ли он:

sudo /etc/init.d/squid3 start
sudo sockstat|grep squid
proxy    squid3    1104    udp4    *:45534    *:*    CLOSED

ps aux|grep squid
root   1101  0.0  0.0  43100  1552 ?   Ss   14:20   0:00 /usr/sbin/squid3 -YC -f /etc/squid3/squid.conf
proxy   1104  0.0  0.4  82492 18780 ?   S   14:20   0:00 (squid) -YC -f /etc/squid3/squid.conf

для начала я проверяю правильно ли всё работ, делаю это так:

указываю access.log подключения:

#access_log none
access_log /home/squid3/log/access.log

потом запускаю на 2х соседях просмотр логов

sudo tail -f /home/squid3/log/access.log

При правельной настройке - в момент запроса должна появится активнасть на обоих кальмарах. Если всё в порядке, возвращаем настройки логов в none и перечитываем конфиг сквида

sudo /etc/init.d/squid3 reload

список возможных флагов:

sudo /etc/init.d/squid3
Usage: /etc/init.d/squid3 {start|stop|reload|force-reload|restart}

устанавливаем в браузере адрес прокси 127.0.0.1 порт 3128

Заходим сюда и смотрим, должно быть вроде этого:

Если так то радуемся и пользуемся.

Дополнительные материалы
Ваша оценка: Нет Средняя: 5 (10 голосов)

а почему не выбрали решение с общим прокси на всех

а почему не выбрали решение с общим прокси на всех

я же описывал ситуацию

я же описывал ситуацию!
нету сервера! это 2 десктопа и не всегда оба включены!

http://www.lissyara.su/?id=21

нах мне двойной сквид??? у

нах мне двойной сквид???
у меня 2 тазека бегают в инет через адсл =)

Смысл то в том, что в браузер

Смысл то в том, что в браузер уже встроен родной кеш, поэтому - каскадный прокси как бэ не нужен =/ считаем:
1 - прокси на браузере
2 - прокси локальный
3 - прокси на серваке ( но откуда мы знаем что на серваке не каскадный прокси?)
4 - вероятность у не добротных провайдеров прокси на шлюзе (но откуда мы знаем что не каскадный прокси?)

итого их 3, зачем?

1 и 2 ) cache_dir ufs

1) cache_dir ufs /home/squid3/cache 50196 64 256
2) смотри пред идущий ответ про двойной сквид
3) на каком серваке? у хостера? или у укртелекома?(который монополист на инет в украине) ))))))))))))))
4) ответил в (3)
ЗЫ для проверки не добротных провайдеров тыц
и внимательно изучаем что выдаёт сайт 2ip.ru

Последние статьи

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer