Назад | Перейти на главную страницу

Хостинг сайтов с очень высокой пропускной способностью

Мне было поручено определить требования к инфраструктуре для сайта, который будет привлекать более 10 миллионов уникальных посетителей в месяц. Этот сайт будет содержать несколько концертов по размеру содержания. Я сразу знаю, что весь интерактивный контент будет размещен в CDN, но как насчет серверной части? к этому сайту также будет подключена CMS, что означает, что любая установка с двумя серверами должна быть кластеризована, и я предполагаю, что нагрузка также будет сбалансирована. Просто хочу любые предложения, которые у вас могут быть.

Чтобы добавить подробностей. Скорее всего, мы будем использовать балансировщик нагрузки webmux.

К сожалению, вы не узнаете, что исправить, пока не начнете жить. Очень сложно положить деньги в нужное место, не имея данных, подтверждающих ваши решения. Я бы рекомендовал Искусство планирования мощности чтобы получить представление о том, что вам следует делать, чтобы спланировать свои способности. Однако общее правило - следить за всем. Вам нужны графики в изобилии. Если вы не видите, где возникают проблемы, у вас нет шанса исправить это. Не оставляйте мониторинг на последнюю минуту. Я не могу не подчеркнуть, насколько важно иметь представление о том, как ваш сайт работает в настоящее время и как он работал за последний день, месяц или год. Для построения графиков мы используем munin, так как он очень быстро запускается. Другие люди с большим эффектом используют ганглии и кактусы.

Однако есть несколько способов повысить свои шансы на выживание.

1) Дублируйте все. Много. Вы хотите иметь возможность добавлять дополнительное оборудование туда, где у вас возникают проблемы. Вы не хотите покупать оборудование большего размера, чтобы заменить слишком медленное оборудование. Посмотрите на балансировку нагрузки на свои серверы приложений. Посмотрите на использование настройки базы данных главный / подчиненный, где чтение поступает от ваших подчиненных устройств, а запись - в ваш главный. Вы сказали, что храните большую часть мультимедиа на CDN. Хорошо.

2) Избегайте хранения всего временного в вашей базе данных. Базы данных слишком медленные для временных данных, и вы хотите, чтобы они обслуживали другие запросы.

3) По возможности избегайте состояния на стороне сервера. С состоянием на стороне сервера вам понадобится какая-то общая репликация сеанса между веб-серверами, ограничивающая вашу способность добавлять дополнительное оборудование, или вам нужно будет использовать липкие сеансы, которые будут работать, но могут вызвать неравномерную нагрузку и отключение сеансов если ваш сервер умирает.

4) Кешировать все. Используйте memcached для кэширования данных между вашей базой данных и вашим приложением. Это более эффективно, если вы храните данные, полученные в результате нескольких запросов. Используйте кеш перед своим веб-уровнем. Что-то вроде apache mod_cache или squid в режиме обратного прокси.

5) Профилируйте свой сайт. Найдите, где это медленно.

6) Профилируйте свой html. Большая часть медлительности, которую пользователь воспринимает в Интернете, связана с интерфейсом пользователя. Высокопроизводительные веб-сайты имеет много полезных приемов. Также полезно расширение YSlow для firefox от Yahoo.

Я могу рекомендовать Создание масштабируемых веб-сайтов и Высокая масштабируемость блог.

Вариантов очень много. Некоторые технологии, которые я использую для подобных ситуаций: haproxy для балансировки нагрузки, nginx и lighttpd для обслуживания статического контента, varnish для прокси-кеша, heartbeat для высокой доступности между серверами. Я по-прежнему использую apache для обслуживания динамического контента с помощью cms, публикующего статические html-файлы и пытаюсь избежать подключения к базе данных во внешнем интерфейсе.

Знаете, в зависимости от того, что именно вы делаете ... несколько упрощенный подход может заключаться в использовании чего-то вроде сервиса Amazon CloudFront:

http://aws.amazon.com/cloudfront

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

Amazon CloudFront доставляет ваш контент с помощью глобальной сети периферийных местоположений. Запросы на ваши объекты автоматически направляются в ближайшее периферийное местоположение, поэтому контент доставляется с максимальной производительностью. Amazon CloudFront без проблем работает с Amazon Simple Storage Service (Amazon S3), который надежно хранит исходные окончательные версии ваших файлов. Как и в случае с другими веб-сервисами Amazon, использование Amazon CloudFront не предусматривает контрактов или ежемесячных обязательств - вы платите только за столько или за меньшее количество контента, сколько вы фактически доставляете через сервис.

С балансировкой нагрузки я также очень рекомендую: