Построение системного ландшафта для высоко нагруженного проекта ООО «Ленвендо-Софт» Гаврилов Виталий Технический директор тел.: +7 (812)
Построение системного ландшафта для высоко нагруженного проекта Используемое «железо». Что и для чего выбрать? Как построить горизонтально-масштабируемое решение? Балансировка нагрузки на БД Распределение сетевого трафика Масштабирование высоко нагруженного проекта Экономика проекта Резервное копирование
Используемое «железо». Что и для чего выбрать?
Масштабирование на уровне приложения Масштабирование на уровне базы данных Масштабирование на уровне статического контента Масштабирование на уровне сетевых интерфейсов Как построить горизонтально-масштабируемое решение?
Масштабирование на уровне приложения Поддержка распределенного (memcached) или файлового кеширования Отсутствие или минимизация в логике приложения операций, требующих монопольных блокировок файлов Модульность приложения, позволяющая минимизировать число уникальных обращений к файловой системе Как построить горизонтально-масштабируемое решение?
Масштабирование на уровне базы данных Поддержка на уровне ядра приложения разделения запросов к базе данных на запросы выборки и запросы изменения данных Наличие на уровне базы данных средств master-slave репликации на основании транспорта журнала транзакций Корректная поддержка на уровне приложения непоследовательной во времени смены идентификаторов (необходимо для master-master репликации в mysql) Как построить горизонтально-масштабируемое решение?
Масштабирование на уровне статического контента Хранение статического контента в файловой системе, а не в базе данных Наличие в ядре приложения специализированной настройки для определения места хранения загружаемого статического контента Наличие в ядре приложения функций работы с CDN (Content Delivery Network) Как построить горизонтально-масштабируемое решение?
Масштабирование на уровне сетевых интерфейсов Наличие избыточного оборудования с высокоскоростным ( от 100 МБит ) подключением к сети Интернет. Вынесение статического контента в CDN средствами приложения Как построить горизонтально-масштабируемое решение?
Балансировка нагрузки на БД
Отказоустойчивость базы данных может быть обеспечена: на уровне приложения (автоматическое выявление недоступных узлов) на уровне MySQL-proxy на уровне кластерных ресурсов (например, pacemaker) Отказоустойчивость базы данных
Отказоустойчивость БД средствами кластера
Ограничение полосы пропускания на сетевое подключение –Перенос статического контента на отдельный домен/поддомен Ограничение числа одновременных соединений на уровне WEB-браузера –Использование «поддельных» поддоменов –Использование CDN как универсальное решение Распределение сетевого трафика
Использование «поддельных» поддоменов
Распределение сетевого трафика Использование «поддельных» поддоменов Изменения в DNS staticINA staticINA *.staticINCNAMEstatic
Распределение сетевого трафика Использование «поддельных» поддоменов Изменения в коде сайта … …
Распределение сетевого трафика Использование CDN как универсальное решение
Распределение сетевого трафика Использование CDN как универсальное решение Изменение в коде приложения Изменения зависят от используемой CDN
Синхронное масштабирование между датацентрами Асинхронное масштабирование между датацентрами Неполное асинхронное зеркалирование данных Масштабирование высоко нагруженного проекта
Экономика вопроса Экономика высоко нагруженной системы определяется на этапе формирования системной архитектуры в момент выбора технологий. На этапе создания и на этапе эксплуатации системы экономика складывается из следующих факторов: Программное обеспечение (ОС, СУБД, антивирус и т.п.), доп. лицензии, продление техподдержки и пр. Оборудование, каналы с учетом наращивания в ходе эксплуатации Администрирование системы Доработка кода приложения
Резервное копирование файловой системы сайта Резервное копирование базы данных Резервное копирование статического контента Резервное копирование
Резервное копирование файловой системы сайта Инструменты для выполнения резервного копирования –bacula ( Рекомендации по выполнению резервного копирования –Наличие дублирующего сервера файловой системы сайта для минимизации нагрузки на время выполнения резервного копирования –Наличие выделенного сервера резервного копирования –Наличие дублирующего сервера резервного копирование в другом ДЦ
Резервное копирование Резервное копирование базы данных Инструменты резервного копирования –Резервное БД MySQL копирование можно производить как с помощью встроенной утилиты mysqldump, так и с использованием Percona XtraBackup, позволяющую создавать инкриментные копии. Рекомендации по организации резервного копирования –Наличие «горячей копии» БД построенной на master-slave репликации и используемой для выполнения процедуры резервного копирования –Наличие «дублирующей копии БД» в другом ДЦ на случай отказа ДЦ.
Резервное копирование Резервное копирование статического контента Использовать резервное копирование в слчае использования CDN нет необходимости! Инструменты для выполнения резервного копирования –bacula ( Рекомендации по выполнению резервного копирования –В связи со спецификой изменения файловой системы возможно более редкое выполнения процедуры полного резервного копирования
Спасибо за внимание! Буду рад ответить на Ваши вопросы. ООО «Ленвендо-Софт» Гаврилов Виталий Технический директор