У меня есть несколько веб-серверов Linux, подключенных к балансировщику нагрузки, и мне нравится делиться ресурсами (такими как изображения, видео и другие материалы) между этими серверами. Как лучше всего это сделать?
В настоящее время я подключил файловый сервер ко всем веб-серверам, но меня беспокоит, что он выйдет из строя из-за большого трафика. Как я могу этого избежать?
Заранее спасибо.
Есть несколько способов сделать это в зависимости от ваших потребностей.
Первые два подходят лучше всего, если у вас будет много новых файлов. Третий вариант был бы идеальным решением, если вы не добавляете или не меняете файлы так часто, поскольку пользователи будут получать 404-е сообщение для статического контента, который еще не синхронизирован.
Последний вариант может быть идеальным во многих отношениях, но также может оказаться самым дорогим из четырех. Вам также придется переписать свои веб-сайты, чтобы поддерживать это.
Еще один отличный способ уменьшить нагрузку на веб-серверы и выполнить балансировку нагрузки - использовать squid (а именно, squid3). Настройте его как обратный прокси с кешированием. Он будет кэшировать статический контент, такой как изображения и т. Д., Либо на жесткий диск (по умолчанию), либо в ОЗУ (быстрее и лучше всего), если вы установите его таким образом. Он также может выполнять циклический перебор с другими серверами Squid, если какой-либо конкретный узел перегружен.
Поскольку обычно потребность в большем количестве серверов возникает из-за ресурсов, необходимых для запуска динамических веб-сайтов / приложений, рассмотрите возможность размещения статических ресурсов в другом поддомене / домене. (например, static.yourdomain.com)
Затем вы можете использовать другой сервер / серверы для их размещения. Хостинг статических файлов не использует много ресурсов, поэтому вам потребуется значительно меньше серверов для статического контента. Вы также освободите некоторые ресурсы на серверах для динамического контента.
В зависимости от вашего балансировщика нагрузки вы также можете сделать это в том же домене, где балансировщик нагрузки решает, какой сервер использовать для какого запроса, но если вы используете отдельный домен, вы можете довольно легко разместить свои статические активы в CDN, если необходимость должна возникнуть!
Одно из решений этой проблемы, которое я использовал, состоит в том, чтобы иметь основную копию файлов для чтения / записи на общем диске NFS, но также сохранять копию только для чтения на каждом веб-сервере, чтобы сбой хоста NFS приводил к доступу к файлам. в режиме только для чтения, а не терять их полностью.
rsync
запускается каждые 15 минут, чтобы копия, доступная только для чтения, на каждом веб-хосте оставалась свежей.check_link
Сценарий bash запускается каждую минуту, чтобы убедиться, что монтирование NFS все еще существует, и, если нет, меняет символическую ссылку на копию только для чтения.Более подробную информацию можно найти в Эта статья с того момента, когда я впервые установил эту систему.
Плюсы:
Минусы:
Возможно, вы захотите рассмотреть базу данных NoSQL. Они предназначены для работы с кластерами, обеспечивая конечную согласованность. Но будьте осторожны, они не КИСЛОТЫ.
Вот введение это поможет вам решить, какую базу данных NoSQL вы можете использовать для своих целей.
Вот список ресурсов связанных с доступным NoSQL.
Почему бы вам не попробовать решение DFS, оно обеспечивает высокий уровень избыточности, а том может быть разделен между сколь угодно большим количеством пользователей. Gluster - мой любимый продукт, его очень легко установить и настроить в любом известном дистрибутиве Linux.