2. Сколько стоит 1 час?
• Крупный интернет-
магазин с годовым
оборотом 1.5 млрд. руб.
• 210 рабочих дней в году
по 10 рабочих часов.
• Час простоя крупного
интернет-проекта может
обойтись владельцам в
0,3 - 1 миллион рублей
упущенной выручки.
3. Основные задачи, которые
решает веб-кластер:
Обеспечение высокой доступности
сервиса (так называемые HA - High
Availability или Failover кластеры)
Масштабирование веб-проекта в
условиях возрастающей нагрузки
(HP - High Performance кластеры)
Балансирование нагрузки,
трафика, данных между
несколькими серверами
Создание целостной резервной
копии данных для MySQL
5. Варианты масштабирования:
Разделение на два сервера: веб-
сервер + база данных.
Увеличение мощности
оборудования (чем мощнее – тем
дороже; рост стоимости не
пропорционален).
Выделение кеша на один внешний
сервер через memcached.
Переход на Oracle (минимальная
лицензия +5000$ за процессор).
Создание Oracle RAC (Real
Application Cluster). Проект – около
150 000$ (оборудование +
лицензия + «общая полка»). Очень
мало специалистов.
Для большинства клиентов
производительности достаточно, но не
решены проблемы отказоустойчивости,
резервирования, сетевой доступности.
7. Аккаунты
a-m
База данных База данных
MySQL 1 MySQL 1
База данных База данных
MySQL MySQL
База данных База данных
MySQL 2 MySQL 2
Аккаунты
n-z
Вертикальный шардинг Горизонтальный шардинг
8. Масштабирование при росте нагрузки
MySQL
Веб-сервер
Веб-приложение
SQL-балансировщик
База данных MySQL База данных MySQL База данных MySQL База данных MySQL
MASTER SLAVE 1 SLAVE … SLAVE N
9. Распределенный кеш данных
(memcached)
Высокая эффективность - за
счет централизованного
использования кэша веб- memcached memcached memcached
приложением 1 2 3
Надежность - за счет
устойчивости подсистемы
кешировния к выходу из строя
Веб-кластер приложений
отдельных компонентов
Веб-сервер Веб-сервер Веб-сервер
Неограниченная
масштабируемость - за счет
добавления новых
memcached-серверов.
10. Задача: масштабирование при росте
нагрузки
Высокая
посещаемость
Балансировщик
нагрузки
Веб-сервер Веб-сервер
Нода 1 Нода 2
Авто-синхронизация
База данных MySQL 1) Нагрузка равномерно
распределяется между нодами
веб-кластера
2) Сервера приложений не
перегружены и работают в
устойчивом штатном режиме
11. Задача: масштабирование при росте
нагрузки
Очень высокая посещаемость
Балансировщик
нагрузки
Нода 1 Нода 2 Нода N
…
База данных MySQL
12. Распределение нагрузки между веб-
серверами
Варианты балансирования нагрузки между различными нодами
веб-кластера:
• DNS – несколько записей “IN A” для одного имени, распределение
round robin. Самый дешевый и простой вариант, но имеет ряд
минусов:
• нет четкого критерия выбора IP из списка клиентом;
• нет механизмов определения доступности узлов;
• длительное время кэширования ответов DNS.
• Программные средства (например, nginx).
• Аппаратные решения (например, Cisco CSS - Content Services
Switch).
• Специализированные сервисы (например, Amazon Elastic Load
Balancing).
14. Синхронизация дисковых систем
Два типа:
1. Синхронный:
• Общая «дисковая полка» (дорого, не резервирует данные)
• Сетевые средства – NFS (очень медленно)
• OCFS2
• DRBD
2. Асинхронный (синхронизация локальных дисков)
• rsync
• csync2
15. Тип 1: общее хранилище данных
NAS (Network Attached Storage)
/var/www NFS, SMB/CIFS, ….
Просто, но
медленно.
Веб-сервер 1 Веб-сервер 2
SAN (Storage Area Network), «дисковая OCFS2, GFS2, ….
полка»
Быстро, но
/var/www сложно и дорого.
17. Почему мы выбрали csync2?
Быстрый доступ к файлам приложения за счет использования
локальных хранилищ.
Высокая скорость работы.
Низкое потребление ресурсов (CPU, дисковые операции). Два этих
фактора позволяют запускать процесс синхронизации максимально
часто, поэтому данные на серверах становятся идентичными
практически в "реальном времени".
Простота настройки для обмена данными между любым
количеством серверов.
Возможность синхронизации удаления файлов.
Защищенный обмен данными между хостами (SSL).
18. Непрерывность сессий между веб-
серверами
Пользовательская сессия
должна быть
"прозрачной" для всех
серверов веб-кластера.
После авторизации на одном из серверов пользователь должен считаться
авторизованных и для всех других серверов.
И наоборот - окончание сессии на любом сервере должно означать ее окончание
на всех серверах сразу.
19. «1С-Битрикс: Веб-кластер» - это комбинация
технологий:
• Вертикальный шардинг (вынесение модулей на
отдельные серверы MySQL)
• Репликация MySQL и балансирование нагрузки между
серверами
• Распределенный кеш данных (memcached)
• Непрерывность сессий между веб-серверами (хранение
сессий в базе данных)
• Кластеризация веб-сервера:
– Синхронизация файлов
– Балансирование нагрузки между серверами
24. Высокие требования к сети, связность
серверов друг с другом
Веб-сервер
«1С-Битрикс: Веб-кластер»
SQL-балансировщик
1С-Битрикс
База данных MySQL База данных MySQL База данных MySQL База данных MySQL
MASTER SLAVE 1 SLAVE … SLAVE N
25. Ручные операции для восстановления
master’а MySQL
Балансировщик (клиентские запросы
по HTTP)
Веб-сервер 1 Веб-сервер 2
MySQL MySQL
memcached 1 memcached 1
master slave
26.
27. Аварии на уровне целого датацентра
Балансировщик (клиентские запросы
по HTTP)
Веб-сервер 1 Веб-сервер 2
MySQL MySQL
memcached 1 memcached 1
master slave
28. Географический веб-кластер
Асинхронная master-master репликация
«Веб-кластер», для обеспечения работы географически «Веб-кластер»,
ДЦ в России распределенных веб-кластеров. ДЦ в США
Потеря связи между ДЦ может
Веб-нода составлять часы. Веб-нода
Веб-нода Веб-нода
Веб-нода Веб-нода
Кэш Кэш
Кэш Кэш
Кэш Кэш
«Веб-кластер»,
БД ДЦ в Германии БД
БД БД
БД БД
Веб-нода
Веб-нода
Веб-нода
Кэш
Кэш
Кэш
БД
БД
БД
29. Схема многорегионального
сервиса
HTTP/HTTPS HTTP/HTTPS HTTP/HTTPS
*.com *.com *.ru
*.ru
балансировщик балансировщик
Облачное
… …
cache cache cache хранилище cache cache cache
Web 1 Web 2 Web N Web 1 Web 2 Web N
MySQL MySQL
master master
master-master
репликация
MySQL MySQL
slave slave
management,
monitoring
30. Любой новый или работающий проект на
«1С-Битрикс: Управление сайтом» может
быть представлен как веб-кластер
взаимозаменяемых серверов.
При увеличении посещаемости
можно быстро добавить в кластер
новые сервера.
В случае выхода из строя одного из
серверов кластера система
продолжает беспрерывно
обслуживать Клиентов.
Балансирование нагрузки, трафика,
данных между несколькими
серверами.
Система позволяет снимать
резервные копии со специально
выделенных узлов кластера, не
влияя на работу сайта.
31. Географический веб-кластер
повышает отказоустойчивость
проекта и обеспечивает
независимость от дата-центра.
В различных дата-центрах
объединяются несколько групп
веб-кластеров, находящихся в
разных городах или странах.
В случае отказа одного дата-
центра, в работу мгновенно
включается другой, без
необходимости
восстановления «бэкапа».