1c bitrix-cluster-et

32
Организация отказоустойчивого масштабируемого web- кластера на базе Amazon Web Services Александр Демидов «1С-Битрикс»

description

 

Transcript of 1c bitrix-cluster-et

Page 1: 1c bitrix-cluster-et

Организация отказоустойчивого масштабируемого web-кластера на базе Amazon Web Services

Александр Демидов«1С-Битрикс»

Page 2: 1c bitrix-cluster-et

Сколько стоит 1 час?

• Крупный интернет-магазин с годовым оборотом 1.5 млрд. руб.

• 210 рабочих дней в году по 10 рабочих часов.

• Час простоя крупного интернет-проекта может обойтись владельцам в 0,3 - 1 миллион рублей упущенной выручки.

Page 3: 1c bitrix-cluster-et

Основные задачи, которые решает веб-кластер:

Обеспечение высокой доступности сервиса (так называемые HA - High Availability или Failover кластеры)

Масштабирование веб-проекта в условиях возрастающей нагрузки (HP - High Performance кластеры)

Балансирование нагрузки, трафика, данных между несколькими серверами

Создание целостной резервной копии данных для MySQL

Page 4: 1c bitrix-cluster-et

Веб-приложение

Кэш данных

База данных

Традиционная конфигурация

Page 5: 1c bitrix-cluster-et

Варианты масштабирования:

Разделение на два сервера: веб-сервер + база данных.

Увеличение мощности оборудования (чем мощнее – тем дороже; рост стоимости не пропорционален).

Выделение кеша на один внешний сервер через memcached.

Переход на Oracle (минимальная лицензия +5000$ за процессор).

Создание Oracle RAC (Real Application Cluster). Проект – около 150 000$ (оборудование + лицензия + «общая полка»). Очень мало специалистов.

Для большинства клиентов производительности достаточно, но не решены проблемы отказоустойчивости, резервирования, сетевой доступности.

Page 6: 1c bitrix-cluster-et

Вертикальное и горизонтальное масштабирование

Page 7: 1c bitrix-cluster-et

База данных MySQL

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

База данных MySQL 2

Вертикальный шардинг Горизонтальный шардинг

База данных MySQL

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

База данных MySQL 2

Аккаунты a-m

Аккаунты n-z

Page 8: 1c bitrix-cluster-et

Веб-сервер

База данных MySQLMASTER

Веб-приложение

База данных MySQLSLAVE 1

База данных MySQLSLAVE N

База данных MySQLSLAVE …

SQL-балансировщик

Масштабирование при росте нагрузки MySQL

Page 9: 1c bitrix-cluster-et

Высокая эффективность - за счет централизованного использования кэша веб-приложением

Надежность - за счет устойчивости подсистемы кешировния к выходу из строя отдельных компонентов

Неограниченная масштабируемость - за счет добавления новых memcached-серверов.

memcached1

memcached2

memcached3

Веб-кластер приложенийВеб-сервер Веб-сервер Веб-сервер

Распределенный кеш данных (memcached)

Page 10: 1c bitrix-cluster-et

Веб-сервер

База данных MySQL

Нода 1

Высокая посещаемость

Веб-сервер

Нода 2

Балансировщик нагрузки

1) Нагрузка равномерно распределяется между нодами веб-кластера

2) Сервера приложений не перегружены и работают в устойчивом штатном режиме

Авто-синхронизация

Задача: масштабирование при росте нагрузки

Page 11: 1c bitrix-cluster-et

База данных MySQL

Нода 1

Очень высокая посещаемость

Балансировщик нагрузки

Нода 2 Нода N

Задача: масштабирование при росте нагрузки

Page 12: 1c bitrix-cluster-et

Варианты балансирования нагрузки между различными нодами веб-кластера:• DNS – несколько записей “IN A” для одного имени, распределение

round robin. Самый дешевый и простой вариант, но имеет ряд минусов:• нет четкого критерия выбора IP из списка клиентом;• нет механизмов определения доступности узлов;• длительное время кэширования ответов DNS.

• Программные средства (например, nginx).

• Аппаратные решения (например, Cisco CSS - Content Services Switch).

• Специализированные сервисы (например, Amazon Elastic Load Balancing).

Распределение нагрузки между веб-серверами

Page 13: 1c bitrix-cluster-et

Веб-сервер 1

/var/www

Веб-сервер 2

?

Задача синхронизации файлов

Page 14: 1c bitrix-cluster-et

Два типа:

1. Синхронный:• Общая «дисковая полка» (дорого, не резервирует данные)• Сетевые средства – NFS (очень медленно)• OCFS2• DRBD

2. Асинхронный (синхронизация локальных дисков)• rsync• csync2

Синхронизация дисковых систем

Page 15: 1c bitrix-cluster-et

NFS, SMB/CIFS, …. Просто, но медленно.

Веб-сервер 1 Веб-сервер 2

NAS (Network Attached Storage)

/var/www

OCFS2, GFS2, …. Быстро, но

сложно и дорого.

SAN (Storage Area Network), «дисковая полка»

/var/www

Тип 1: общее хранилище данных

Page 16: 1c bitrix-cluster-et

Нода 2

Csync2

Нода 1

Csync2

/var/www /var/www

Нода 3

Csync2

/var/www

Тип 2: синхронизация локальных дисков

Page 17: 1c bitrix-cluster-et

Почему мы выбрали csync2?

Быстрый доступ к файлам приложения за счет использования локальных хранилищ.

Высокая скорость работы.

Низкое потребление ресурсов (CPU, дисковые операции). Два этих фактора позволяют запускать процесс синхронизации максимально часто, поэтому данные на серверах становятся идентичными практически в "реальном времени".

Простота настройки для обмена данными между любым количеством серверов.

Возможность синхронизации удаления файлов.

Защищенный обмен данными между хостами (SSL).

Page 18: 1c bitrix-cluster-et

Непрерывность сессий между веб-серверами

Пользовательская сессия должна быть "прозрачной" для всех серверов веб-кластера.

После авторизации на одном из серверов пользователь должен считаться авторизованных и для всех других серверов.

И наоборот - окончание сессии на любом сервере должно означать ее окончание на всех серверах сразу.

Page 19: 1c bitrix-cluster-et

«1С-Битрикс: Веб-кластер» - это комбинация технологий:

Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL)

Репликация MySQL и балансирование нагрузки между серверами

Распределенный кеш данных (memcached)

Непрерывность сессий между веб-серверами (хранение сессий в базе данных)

Кластеризация веб-сервера:

Синхронизация файловБалансирование нагрузки между серверами

Page 20: 1c bitrix-cluster-et

Тестовый веб-кластер – в «облаке» Amazon

Page 21: 1c bitrix-cluster-et

Балансировщик (клиентские запросы по HTTP)

Веб-сервер 1

memcached 1

Веб-сервер 2

memcached 1MySQLmaster

MySQLslave

Page 22: 1c bitrix-cluster-et

«Узкие» места

Page 23: 1c bitrix-cluster-et

Веб-сервер 1

/var/www

Веб-сервер 2

?

Задача синхронизации файлов

Page 24: 1c bitrix-cluster-et

Веб-сервер

База данных MySQLMASTER

«1С-Битрикс: Веб-кластер»

База данных MySQLSLAVE 1

База данных MySQLSLAVE N

База данных MySQLSLAVE …

SQL-балансировщик1С-Битрикс

Высокие требования к сети, связность серверов друг с другом

Page 25: 1c bitrix-cluster-et

Балансировщик (клиентские запросы по HTTP)

Веб-сервер 1

memcached 1

Веб-сервер 2

memcached 1MySQLmaster

MySQLslave

Ручные операции для восстановления master’а MySQL

Page 26: 1c bitrix-cluster-et
Page 27: 1c bitrix-cluster-et

Балансировщик (клиентские запросы по HTTP)

Веб-сервер 1

memcached 1

Веб-сервер 2

memcached 1MySQLmaster

MySQLslave

Аварии на уровне целого датацентра

Page 28: 1c bitrix-cluster-et

«Веб-кластер», ДЦ в России

БД

Веб-нода

«Веб-кластер», ДЦ в Германии

«Веб-кластер», ДЦ в США

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров.

Потеря связи между ДЦ может составлять часы.

Географический веб-кластер

Page 29: 1c bitrix-cluster-et

балансировщик

MySQLmaster

Web 1

HTTP/HTTPS*.ru

балансировщик

HTTP/HTTPS*.com

Web 2

Web N…

MySQLslave

cache cache cache

MySQLmaster

Web 1

Web 2

Web N…

MySQLslave

cache cache cache

master-master репликация

Схема многорегионального сервиса

Облачное хранилище

HTTP/HTTPS*.com*.ru

management, monitoring

Page 30: 1c bitrix-cluster-et

Любой новый или работающий проект на «1С-Битрикс: Управление сайтом» может

быть представлен как веб-кластер взаимозаменяемых серверов.

При увеличении посещаемости можно быстро добавить в кластер

новые сервера.

В случае выхода из строя одного из серверов кластера система продолжает беспрерывно

обслуживать Клиентов.

Балансирование нагрузки, трафика, данных между несколькими

серверами.

Система позволяет снимать резервные копии со специально

выделенных узлов кластера, не влияя на работу сайта.

Page 31: 1c bitrix-cluster-et

Географический веб-кластер повышает отказоустойчивость проекта и обеспечивает независимость от дата-центра.

В различных дата-центрах объединяются несколько групп веб-кластеров, находящихся в разных городах или странах.

В случае отказа одного дата-центра, в работу мгновенно включается другой, без необходимости восстановления «бэкапа».

Page 32: 1c bitrix-cluster-et

Спасибо за внимание!Вопросы?

Александр Демидов

[email protected]

+7 (915) 201-1500

@demidov

http://www.1c-bitrix.ru