Резервное копирование

реклама
Построение системного
ландшафта для высоко
нагруженного проекта
ООО «Ленвендо-Софт»
Гаврилов Виталий
Технический директор
тел.: +7 (812) 322-95-87
[email protected]
Построение системного ландшафта
для высоко нагруженного проекта
Используемое «железо». Что и для чего выбрать?
Как построить горизонтально-масштабируемое
решение?
Балансировка нагрузки на БД
Распределение сетевого трафика
Масштабирование высоко нагруженного проекта
Экономика проекта
Резервное копирование
Используемое «железо». Что и для чего выбрать?
Базовое решение
MySQL
Apache + php
Nginx
Посетитель
Посетитель
Балансирующий
сервер
WEB-сервер
Посетитель
Varnish
Nginx
NFS/CIFS/Smth server
Файловое
хранилище
База данных
Используемое «железо». Что и для чего выбрать?
Решение с использованием
Технологий виртуализации
Apache + php
MySQL
Nginx
Балансирующий
сервер
Посетитель
WEB-сервер
Посетитель
WEB-сервер
WEB-сервер
Посетитель
Varnish
Nginx
NFS/CIFS/Smth server
Файловое
хранилище
База данных
Как построить горизонтально-масштабируемое
решение?
•
•
•
•
Масштабирование на уровне приложения
Масштабирование на уровне базы данных
Масштабирование на уровне статического контента
Масштабирование на уровне сетевых интерфейсов
Как построить горизонтально-масштабируемое
решение?
• Масштабирование на уровне приложения
Поддержка распределенного (memcached) или
файлового кеширования
Отсутствие или минимизация в логике приложения
операций, требующих монопольных блокировок
файлов
Модульность приложения, позволяющая
минимизировать число уникальных обращений к
файловой системе
Как построить горизонтально-масштабируемое
решение?
• Масштабирование на уровне базы данных
Поддержка на уровне ядра приложения разделения
запросов к базе данных на запросы выборки и
запросы изменения данных
Наличие на уровне базы данных средств master-slave
репликации на основании транспорта журнала
транзакций
Корректная поддержка на уровне приложения
непоследовательной во времени смены
идентификаторов (необходимо для master-master
репликации в mysql)
Как построить горизонтально-масштабируемое
решение?
• Масштабирование на уровне статического
контента
Хранение статического контента в файловой
системе, а не в базе данных
Наличие в ядре приложения специализированной
настройки для определения места хранения
загружаемого статического контента
Наличие в ядре приложения функций работы с CDN
(Content Delivery Network)
Как построить горизонтально-масштабируемое
решение?
• Масштабирование на уровне сетевых
интерфейсов
Наличие избыточного оборудования с
высокоскоростным (от 100 МБит) подключением к сети
Интернет.
Вынесение статического контента в CDN средствами
приложения
Балансировка нагрузки на БД
Apache + php
MySQL
Запись/чтение
WEB-сервер
Запись/чтение
Запись/чтение
WEB-сервер
WEB-сервер
База данных
Балансировка нагрузки на БД
MySQL
Master-1
Apache + php
Запись/чтение
База данных
WEB-сервер
WEB-сервер
Запись/чтение
Запись/чтение
WEB-сервер
База данных
MySQL
Master-2
Балансировка нагрузки на БД
MySQL
Slave-1
MySQL
Master
Apache + php
Чтение
Запись
WEB-сервер
Запись
MySQL
Slave-2
Запись
WEB-сервер
Чтение
Чтение
WEB-сервер
База данных
Балансировка нагрузки на БД
MySQL
Master-1
Apache + php
MySQL
Slave-1
Запись
База данных
Чтение
Чтение
WEB-сервер
WEB-сервер
Запись
Запись
MySQL
Slave-2
WEB-сервер
Чтение
MySQL
Master-2
База данных
Отказоустойчивость базы данных
Отказоустойчивость базы данных может быть
обеспечена:
на уровне приложения (автоматическое выявление
недоступных узлов)
на уровне MySQL-proxy
на уровне кластерных ресурсов (например,
pacemaker)
Отказоустойчивость БД средствами кластера
Private Server IP
MySQL
Master-1
Shared master IP
Запись
База данных
MySQL
Slave-1
WEB-сервер
Чтение
Shared slave IP
Private Server IP
Отказоустойчивость БД средствами кластера
Private Server IP
MySQL
Master-1
Shared master IP
Запись
База данных
MySQL
Slave-1
WEB-сервер
Чтение
Shared slave IP
Private Server IP
Отказоустойчивость БД средствами кластера
Private Server IP
MySQL
Master-1
Shared master IP
Запись
База данных
MySQL
ExSlave-1
WEB-сервер
Чтение
Shared slave IP
Private Server IP
Распределение сетевого трафика
Ограничение полосы пропускания на сетевое
подключение
– Перенос статического контента на
отдельный домен/поддомен
Ограничение числа одновременных
соединений на уровне WEB-браузера
– Использование «поддельных» поддоменов
– Использование CDN как универсальное
решение
Распределение сетевого трафика
Использование «поддельных» поддоменов
MySQL
Apache + php
Nginx
Балансирующий
сервер
www.site.ru
Посетитель
HTTP
SQL
HTT{
Посетитель
WEB-сервер
Файловый обмен
Посетитель
HTTP
Varnish
Nginx
NFS/CIFS/Smth server
HTTP
Файловый обмен
Файловое
Хранилище
*.static.site.ru
База данных
Распределение сетевого трафика
Использование «поддельных» поддоменов
• Изменения в DNS
static
static
IN
IN
*.static IN
A
A
1.2.3.4
1.2.3.5
CNAME
static
Распределение сетевого трафика
Использование «поддельных» поддоменов
• Изменения в коде сайта
<img src=“/images/logo.jpg” alt=“site.ru” />
…
<img src=“/static/people/ivanov.png” alt=“Ivanov Ivan” />
<img src=“http://s1.static.site.ru/images/logo.jpg” alt=“site.ru” />
…
<img src=“http://s2.static.site.ru/static/people/ivanov.png” alt=“Ivanov Ivan”
/>
Распределение сетевого трафика
Использование CDN как универсальное
решение
MySQL
Apache + php
Nginx
Балансирующий
сервер
www.site.ru
Посетитель
HTTP
SQL
HTT{
Посетитель
WEB-сервер
Посетитель
Обмен по протоколу CDN
HTTP
HTTP
Синхронизация
данных
CDN
База данных
Распределение сетевого трафика
Использование CDN как универсальное
решение
• Изменение в коде приложения
Изменения зависят от используемой CDN
Масштабирование высоко нагруженного проекта
Синхронное масштабирование между датацентрами
Асинхронное масштабирование между датацентрами
Неполное асинхронное зеркалирование данных
Экономика вопроса
Экономика высоко нагруженной системы
определяется на этапе формирования системной
архитектуры в момент выбора технологий.
На этапе создания и на этапе эксплуатации системы
экономика складывается из следующих факторов:
Программное обеспечение (ОС, СУБД, антивирус и т.п.), доп.
лицензии, продление техподдержки и пр.
Оборудование, каналы с учетом наращивания в ходе
эксплуатации
Администрирование системы
Доработка кода приложения
Резервное копирование
Резервное копирование файловой системы сайта
Резервное копирование базы данных
Резервное копирование статического контента
Резервное копирование
Резервное копирование файловой системы сайта
• Инструменты для выполнения резервного
копирования
– bacula (http://www.bacula.org/en/)
• Рекомендации по выполнению резервного
копирования
– Наличие дублирующего сервера файловой системы сайта
для минимизации нагрузки на время выполнения резервного
копирования
– Наличие выделенного сервера резервного копирования
– Наличие дублирующего сервера резервного
копирование в другом ДЦ
Резервное копирование
Резервное копирование базы данных
• Инструменты резервного копирования
– Резервное БД MySQL копирование можно производить как с
помощью встроенной утилиты mysqldump, так и с
использованием Percona XtraBackup, позволяющую
создавать инкриментные копии.
• Рекомендации по организации резервного
копирования
– Наличие «горячей копии» БД построенной на master-slave
репликации и используемой для выполнения процедуры
резервного копирования
– Наличие «дублирующей копии БД» в другом ДЦ на
случай отказа ДЦ.
Резервное копирование
Резервное копирование статического контента
• Использовать резервное копирование в слчае
использования CDN нет необходимости!
• Инструменты для выполнения резервного
копирования
– bacula (http://www.bacula.org/en/)
• Рекомендации по выполнению резервного
копирования
– В связи со спецификой изменения файловой системы
возможно более редкое выполнения процедуры полного
резервного копирования
Спасибо за внимание!
Буду рад ответить на Ваши вопросы.
ООО «Ленвендо-Софт»
Гаврилов Виталий
Технический директор
Скачать