2010-12-02 4 views
3

В настоящее время я работаю над настройкой моего веб-приложения CakePHP (1.3) для запуска в HA Setup. У меня есть 4 веб-бокса, которые используют приложение как кластер MySQL для бэкэнд базы данных. У меня есть пользователи, загружающие 12 000 - 24 000 изображений в неделю (35-70 ГБ). Затем приложение генерирует 2 дополнительных файла из оригинала, миниатюры и изображения среднего размера для предварительного просмотра. Это означает, что в каждую репозитарию добавляется 36 000 - 72 000 возможных файлов.CakePHP Настройка фермы высокой доступности

То, что я пытаюсь обвести вокруг себя, - это обработать большое количество статических запросов к файлам, поступающих от пользователей, пытающихся просмотреть эти изображения. Я имею в виду, что у меня может быть несколько веб-боксов, обслуживающих только статические файлы с балансиром нагрузки, отправляющим запросы.

Но есть ли у кого-нибудь идеи о том, как синхронизировать все статические файловые серверы?

Если у кого-либо из вас есть какие-либо впечатления, которые вы хотели бы поделиться или какие-либо полезные ссылки для меня, это было бы очень признательно.

Спасибо,

serialk

+1

Не уверен, что это помогает, но Facebook использует Лак для обработки своих изображений | http://www.varnish-cache.org – RabidFire

+0

Спасибо за ссылку RabidFire, я получил некоторое чтение на моей пластине lol – serialk

ответ

2

Это довольно острая проблема.

Технически вы можете получить общий доступ к общей папке с помощью NFS (или SMB, если хотите), используя DRBD и Linux-HA для активной/пассивной настройки. Такая настройка будет иметь хорошую доступность против потери одного сервера, однако такая настройка довольно расточительна и не проста в масштабировании - вам нужно, чтобы приложение самостоятельно решало, на каком сервере (серверах) идти, настраивать монтировки NFS и т. Д. и все это становится довольно сложным.

Поэтому я бы предположил, что вы избегаете хранить изображения в файловой системе вообще - или, по крайней мере, не в обычном виде. Я предполагаю, что вам нужно, чтобы это было гибким, чтобы добавить больше памяти в будущем - если вы можете поддерживать постоянное требование хранения и ввода-вывода, DRBD, HA NFS, вероятно, хорошая система.

Для хранения файлов в гибком «облаке», либо

Tahoe LAFS

Или, может быть, при толчке, Кассандра, что потребует немного больше интеграции, но, может быть, лучше в каком-то смысле.

MySQL-кластер не подходит для больших капель, поскольку он (в основном) хранит данные в ram; также высокая согласованность, которую он обеспечивает, требует много блокировки, которая делает обновления масштабируемыми (относительно) плохо при высоких нагрузках.

Но вы все равно можете поместить изображения в mysql-кластер в любом случае, особенно, поскольку вы уже настроили его - для этого не потребуется никаких дополнительных накладных расходов.

+0

Спасибо за ваш ответ MarkR после прочтения различных вариантов, которые вы предложили, я думаю, что Cassandra будет победитель для этого. Это потребует некоторой работы, чтобы встать и работать, особенно потому, что это будет моя первая интеграция, но определенно мне стоит того. Еще раз спасибо! – serialk

Смежные вопросы