База данных MySQL - 1С

реклама
Платформа разработки высоконагруженного
веб-сервиса: инструменты отладки и
возможности масштабирования
Александр Демидов
руководитель направления арендных решений
«1С-Битрикс»
Традиционное устройство
веб-продуктов
Веб-приложение
Кэширование
диск / memcached / …
База данных
Масштабирование
Основные задачи, которые
решает веб-кластер:
Обеспечение высокой доступности
сервиса (так называемые HA - High
Availability или Failover кластеры)
Масштабирование веб-проекта в
условиях возрастающей нагрузки
(HP - High Performance кластеры)
Балансирование нагрузки,
трафика, данных между
несколькими серверами
Создание целостной резервной
копии данных для MySQL
«1С-Битрикс: Веб-кластер» - это комбинация
технологий:
•
Вертикальный шардинг (вынесение модулей на
отдельные серверы MySQL)
•
Репликация MySQL и балансирование нагрузки между
серверами
•
Распределенный кеш данных (memcached)
•
Непрерывность сессий между веб-серверами (хранение
сессий в базе данных)
•
Кластеризация веб-сервера:
– Синхронизация файлов
– Балансирование нагрузки между серверами
Репликация и балансировка
нагрузки MySQL
Веб-сервер
Веб-кластер
SQL-балансировщик
База данных MySQL
MASTER
База данных MySQL
SLAVE 1
База данных MySQL
SLAVE …
База данных MySQL
SLAVE N
Репликация и балансировка
нагрузки MySQL
Гибкая балансировка
нагрузки SQL
Простота
администрирования
Дешевое и быстрое
неограниченное
масштабирование
Онлайн бэкап
Не требуется доработка
логики веб-приложения
Распределенный кеш данных
(memcached)
Высокая эффективность - за
счет централизованного
использования кэша вебприложением
Надежность - за счет
устойчивости подсистемы
кешировния к выходу из строя
отдельных компонентов
Неограниченная
масштабируемость - за счет
добавления новых
memcached-серверов.
memcached
1
30%
memcached
2
memcached
3
40%
30%
Веб-кластер «1С-Битрикс»
Веб-сервер
Веб-сервер
Веб-сервер
Задача: масштабирование при росте
нагрузки
Очень высокая посещаемость
Балансировщик
нагрузки
Нода 1
«1С-Битрикс:
Веб-кластер»
Нода 2
«1С-Битрикс:
Веб-кластер»
База данных MySQL
…
Нода N
«1С-Битрикс:
Веб-кластер»
Непрерывность сессий между вебсерверами
Пользовательская сессия
должна быть
"прозрачной" для всех
серверов веб-кластера.
После авторизации на одном из серверов пользователь должен считаться
авторизованных и для всех других серверов.
И наоборот - окончание сессии на любом сервере должно означать ее окончание
на всех серверах сразу.
«Узкие» места
Задача синхронизации файлов
Веб-сервер 1
Веб-сервер 2
?
/var/www
Внешнее хранилище: как это
выглядит
<img width="200" height="151" border="0"
src="http://cs1.clodo.ru/v1/
CLODO_7f71c0228dfd469ad68f425520bac415/
upload-clodo/iblock/
a202296a71b9f16ccb502d8ada9298a/karasik.jpg" />
html
Посетитель
*.png; *.jpeg ...
Веб-сервер
БД
Хранилище
Сайт + внешнее хранилище
Как сделать правильно?
API хранилища для «прозрачной» работы с
файлами
API для разработчиков (не используем
стандартные функции для работы с файлами)
Избегаем «диких» файлов
Простое подключение хранилищ
Правила для выбора при работе с несколькими
хранилищами
«Прозрачность» для всех модулей системы
Как сделать правильно?
Таблица с данными обо всех подключенных
хранилищах
Таблица со списком файлов, и указанием, где они
хранятся (можно сразу хранить дополнительную
информацию)
Не используем file_size, getimagesize и т.п. –
сохраняем все данные при аплоаде
Отлов «диких» файлов через обработку 404
Облачные хранилища
Использование нескольких
хранилищ
Одновременно можно
хранить разные файлы в
разных «облачных
хранилищах». Например,
все файлы «весом» больше
100 Мб перемещать в
«облако» Google Storage, а
все видео - в Amazon S3.
«Узкие» места – база данных
Высокие требования к сети, связность
серверов друг с другом
Веб-сервер
«1С-Битрикс: Веб-кластер»
SQL-балансировщик
1С-Битрикс
База данных MySQL
MASTER
База данных MySQL
SLAVE 1
База данных MySQL
SLAVE …
База данных MySQL
SLAVE N
Ручные операции для восстановления
master’а MySQL
Балансировщик (клиентские запросы
по HTTP)
Веб-сервер 1
memcached 1
MySQL
master
Веб-сервер 2
MySQL
slave
memcached 1
Аварии на уровне целого датацентра
Балансировщик (клиентские запросы
по HTTP)
Веб-сервер 1
memcached 1
MySQL
master
Веб-сервер 2
MySQL
slave
memcached 1
Географический веб-кластер
«Веб-кластер»,
ДЦ в России
Веб-нода
Веб-нода
Веб-нода
Асинхронная master-master репликация
для обеспечения работы географически
распределенных веб-кластеров.
Потеря связи между ДЦ может
составлять часы.
Кэш
Кэш
Кэш
«Веб-кластер»,
ДЦ в США
Веб-нода
Веб-нода
Веб-нода
Кэш
Кэш
Кэш
«Веб-кластер»,
БД
БД
ДЦ в Германии
БД
Веб-нода
Веб-нода
Веб-нода
Кэш
Кэш
Кэш
БД
БД
БД
БД
БД
БД
Гео веб-кластер
Группы серверов в административном
интерфейсе
У каждой группы свой MySQL master
(указан в dbconn.php)
Мастеры MySQL объединены в кольцо (в
минимальном варианте – 2 сервера)
Используем master-master
репликацию в MySQL
Особенности настройки MySQL:
auto_increment_increment
auto_increment_offset
Базы в разных датацентрах синхронны, при этом независимы друг от
друга: потеря связности между датацентрами может составлять часы,
данные синхронизируются после восстановления.
Пользователь и все сотрудники этой компании работают в одном
датацентре за счет управления балансировщиком.
Сессии храним в базе, но не реплицируем между серверами из-за
большого траффика и возможных «локов»:
SET sql_log_bin = 0 … или …
replicate-wild-ignore-table = %.b_sec_session%
Надежность
Один из приоритетов –
постоянная доступность сервиса,
его отказоустойчивость.
Все ноды заменяемы и не зависимы
друг от друга, в случае аварии
стартуем новые.
Два датацентра синхронизированы
друг с другом и равноценно
обслуживают клиентов. В случае
аварии на уровне датацентра или
плановых работ с базой, траффик
прозрачно для клиентов
переключается на рабочий
датацентр.
Мониторинг: снаружи и изнутри
Что является критерием
производительности?
«Монитор производительности» платформы
«1С-Битрикс»
Опции платформы
«Монитор производительности» платформы
«1С-Битрикс»
Качество разработки
«Монитор производительности» платформы
«1С-Битрикс»
Альтернатива профессиональным
инструментам
«Монитор производительности» платформы
«1С-Битрикс»
Режим отладки
Режим отладки
Спасибо за внимание!
Вопросы?
Александр Демидов
[email protected]
+7 (915) 201-1500
@demidov
http://www.1c-bitrix.ru
Скачать