URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94315
[ Назад ]

Исходное сообщение
"Кеширование большого объема данных"

Отправлено ALex_hha , 30-Янв-13 01:21 
Возникла необходимость в кэшировании psd файлов из амазон хранилища. Объем 150-200 Гб (с учетом что нужно хранить файлы в кеше 2-3 месяца). Сейчас используется прозрачный squid. Хотелось бы, чтобы основной squid перенаправлял все запросы на amazone на parent.

Собственно вопрос, можно ли настроить squid так, чтобы он кэшировал файлы только с определенного сайта, например, storage.amazon.com. В кеш должны попадать все файлы с этого сайта, в не зависимости от размера. Есть psd файлы размером 1-2 Гб. Но большая часть (80-90%) конечно до 100 Мб. В идеале иметь возможность в ручную удалять необходимый файл из кэша.

Основная задача, как можно с большой скоростью раздавать psd файлы в локальной сети, так как один и тот же файл в производственном процессе используется как минимум 5ю разными людьми.

Возможно данную задачу можно организовать проще не используя squid?


Содержание

Сообщения в этом обсуждении
"Кеширование большого объема данных"
Отправлено PavelR , 30-Янв-13 08:21 
> Собственно вопрос, можно ли настроить squid так, чтобы он кэшировал файлы только
> с определенного сайта, например, storage.amazon.com.

AFAIK, можно.

надо создать соответствующие ацл-и и навесить их на что-то вроде

cache deny ACL


>Хотелось бы, чтобы основной squid перенаправлял все запросы на amazone на parent.

cache_peer + cache_peer_domain / cache_peer_access

Вроде же ничего особенного, не?


"Кеширование большого объема данных"
Отправлено ALex_hha , 30-Янв-13 14:39 
squid для решения данной задачи будет оптимальным решением?

"Кеширование большого объема данных"
Отправлено PavelR , 30-Янв-13 16:30 
> squid для решения данной задачи будет оптимальным решением?

я - не знаю ответа на данный вопрос.


"Кеширование большого объема данных"
Отправлено pavlinux , 31-Янв-13 01:28 
> squid для решения данной задачи будет оптимальным решением?

Если 5 человек работают над одним файлом, то при любом его изменении
(на счет access time не уверен), squid решит что это новый файл и
будет качать заново.

Подними чёнить распределительное P2P,
где-то тут новость была про utorrent  

---
Во http://www.opennet.me/opennews/art.shtml?num=35957


"Кеширование большого объема данных"
Отправлено ALex_hha , 31-Янв-13 01:51 
>> 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 слишком неудобно для данной задачи.


"Кеширование большого объема данных"
Отправлено pavlinux , 31-Янв-13 02:58 
reload_into_ims on

maximum_object_size 4 GB  
minimum_object_size 4 KB

refresh_pattern \.psd$ 43200 100 43200 override-lastmod override-expire ignore-reload ignore-no-cache

# Пожирнее кэш
cache_dir aufs /var/spool/squid 4096 16 256

ну как-то так


"Кеширование большого объема данных"
Отправлено pavlinux , 31-Янв-13 04:20 
> Да и цель сделать все прозрачно для конечного пользователя.

С:\> net use Z: \\192.168.0.1\shara  


"Кеширование большого объема данных"
Отправлено ALex_hha , 31-Янв-13 13:32 
>> Да и цель сделать все прозрачно для конечного пользователя.
> С:\> net use Z: \\192.168.0.1\shara

под прозрачностью подразумевалось то, что пользователям ничего не придется менять в текущем производственном процессе. Т.е. они как закачивали с амазона, так и будут, сама фишка именно - в отдаче из кеша :)

Будем пробовать, о результатах отпишусь


"Кеширование большого объема данных"
Отправлено pavlinux , 31-Янв-13 15:00 
>>> Да и цель сделать все прозрачно для конечного пользователя.
>> С:\> net use Z: \\192.168.0.1\shara
> под прозрачностью подразумевалось то, что пользователям ничего не придется менять в текущем производственном процессе. Т.е. они как закачивали с амазона, так и будут,
> сама фишка именно - в отдаче из кеша :)

Вот теперь ты их и обрадуй - "В честь дня св. Валентина, теперь качаем с диска Z:\"


"Кеширование большого объема данных"
Отправлено ALex_hha , 01-Фев-13 02:01 
>>>> Да и цель сделать все прозрачно для конечного пользователя.
>>> С:\> net use Z: \\192.168.0.1\shara
>> под прозрачностью подразумевалось то, что пользователям ничего не придется менять в текущем производственном процессе. Т.е. они как закачивали с амазона, так и будут,
>> сама фишка именно - в отдаче из кеша :)
> Вот теперь ты их и обрадуй - "В честь дня св. Валентина,
> теперь качаем с диска Z:\"

а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :D


"Кеширование большого объема данных"
Отправлено Аноним , 01-Фев-13 02:51 
> а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :D

Напиши скрипт уже и выкачай всё что надо. Один раз.



"Кеширование большого объема данных"
Отправлено ALex_hha , 01-Фев-13 10:51 
>> а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :D
> Напиши скрипт уже и выкачай всё что надо. Один раз.

Еще раз, одно из условий прозрачность для конечного пользователя ;)


"Кеширование большого объема данных"
Отправлено pavlinux , 02-Фев-13 16:30 
>>> а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :D
>> Напиши скрипт уже и выкачай всё что надо. Один раз.
> Еще раз, одно из условий прозрачность для конечного пользователя ;)

Т.е. вбивать в адресной строке http://z3.amazon.com/~vasyapupkin/ssa/132232/Super.psd
это прозрачно, а Мой Компутер -> Диск Z:\ -> Super.psd  - это не осилят!

Сетевая шара делается на самбе, удалённые данные зеркалируй как нравится: rsync, lftp, git, ...  


"Кеширование большого объема данных"
Отправлено Ы , 02-Фев-13 20:03 
> Т.е. вбивать в адресной строке http://z3.amazon.com/~vasyapupkin/ssa/132232/Super.psd
> это прозрачно, а Мой Компутер -> Диск Z:\ -> Super.psd  - > это не осилят!

Вообще аргументы у автора слабые ... Потому как даже (спасибо pavlinux) после http://z3.amazon.com/~vasyapupkin/ssa/132232/Super.psd - что сделает юзер?
Открою вам ALex_hha страшную тайну - юзер получит диалог сохранения файла и скинет его на _локальный_ диск. А уж потом откроет его целевой программой. Дык чего ему вообще о первой части марлезонского балета знать?

Как то так.


"Кеширование большого объема данных"
Отправлено ALex_hha , 03-Фев-13 22:00 
>>>> а на диск Z вы предлагаете мне выбирать файлы из /var/spool/squid? :D
>>> Напиши скрипт уже и выкачай всё что надо. Один раз.
>> Еще раз, одно из условий прозрачность для конечного пользователя ;)
> Т.е. вбивать в адресной строке http://z3.amazon.com/~vasyapupkin/ssa/132232/Super.psd
> это прозрачно, а Мой Компутер -> Диск Z:\ -> Super.psd  -
> это не осилят!
> Сетевая шара делается на самбе, удалённые данные зеркалируй как нравится: rsync, lftp,
> git, ...

никто естественно не вбивает эти километровые ссылки, они есть в CRM системе. А так как есть люди, работающие из дома, то ссылка на сетевой диск будет как бы не уместной


"Кеширование большого объема данных"
Отправлено pavlinux , 04-Фев-13 17:45 
>[оверквотинг удален]
>>>> Напиши скрипт уже и выкачай всё что надо. Один раз.
>>> Еще раз, одно из условий прозрачность для конечного пользователя ;)
>> Т.е. вбивать в адресной строке 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>


"Кеширование большого объема данных"
Отправлено ALex_hha , 04-Фев-13 19:14 
>[оверквотинг удален]
>         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>

не совсем понял идею


"Кеширование большого объема данных"
Отправлено pavlinux , 05-Фев-13 03:09 
>>[оверквотинг удален]
> не совсем понял идею

Заменить ссылки в CRM, чтоб указывали на локальный вебсервак.



"Кеширование большого объема данных"
Отправлено ALex_hha , 05-Фев-13 11:28 
>>>[оверквотинг удален]
>> не совсем понял идею
> Заменить ссылки в CRM, чтоб указывали на локальный вебсервак.

И потом отлавливать кто работает в офисе, тому меняем, а кто из дома не меняем. Не вариант однозначно.

P.S.
тут кто то предлагал расшарить папку с кешем squid, посмотрел, так он даже имена хранимых файлов и их размер меняет


"Кеширование большого объема данных"
Отправлено pavlinux , 05-Фев-13 15:43 
>>>>[оверквотинг удален]
>>> не совсем понял идею
>> Заменить ссылки в CRM, чтоб указывали на локальный вебсервак.
> И потом отлавливать кто работает в офисе, тому меняем, а кто из дома не меняем.

1. Если CRM доступна из инета, то файлы будут скачиваться с локального сервака.  
2. Для работы из дома через прокси не нужен, напрямую быстрее.


"Кеширование большого объема данных"
Отправлено ALex_hha , 05-Фев-13 15:24 
В общем получилось как то так

Основной 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 seconds

hierarchy_stoplist cgi-bin ?

acl PSD urlpath_regex \.psd$
cache deny PSD

acl ZIP urlpath_regex \.zip$
cache deny ZIP

cache_dir null /tmp
cache_store_log none

вспомогательный squid (192.168.210.221)


acl main_squid src 192.168.210.223
http_access allow main_squid

acl SQUID-PARENT src 192.168.210.223
icp_access allow SQUID-PARENT
icp_access deny all

cache_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 MB

acl PSD urlpath_regex -i \.psd$
cache allow PSD

acl ZIP urlpath_regex -i \.zip$
cache allow ZIP

acl OTHER url_regex -i ^http://*
cache deny OTHER

refresh_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


"Кеширование большого объема данных"
Отправлено pavlinux , 05-Фев-13 15:45 
> В общем получилось как то так

reload_into_ims on


"Кеширование большого объема данных"
Отправлено ALex_hha , 05-Фев-13 16:26 
>> В общем получилось как то так
> reload_into_ims on

на 192.168.210.221 (вспомогательный squid) эта опция включена на основном выключена. Только не совсем понял, что именно она дает конкретно в моем случае? Какая будет выгода?


"Кеширование большого объема данных"
Отправлено pavlinux , 06-Фев-13 05:17 
> Только не совсем понял, что именно она дает конкретно в моем случае?

Параметр 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" независимо от того,
обновлялись ли файлы или нет. И сквид опять ломанётся их скачивать.


"Кеширование большого объема данных"
Отправлено ALex_hha , 06-Фев-13 12:14 
>[оверквотинг удален]
> Параметр 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" независимо от того,
> обновлялись ли файлы или нет. И сквид опять ломанётся их скачивать.

понял, спасибо за помощь


"Кеширование большого объема данных"
Отправлено ALex_hha , 06-Фев-13 15:15 
Собственно остался последний вопрос - какое железо необходимо для такой задачи?

Сейчас вот смотрю в сторону такой машины

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.
потеря кеша не критична.


"Кеширование большого объема данных"
Отправлено pavlinux , 06-Фев-13 18:17 
> Собственно остался последний вопрос - какое железо необходимо для такой задачи?

На Pentium II 667, 128Mb, 16Gb HDD и реалтек 8139 всё чудно работает. :)
Хотя, если в отделе продаж 1000 менеджеров, то придётся весь вконтакт и ютуб кэшировать

Какой дневной трафик, народу сколько,
скорость сети внутренняя, до провайдера, после провайдера?


"Кеширование большого объема данных"
Отправлено ALex_hha , 07-Фев-13 01:51 
>> Собственно остался последний вопрос - какое железо необходимо для такой задачи?
> На Pentium II 667, 128Mb, 16Gb HDD и реалтек 8139 всё чудно
> работает. :)
> Хотя, если в отделе продаж 1000 менеджеров, то придётся весь вконтакт и
> ютуб кэшировать
> Какой дневной трафик, народу сколько,
> скорость сети внутренняя, до провайдера, после провайдера?

Внутри гигабит, от провайдера до амазона 100 Мбит.


"Кеширование большого объема данных"
Отправлено ALex_hha , 20-Мрт-13 21:16 
Столкнулся с интересной особенностью наверное, мб кто прольет свет на ситуацию.

Итак есть

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 4380

192.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 Мбайт/с отдача явно идет из кеша, а не напрямую с амазона.