Я разработчик веб-сайта, который в значительной степени зависит от статического контента, такого как изображения, видео и т. Д. Наша текущая настройка очень проста, у нас в основном есть один сервер, действующий как наш cdn, который, в свою очередь, обновляется веб-серверами через rsync. Простота этой настройки имеет несколько недостатков, в основном тот факт, что мы также должны синхронизировать любые изменения между веб-серверами.
Теперь мы ищем менее разрозненную архитектуру. Одна из идей - использовать NAS, который можно было бы смонтировать на каждом веб-сервере, что означало, что нам не нужно было бы полагаться на rsync, однако это привело бы к единой точке отказа.
Кто-нибудь знает об успешных установках и архитектурах компакт-дисков с довольно большим объемом (примерно 10 ТБ в месяц)?
Если это статический контент, почему бы вместо этого не использовать большие обратные прокси-серверы кеша, независимо от того, используете ли вы прокси Apache, nginx или даже lighttpd, который является легким и быстрым.
Другая идея - использовать DRBD, который представляет собой RAID 1 по сети. 2 сервера будут зеркалировать диски друг друга. Они должны быть в режиме master / master, но, поскольку он в основном только для чтения, вам может не понадобиться запускать программное обеспечение кластера. В противном случае вы можете использовать ocfs2 (кластеризация дисков Oracle). По крайней мере, таким образом любая смерть сервера отражается на диске другого сервера.
Я думаю, что rsync в порядке, просто вам нужно сделать его масштабируемым. пример. Создайте внутреннюю структуру DNS, которая имеет CNAMES «clusterhost-1, clusterhost-2 и т. Д.», Указывающие на ваш контент / веб-хосты, а главный сервер контента выполняет передачу DNS AXFR для получения списка доменов (удаление того, что не является clusterhost ) и прогоните их все и выполните rsync. Если у вас есть новый сервер, добавьте для него новый CNAME, и он будет автоматически выполнять rsync в следующем раунде. Если вы хотите отключить один сервер, чтобы его не использовали, удалите CNAME для этого хоста, и он не будет обновляться. То же самое касается обратного проксирования: вы можете контролировать загрузку, создавая несколько CNAMES, добавляя их в список прокси и изменяя запись, чтобы она указывала на любой бэкэнд, который вы хотите.
Надеюсь, это даст некоторые идеи.
Во-первых, вы не используете "Сеть доставки контента"(CDN), у вас есть только один веб-сервер, предназначенный для обслуживания статического контента. Если вы выполняете поиск с использованием CDN в качестве поискового запроса, вы получите неправильные ответы, потому что это неправильное слово.
Вы можете изучить использование настоящего CDN, который кэширует ваши статические данные во многих местах по всему миру ближе и быстрее для ваших конечных пользователей. Поскольку CDN кэширует данные ближе к конечному пользователю, он имеет меньшую задержку в сети и, таким образом, ускоряет загрузку. Он также обеспечивает преимущество масштабируемости за счет почти полной разгрузки статического контента с ваших серверов. MaxCDN и Amazon CloudFront - распространенные недорогие варианты.
Если ваши потребности меньше, вы также можете просто использовать несколько веб-серверов для обслуживания своего статического контента. Это довольно просто. В этом случае ваш вопрос, кажется, о развертывание, то есть получение статических файлов на веб-серверы. Есть много способов сделать это, это будет зависеть от того, какое программное обеспечение вы используете и каков ваш внутренний рабочий процесс. Возможно, вам следует задать другой вопрос с более точной информацией по этому поводу.