PPTX, 3 МБ

advertisement
Как жить в облаке без админов?
Александр Демидов
руководитель направления арендных решений
«1С-Битрикс»
- Новый сервер?
Нестандартной
конфигурации? 5-го
января? … Нет, не
слышали.
Облако!
Быстро!
Надежно!
Дешево!
Неправда…
Надежность «облака»
Само по себе «облако» не
надежнее традиционного
хостинга и собственного
оборудования. «Облако»
дает возможность
организовать надежную
инфраструктуру.
Сама инфраструктура не
построится…
Админы пока еще не нужны…
Нужен
аналитик…
Админы пока еще не нужны…
…и архитектор.
Правильное облако
Несколько территориально
распределенных ДЦ (с
возможностью их выбора)
Гибкое управление дисками
Облачные базы данных, кэш,
NoSQL, балансировщики, DNS,
мониторинг, сервисы
очередей, файловые
хранилища, CDN и т.д.
API и готовые SDK для
управления всеми сервисами
Готовность приложения к
масштабированию
Резервируй это!
Static
HTTPS
*.com/*.de
Static
HTTPS
*.ru
js, css
Elastic Load Balancing
Web 1
Web 2
local
cache
(APC)
local
cache
(APC)
CloudWatch
+
AutoScaling
…
mysqld
control cache: memcached
js, css
Elastic Load Balancing
Web 2
local
cache
(APC)
local
cache
(APC)
local
cache
(APC)
S3
mysqld
master-master replication
mysqld
master-master replication
control cache: memcached
mysqld
mysqld
mysqld
control cache: memcached
CloudWatch
+
AutoScaling
…
local
cache
(APC)
mysqld
mysqld
mysqld
mysqld
mysqld
control cache: memcached
management,
monitoring,
backup
Web N
mysqld
mysqld
mysqld
control cache: memcached
CDN (CDNvideo)
Web 1
master-master replication
mysqld
Dynamic
HTTPS
*.ru
Web N
mysqld
mysqld
images (clients)
CDN (Amazon CloudFront)
images (clients)
Dynamic
HTTPS
*.com/*.de
mysqld
control cache: memcached
Web – автоматическое
масштабирование
Используем связку Elastic Load Balancing + CloudWatch +
Auto Scaling
Очень высокая посещаемость
Elastic Load Balancing
Web 1
Web 2
…
CloudWatch + Auto Scaling
Web N
Web – автоматическое
масштабирование
Используем связку Elastic Load Balancing + CloudWatch +
Auto Scaling
Автоматически стартуют новые машины, если средняя нагрузка
CPU превышает X%
Автоматически останавливаются и выводятся из эксплуатации,
если средняя нагрузка менее Y%
MySQL? Percona Server!
Один из выводов в процессе эксплуатации: используем
один из fork’ов MySQL – Percona Server (обратно совместим
с MySQL)
Быстрое восстановление кэша при рестарте базы
Оптимизирован для Multitenancy приложений с тысячами таблиц
Оптимизирован для сбора статистики по отдельным пользователям
Подробная статистика по медленным запросам
XtraDB и XtraBackup
BLOB, TEXT в таблицах MEMORY (HEAP)
Используем master-master
репликацию в MySQL
Особенности настройки MySQL:
auto_increment_increment
auto_increment_offset
Базы в разных датацентрах синхронны, при этом независимы
друг от друга: потеря связности между датацентрами может
составлять часы, данные синхронизируются после
восстановления.
Группы пользователей работают в одном датацентре за счет
управления балансировщиком.
Какие-то данные можно не реплицировать:
SET sql_log_bin = 0 … или …
replicate-wild-ignore-table = %.b_sec_session%
Сценарий 1: авария на одной или
нескольких веб-нодах
Elastic
Load Balancing
Web 1
Web 2
Датацентр 1 в
регионе US East
(Virginia)
…
Web N
MySQL
master
S3
master-master
репликация
Web 1
MySQL
master
Web 2
…
Web N
Датацентр 2 в
регионе US East
(Virginia)
Мониторинг и
масштабирование –
CloudWatch +
AutoScaling
Мониторинг и
масштабирование –
CloudWatch +
AutoScaling
management,
monitoring,
MySQL backup
Сценарий 1: авария на одной или
нескольких веб-нодах
Load Balancing определяет вышедшие из строя машины
Исходя из заданных параметров группы балансировки,
автоматически восстанавливается нужное количество
машин
Сценарий 1: авария на одной или
нескольких веб-нодах
Elastic
Load Balancing
Web 1
Web 2
Датацентр 1 в
регионе US East
(Virginia)
…
Web N
MySQL
master
S3
master-master
репликация
Web 1
MySQL
master
Web 2
…
Web N
Датацентр 2 в
регионе US East
(Virginia)
Мониторинг и
масштабирование –
CloudWatch +
AutoScaling
Мониторинг и
масштабирование –
CloudWatch +
AutoScaling
management,
monitoring,
MySQL backup
Сценарий 2: потеря связности
между датацентрами
Elastic
Load Balancing
Web 1
Web 2
Датацентр 1 в
регионе US East
(Virginia)
…
Elastic
Load Balancing
Web N
MySQL
master
S3
master-master
репликация
Elastic
Load Balancing
Web 1
MySQL
master
Web 2
…
Web N
Датацентр 2 в
регионе US East
(Virginia)
Мониторинг и
масштабирование –
CloudWatch +
AutoScaling
Мониторинг и
масштабирование –
CloudWatch +
AutoScaling
management,
monitoring,
MySQL backup
Сценарий 2: потеря связности
между датацентрами
Каждый датацентр продолжает обслуживать свой сегмент
клиентов
Данные синхронизируются после восстановления связности
Сценарий 3: плановые работы с
базой или авария всего ДЦ
Elastic
Load Balancing
Web 1
Web 2
Датацентр 1 в
регионе US East
(Virginia)
…
Web N
MySQL
master
S3
master-master
репликация
Web 1
MySQL
master
Web 2
…
Web N
Датацентр 2 в
регионе US East
(Virginia)
Мониторинг и
масштабирование –
CloudWatch +
AutoScaling
Мониторинг и
масштабирование –
CloudWatch +
AutoScaling
management,
monitoring,
MySQL backup
Не бывает
«почти круглосуточно»
Технические работы должны
проходить незаметно для
клиентов:
Сервисные работы
Замена оборудования
Обновления системного
ПО
Обновления приложений
Сценарий 3: авария или
плановые работы с базой
Весь траффик переключается в один работающий датацентр
CloudWatch определяет возросшую нагрузку на машины и
добавляет их в соответствие с правилами для AutoScaling
Приостанавливается мастер-мастер репликация
Проводятся все необходимые работы с базой, на которую не
идет нагрузка
База включается в работу, восстанавливается репликация
Траффик распределяется на оба датацентра
Гасятся лишние машины, если средняя нагрузка стала ниже
порогового значения
Real Time мониторинг – как
узнавать о проблемах?
Можно – так…
Real Time мониторинг – как
узнавать о проблемах?
Или – так…
Организация системы
мониторинга
Лучше – стандартные решения (Nagios, Zabbix и т.п.), а не
самописные.
Дежурная смена и/или мгновенные уведомления.
Мониторить – всё.
Но – аккуратно. Тысячи уведомлений будут бесполезны.
Мониторить систему мониторинга. В идеальном мире –
распределенная система мониторинга.
Автоматизация типовых реакций.
Помимо стандартных - пишите свои тесты
Пример для MySQL
Автоматизация типовых
реакций
Рост / падение LA – автоматическое масштабирование
вверх / вниз
Автоматический рестарт «сбойных» сервисов
Автоматическое «удаление» проблемных машин
Автоматическое восстановление репликации
Автоматическое переключение траффика в случае аварии
на уровне целого ДЦ
event handler
# LA on the server
define service{
use
host_name
service_description
check_command
event_handler
}
local-service
ec2-54-227-28-75.compute-1.amazonaws.com
Current Load
check_nrpe_1arg!check_load!
restart_phpfpms
define command{
command_name
restart_phpfpms
command_line
/usr/lib64/nagios/plugins/check_nrpe -H
$HOSTADDRESS$ -c restart_phpfpm
}
Мониторинг нетипичных
характеристик
Наличие бэкапов
Срок делегирования доменов
Срок действия SSL сертификатов
Баланс у провайдера смс-уведомлений
Мониторинг веб-приложения
Лог работы скрипта (>) – обновился за N часов
Лог ошибок работы скрипта (2>) – должен быть пуст
Уведомления – как у нас
Cкрипт, опрашивающий страницу
«Problems»
Шлем «дайджест» проблем, а не по одному
сообщению на каждое событие
Несколько уровней критичности событий
Разные списки адресатов на разные
события
Повтор (через 15 минут, через 2 часа), чтобы
не «потерять» уведомление
ОК – если все стало хорошо
Аналитика
«Живая» система – много
небольших запросов
mysql> SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+----------------+-------+----------------+
| time
| count | total
|
+----------------+-------+----------------+
|
0.000001 |
0 |
0.000000 |
|
0.000010 | 2011 |
0.007438 |
|
0.000100 | 12706 |
0.513395 |
|
0.001000 | 4624 |
1.636106 |
|
0.010000 | 2994 |
12.395174 |
|
0.100000 |
200 |
6.225339 |
|
1.000000 |
33 |
5.480764 |
|
10.000000 |
1 |
2.374067 |
|
100.000000 |
0 |
0.000000 |
|
1000.000000 |
0 |
0.000000 |
|
10000.000000 |
0 |
0.000000 |
| 100000.000000 |
0 |
0.000000 |
| 1000000.000000 |
0 |
0.000000 |
| TOO LONG
|
0 | TOO LONG
|
+----------------+-------+----------------+
14 rows in set (0.00 sec)
Аналитика - MySQL
Одиночные медленные запросы отлавливаются просто.
Сложнее мониторить общее состояние системы с
большим количеством относительно быстрых запросов.
Поиск узких мест
Pinba, XDebug, XHProf
Приложение всегда работает
в условиях ограниченных ресурсов
Постоянный feedback разработчикам – в
автоматическом и полуавтоматическом режиме
Резюме
Систему в облаке можно поддерживать, обходясь
минимумом человеческих ресурсов
•
Выбирайте правильное облако – с максимально широким
набором сервисов, API и т.п.
•
Ваше приложение должно быть готово к горизонтальному
масштабированию
•
•
•
•
Резервируйте все
Обязательно используйте системы мониторинга
Автоматизируйте все типовые действия
Держите приложение в условиях ограниченных ресурсов и
всегда давайте обратную связь разработчикам.
До 2012 года…
Два основных продукта:
Единственное, что
требовало того или
иного обслуживания –
наш собственный сайт.
В настоящее время…
файлы
бэкап
сканер
безопасности
CRM
CDN
видеозвонки
push
??
Облачные сервисы
Битрикс24 – SaaS «Корпоративный портал»
Более 7000 наиболее активных порталов
Ускорение сайта – интеграция с CDN
Около 9000 сайтов
Облачный бэкап
Более 7500 сайтов
Анонс новых сервисов осенью 2013
Примерно 2 стойки
42U – если без
виртуализации
Два человека – у
которых админство
не является
основной
деятельностью
Спасибо за внимание!
Вопросы?
Александр Демидов
demidov@1c-bitrix.ru
+7-926-521-3700
@demidov
http://www.1c-bitrix.ru
Download