Каскадный 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

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

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

Дополнительные материалы
Голосов пока нет

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

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

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

я же описывал ситуацию!
нету сервера! это 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

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <tr> <td> <em> <b> <u> <i> <strong> <font> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike> <caption>
  • Строки и параграфы переносятся автоматически.
  • Вы можете использовать подсветку исходного кода следующими тегами: <code>, <blockcode>, <apache>, <bash>, <c>, <cpp>, <mysql>, <perl>, <php>, <python>, <text>. The supported tag styles are: <foo>, [foo].
  • Glossary terms will be automatically marked with links to their descriptions. If there are certain phrases or sections of text that should be excluded from glossary marking and linking, use the special markup, [no-glossary] ... [/no-glossary]. Additionally, these HTML elements will not be scanned: a, abbr, acronym, code, pre.

Подробнее о форматировании

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
4 + 2 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.

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

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer