Настройка фермы серверов высокой доступности CakePHP - PullRequest
3 голосов
/ 02 декабря 2010

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

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

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

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

Спасибо

serialk

1 Ответ

2 голосов
/ 02 декабря 2010

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

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

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

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

Tahoe LAFS

Или, возможно, одним нажатием, Cassandra, что потребовало бы немного большей интеграции, но, возможно, лучше в некоторых отношениях.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...