Возникла необходимость в кэшировании psd файлов из амазон хранилища. Объем 150-200 Гб (с учетом что нужно хранить файлы в кеше 2-3 месяца). Сейчас используется прозрачный squid. Хотелось бы, чтобы основной squid перенаправлял все запросы на amazone на parent.Собственно вопрос, можно ли настроить squid так, чтобы он кэшировал файлы только с определенного сайта, например, storage.amazon.com. В кеш должны попадать все файлы с этого сайта, в не зависимости от размера. Есть psd файлы размером 1-2 Гб. Но большая часть (80-90%) конечно до 100 Мб. В идеале иметь возможность в ручную удалять необходимый файл из кэша.
Основная задача, как можно с большой скоростью раздавать psd файлы в локальной сети, так как один и тот же файл в производственном процессе используется как минимум 5ю разными людьми.
Возможно данную задачу можно организовать проще не используя squid?
> Собственно вопрос, можно ли настроить squid так, чтобы он кэшировал файлы только
> с определенного сайта, например, storage.amazon.com.AFAIK, можно.
надо создать соответствующие ацл-и и навесить их на что-то вроде
cache deny ACL
>Хотелось бы, чтобы основной squid перенаправлял все запросы на amazone на parent.cache_peer + cache_peer_domain / cache_peer_access
Вроде же ничего особенного, не?
squid для решения данной задачи будет оптимальным решением?
> squid для решения данной задачи будет оптимальным решением?я - не знаю ответа на данный вопрос.
> squid для решения данной задачи будет оптимальным решением?Если 5 человек работают над одним файлом, то при любом его изменении
(на счет access time не уверен), squid решит что это новый файл и
будет качать заново.Подними чёнить распределительное P2P,
где-то тут новость была про utorrent
>> squid для решения данной задачи будет оптимальным решением?
> Если 5 человек работают над одним файлом, то при любом его изменении
> (на счет access time не уверен), squid решит что это новый файл
> и
> будет качать заново.
> Подними чёнить распределительное P2P,
> где-то тут новость была про utorrent
> ---
> Во http://www.opennet.me/opennews/art.shtml?num=35957эти файлы не меняются на протяжении всего жизненного цикла проекта, дизайн никогда не редактируется и не изменяется. Даже если и происходят какие то изменения в дизайне, то клиент присылает новый дизайн.
Да и цель сделать все прозрачно для конечного пользователя. Например, Вася закачивает http://s3.amazonaws.com/uid/project_name/design.psd. Этот файл тут же попадает в кеш, через 10-30 минут, Петя качает этот же файл, а еще через 5 минут Коля закачивает его же, но им уже отдается локальная копия из кеша на макс-ной скорости. При этом Петя, Вася и Коля без понятии о том, откуда на самом деле они закачали файл, оно им и не нужно знать.
p2p слишком неудобно для данной задачи.
reload_into_ims onmaximum_object_size 4 GB
minimum_object_size 4 KBrefresh_pattern \.psd$ 43200 100 43200 override-lastmod override-expire ignore-reload ignore-no-cache
# Пожирнее кэш
cache_dir aufs /var/spool/squid 4096 16 256ну как-то так
> Да и цель сделать все прозрачно для конечного пользователя.С:\> net use Z: \\192.168.0.1\shara
>> Да и цель сделать все прозрачно для конечного пользователя.
> С:\> net use Z: \\192.168.0.1\sharaпод прозрачностью подразумевалось то, что пользователям ничего не придется менять в текущем производственном процессе. Т.е. они как закачивали с амазона, так и будут, сама фишка именно - в отдаче из кеша :)
Будем пробовать, о результатах отпишусь
>>> Да и цель сделать все прозрачно для конечного пользователя.
>> С:\> net use Z: \\192.168.0.1\shara
> под прозрачностью подразумевалось то, что пользователям ничего не придется менять в текущем производственном процессе. Т.е. они как закачивали с амазона, так и будут,
> сама фишка именно - в отдаче из кеша :)Вот теперь ты их и обрадуй - "В честь дня св. Валентина, теперь качаем с диска Z:\"
>>>> Да и цель сделать все прозрачно для конечного пользователя.
>>> С:\> net use Z: \\192.168.0.1\shara
>> под прозрачностью подразумевалось то, что пользователям ничего не придется менять в текущем производственном процессе. Т.е. они как закачивали с амазона, так и будут,
>> сама фишка именно - в отдаче из кеша :)
> Вот теперь ты их и обрадуй - "В честь дня св. Валентина,
> теперь качаем с диска Z:\"а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :D
> а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :DНапиши скрипт уже и выкачай всё что надо. Один раз.
>> а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :D
> Напиши скрипт уже и выкачай всё что надо. Один раз.Еще раз, одно из условий прозрачность для конечного пользователя ;)
>>> а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :D
>> Напиши скрипт уже и выкачай всё что надо. Один раз.
> Еще раз, одно из условий прозрачность для конечного пользователя ;)Т.е. вбивать в адресной строке http://z3.amazon.com/~vasyapupkin/ssa/132232/Super.psd
это прозрачно, а Мой Компутер -> Диск Z:\ -> Super.psd - это не осилят!Сетевая шара делается на самбе, удалённые данные зеркалируй как нравится: rsync, lftp, git, ...
> Т.е. вбивать в адресной строке http://z3.amazon.com/~vasyapupkin/ssa/132232/Super.psd
> это прозрачно, а Мой Компутер -> Диск Z:\ -> Super.psd - > это не осилят!Вообще аргументы у автора слабые ... Потому как даже (спасибо pavlinux) после http://z3.amazon.com/~vasyapupkin/ssa/132232/Super.psd - что сделает юзер?
Открою вам ALex_hha страшную тайну - юзер получит диалог сохранения файла и скинет его на _локальный_ диск. А уж потом откроет его целевой программой. Дык чего ему вообще о первой части марлезонского балета знать?Как то так.
>>>> а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :D
>>> Напиши скрипт уже и выкачай всё что надо. Один раз.
>> Еще раз, одно из условий прозрачность для конечного пользователя ;)
> Т.е. вбивать в адресной строке http://z3.amazon.com/~vasyapupkin/ssa/132232/Super.psd
> это прозрачно, а Мой Компутер -> Диск Z:\ -> Super.psd -
> это не осилят!
> Сетевая шара делается на самбе, удалённые данные зеркалируй как нравится: rsync, lftp,
> git, ...никто естественно не вбивает эти километровые ссылки, они есть в CRM системе. А так как есть люди, работающие из дома, то ссылка на сетевой диск будет как бы не уместной
>[оверквотинг удален]
>>>> Напиши скрипт уже и выкачай всё что надо. Один раз.
>>> Еще раз, одно из условий прозрачность для конечного пользователя ;)
>> Т.е. вбивать в адресной строке http://z3.amazon.com/~vasyapupkin/ssa/132232/Super.psd
>> это прозрачно, а Мой Компутер -> Диск Z:\ -> Super.psd -
>> это не осилят!
>> Сетевая шара делается на самбе, удалённые данные зеркалируй как нравится: rsync, lftp,
>> git, ...
> никто естественно не вбивает эти километровые ссылки, они есть в CRM системе.
> А так как есть люди, работающие из дома, то ссылка на
> сетевой диск будет как бы не уместнойsed -i s/amazon.com/localhost/ < files.html;
<VirtualHost *:80>
Alias "/amazon.com" "/net/mirrors/amazon.com"
<Directory "/net/mirrors/amazon.com">
Order deny,allow
Deny from all
Allow from 192.168.0.0/255.255.0.0
</Directory>
</VirtualHost>
>[оверквотинг удален]
> Alias "/amazon.com" "/net/mirrors/amazon.com"
> <Directory "/net/mirrors/amazon.com">
>
> Order deny,allow
>
> Deny from all
>
> Allow from 192.168.0.0/255.255.0.0
> </Directory>
> </VirtualHost>не совсем понял идею
>>[оверквотинг удален]
> не совсем понял идеюЗаменить ссылки в CRM, чтоб указывали на локальный вебсервак.
>>>[оверквотинг удален]
>> не совсем понял идею
> Заменить ссылки в CRM, чтоб указывали на локальный вебсервак.И потом отлавливать кто работает в офисе, тому меняем, а кто из дома не меняем. Не вариант однозначно.
P.S.
тут кто то предлагал расшарить папку с кешем squid, посмотрел, так он даже имена хранимых файлов и их размер меняет
>>>>[оверквотинг удален]
>>> не совсем понял идею
>> Заменить ссылки в CRM, чтоб указывали на локальный вебсервак.
> И потом отлавливать кто работает в офисе, тому меняем, а кто из дома не меняем.1. Если CRM доступна из инета, то файлы будут скачиваться с локального сервака.
2. Для работы из дома через прокси не нужен, напрямую быстрее.
В общем получилось как то такОсновной squid (192.168.210.223)
http_port 192.168.210.223:3128 transparent
cache_peer 192.168.210.221 parent 3128 3130 default no-query
cache_peer_domain 192.168.210.221 storage.example.net
dead_peer_timeout 7 secondshierarchy_stoplist cgi-bin ?
acl PSD urlpath_regex \.psd$
cache deny PSDacl ZIP urlpath_regex \.zip$
cache deny ZIPcache_dir null /tmp
cache_store_log noneвспомогательный squid (192.168.210.221)
acl main_squid src 192.168.210.223
http_access allow main_squidacl SQUID-PARENT src 192.168.210.223
icp_access allow SQUID-PARENT
icp_access deny allcache_mem 128 MB
maximum_object_size_in_memory 8 MB
cache_dir aufs /squid 64000 16 256
minimum_object_size 16 MB
maximum_object_size 4096 MBacl PSD urlpath_regex -i \.psd$
cache allow PSDacl ZIP urlpath_regex -i \.zip$
cache allow ZIPacl OTHER url_regex -i ^http://*
cache deny OTHERrefresh_pattern \.psd$ 43200 100 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.zip$ 43200 100 43200 override-lastmod override-expire ignore-reload ignore-no-cache
icp_port 3130
log_icp_queries onПри первой закачке в логах основного squid вижу
1360062204.546 118608 192.168.210.130 TCP_MISS/200 209715708 GET http://storage.example.net/z3.amazon.com/design-200MB.psd - DEFAULT_PARENT/192.168.210.221 image/vnd.adobe.photoshopЧерез минуту закачиваю с другого клиента
1360062712.731 4814 192.168.210.140 TCP_MISS/200 209715716 GET http://storage.example.net/z3.amazon.com/design-200MB.psd - DEFAULT_PARENT/192.168.210.221 image/vnd.adobe.photoshopВ логах вспомогательного squid
1360062712.311 4803 192.168.210.223 TCP_HIT/200 209715625 GET http://storage.example.net/z3.amazon.com/design-200MB.psd - NONE/- image/vnd.adobe.photoshop
> В общем получилось как то такreload_into_ims on
>> В общем получилось как то так
> reload_into_ims onна 192.168.210.221 (вспомогательный squid) эта опция включена на основном выключена. Только не совсем понял, что именно она дает конкретно в моем случае? Какая будет выгода?
> Только не совсем понял, что именно она дает конкретно в моем случае?Параметр reload_into_ims разрешает игнорировать nocache или reload и выдавать объект из кэша.
Без этой феньки, параметры ignore-reload и ignore-no-cache в refresh_pattern не работают.Хотя, по-моему уже сделали эти параметры независимыми. То есть, ignore-reload и ignore-no-cache
будут работать ТОЛЬКО для объектов в строке refresh_pattern, в твоём случае для *.psd и *.zip
Раньше, reload_into_ims, точно был как глобальный выключатель!> Какая будет выгода?
Например сервак Амазона может прислать "no-cache" или "reload" независимо от того,
обновлялись ли файлы или нет. И сквид опять ломанётся их скачивать.
>[оверквотинг удален]
> Параметр reload_into_ims разрешает игнорировать nocache или reload и выдавать объект из
> кэша.
> Без этой феньки, параметры ignore-reload и ignore-no-cache в refresh_pattern не работают.
> Хотя, по-моему уже сделали эти параметры независимыми. То есть, ignore-reload и ignore-no-cache
> будут работать ТОЛЬКО для объектов в строке refresh_pattern, в твоём случае для
> *.psd и *.zip
> Раньше, reload_into_ims, точно был как глобальный выключатель!
>> Какая будет выгода?
> Например сервак Амазона может прислать "no-cache" или "reload" независимо от того,
> обновлялись ли файлы или нет. И сквид опять ломанётся их скачивать.понял, спасибо за помощь
Собственно остался последний вопрос - какое железо необходимо для такой задачи?Сейчас вот смотрю в сторону такой машины
Kingston HyperX (KHX1600C10D3B1K2/16G) 2x8Gb x 2(кита) 32 Гб
Материнская плата s-1155 B75 Asus P8B75-V
Процессор Intel Dual-Core G870
Винт 500 Gb под системуПод кеш сквида
SSD OCZ RVD3-FHPX4-480G или 2 ssd в raid0 что то типа Crucial m4 Slim 256Gb
Большой объем ОЗУ позволит хранить в памяти наиболее часто используемые файлы и уменьшить обращения к ssd (с учетом что память сейчас относительно дешевая).
Единственное есть вопрос насчет процессора, но как я понимаю с учетом, что будет raid0 (а значит никаких контрольных сумм и т.п.) или вообще отдельная плата со своим контроллером, то нагрузка на проц должна быть минимальной?
И второй вопрос, что все таки лучше, два ssd в raid0 (получаем прирост как в скорости так и в стоимости) или все таки отдельную плату типа OCZ Revodrive?
P.S.
потеря кеша не критична.
> Собственно остался последний вопрос - какое железо необходимо для такой задачи?На Pentium II 667, 128Mb, 16Gb HDD и реалтек 8139 всё чудно работает. :)
Хотя, если в отделе продаж 1000 менеджеров, то придётся весь вконтакт и ютуб кэшироватьКакой дневной трафик, народу сколько,
скорость сети внутренняя, до провайдера, после провайдера?
>> Собственно остался последний вопрос - какое железо необходимо для такой задачи?
> На Pentium II 667, 128Mb, 16Gb HDD и реалтек 8139 всё чудно
> работает. :)
> Хотя, если в отделе продаж 1000 менеджеров, то придётся весь вконтакт и
> ютуб кэшировать
> Какой дневной трафик, народу сколько,
> скорость сети внутренняя, до провайдера, после провайдера?Внутри гигабит, от провайдера до амазона 100 Мбит.
Столкнулся с интересной особенностью наверное, мб кто прольет свет на ситуацию.Итак есть
192.168.210.223 - основной squid, он же шлюз по умолчанию
192.168.210.221 - parent squid через которого происходит закачка psdНа клиенте ставлю на закачку psd и смотрю на внутр инт-се на шлюзе
18:39:12.699466 IP 192.168.210.130.1771 > 72.21.215.165.80: Flags [.], ack 39070569, win 65535, length 0
18:39:12.699475 IP 72.21.215.165.80 > 192.168.210.130.1771: Flags [.], seq 39079329:39102689, ack 0, win 15544, length 23360
18:39:12.699505 IP 72.21.215.165.80 > 192.168.210.130.1771: Flags [.], seq 39102689:39134809, ack 0, win 15544, length 32120
18:39:12.699794 IP 192.168.210.130.1771 > 72.21.215.165.80: Flags [.], ack 39079329, win 56775, length 0
18:39:12.700198 IP 192.168.210.130.1771 > 72.21.215.165.80: Flags [.], ack 39134809, win 1295, length 0
18:39:12.701523 IP 192.168.210.130.1771 > 72.21.215.165.80: Flags [.], ack 39134809, win 5055, length 0
18:39:12.701545 IP 72.21.215.165.80 > 192.168.210.130.1771: Flags [.], seq 39134809:39139189, ack 0, win 15544, length 4380192.168.210.130 - внутр ip клиента, на котором произвожу закачку
72.21.215.165 - ip стораджа амазонаНо при этом в логах parent squid вижу строку
1363797424.272 62259 192.168.210.223 TCP_HIT/200 1236766674 GET http://example.s3.amazonaws.com/4b0cf94b55ac9c1a8aa3054c5eb7... - NONE/-и при этом если посмотреть на squid parent, то видно что он общается с основным сквидом
18:38:52.919563 IP 192.168.210.223.37816 > 192.168.210.221.3128: Flags [.], ack 111692971, win 3360, options [nop,nop,TS val 370028918 ecr 5820112], length 0
18:38:52.919598 IP 192.168.210.221.3128 > 192.168.210.223.37816: Flags [.], seq 111692971:111701659, ack 191, win 243, options [nop,nop,TS val 5820115 ecr 370028918], length 8688
18:38:52.919611 IP 192.168.210.221.3128 > 192.168.210.223.37816: Flags [.], seq 111701659:111746547, ack 191, win 243, options [nop,nop,TS val 5820115 ecr 370028918], length 44888
18:38:52.919723 IP 192.168.210.221.3128 > 192.168.210.223.37816: Flags [P.], seq 111746547:111747075, ack 191, win 243, options [nop,nop,TS val 5820115 ecr 370028918], length 528
18:38:52.920203 IP 192.168.210.223.37816 > 192.168.210.221.3128: Flags [.], ack 111747075, win 3174, options [nop,nop,TS val 370028918 ecr 5820115], length 0ну и судя по скорости отдачи 25-30 Мбайт/с отдача явно идет из кеша, а не напрямую с амазона.