Высокая доступность приложений в гибридном облаке на...
TRANSCRIPT
Высокая доступность в гибридном облаке на базе Azure Traffic Manager
Дмитрий Лазаренко, JelasticДиректор по развитию бизнеса в России и СНГ
Проблема
Единая точка отказа
Высокая доступность и отказоустойчивость
App
DB
Высокая доступность и отказоустойчивость
App
DB
App
Load balancer
Высокая доступность и отказоустойчивость
App
DB
App
Load balancer Load balancer
DB
Высокая доступность и отказоустойчивость
App
DB
App
Load balancer Load balancer
DBReplica
Гибридная облачная платформа JelasticPaaS для Java, .NET, Ruby, PHP, Node.JS, Python и Docker приложений
• Автоматизированная платформа, позволяющая запускать и масштабировать любое приложение на Java, .NET, PHP, Python, Ruby и Node.JS
• SQL и NoSQL СУБД, серверы приложений, балансировщики нагрузки, очереди сообщений
• Как Azure, только для Java + можно установить в свой ЦОД
Платформа PaaS как коробочный продукт
Гибридная облачная платформа JelasticPaaS для Java, .NET, Ruby, PHP, Node.JS, Python и Docker приложений
• Основные сценарии: среды разработки и тестирования, высокодоступные автомасштабируемые облачные среды для приложений
• Клиенты 50+ Хостинг-провайдеров (MyCloud.by) Корпоративные пользователи (ISV, системные
интеграторы)• Конкуренты – OpenShift, CloudFoundry, Heroku• Можно развернуть свой экземпляр PaaS для Java в
Azure с помощью Azure Marketplace
Платформа PaaS как коробочный продукт
Визуальный конструктор облачных окружений
Физические серверы и контейнеры1 ЦОД
Типичная конфигурация – MS Azure в миниатюре
• 10-50 физических серверов• 32 – 256 GB RAM каждый
• На каждом сервере• 250-2000 контейнеров
• Итого в кластере• 8000 – 64000 контейнеров• 160-1400 приложений конечных
пользователей
Распределение контейнеров для HA
Affinity & Anti-Affinity• Для высокой
доступности• Для защиты от
неравномерной загрузки серверов
Пользовательские домены
DNS-сервер BindProxy-server NGINX
Глобальная точка входа
Высокая доступность для точки входа
Высокая доступность для точки входа
Высокая доступность для точки входа
17 ЦОД в8 странах
11 ЦОД, 23 зон доступности в 8 странах
3 ЦОД, 10 зон доступности в3 странах
25 ЦОД в 11 странах
36 ЦОД в 25 странах
Межцодовая оркестрация в Jelastic
Private Cloud
Гибридное облако
Мульти-облако
Как обеспечить высокую доступность в сценарии гибридного или мульти-облака?
• Сервис должен работать одновременно в 2+ ЦОД
• При выходе из строя одного из экземпляров сервиса, его работу автоматом должны подхватить другие
• Решение должно поддерживать любые ЦОД и облака
• Для клиента такое переключение должно быть прозрачным
Проблемы• Внутренние подсети в каждом облаке
разные• 172.160.200.* vs. 172.155.100.*
• Базовое доменное имя каждого облака разное• *.cloudA.jelastic.com vs.
*.cloudB.jelastic.com• Внешние IP-адреса каждого облака
разные
• Anycast IP• Global IP/Failover IP • Global/Anycast DNS своими силами• Azure Traffic Manager
HA между ЦОД - варианты
Unicast адресация«Позвонить маме»
Anycast адресация«Позвонить 911»
Anycast IP – маршрут запросов
• IP-адрес живет одновременно в нескольких ЦОД
• Быстрота. Трафик идет до ближайшего сервера (не гео)
• В случае DDoS-атаки траффик равномерно распределяется между всеми точками вещания
• Если сервер умирает – маршрут автоматом перестраивается до ближайшего рабочего сервера
• Абсолютно прозрачно для клиента
Преимущества Anycast
• Поддерживается малым количеством ЦОД• Не поддерживается глобальными облачными
провайдерами: Azure, AWS, SoftLayer• Очень дорого: $2700 - $8500 в месяц за
небольшой сервер (Host Virtual)
Недостатки Anycast
• IP-адрес активен только на одном сервере в один момент времени
• Если мастер-сервер умирает, то можно выбрать новый мастер-сервер
• Новый мастер-сервер может быть как в текущем, так и в другом ЦОД
Failover IP
• 2 сервера в разных географических регионах• Каждый сервер владеет своим failover IP• В случае падения одного из серверов, его IP
автоматом переназначается на его backup-сервер
• В итоге backup-сервер владеет сразу 2 failover IP, весь трафик идет на backup-server
• Пока не оживет первый сервер
Failover IP – пример работы на IBM SoftLayer/OVH
• Поддерживается не всеми глобальными облачными провайдерами
• Сложно реализовать между разными ЦОД (частный и публичный)
• В AWS failover IP есть только в рамках текущего региона
• Задержки до 5 минут при первом падении сервера
Недостатки Failover IP
• Распределили точку входа по нескольким ЦОД (nginx+bind)
• Добавили глобальное DNS-имя, независимое от ЦОД• *.globalcloud.jelastic.com
• Каждое приложение теперь доступно по 2м DNS-именам• Глобальному• Локальному, связанному с его текущим ЦОД
HA на базе DNS своими руками
HA на базе DNS своими руками
• Сложность масштабирования вверх• Сложность гео-маршрутизации• Высокие накладные расходы
HA на базе DNS своими руками - недостатки
Azure Traffic Manager
• Запрос к DNS• Определение
Endpoint• Отправка
трафика на один и тот же endpoint, пока он жив
Azure Traffic Manager – Round robin балансировка
Azure Traffic Manager - Failover routing
Geo-routing
Azure Traffic Manager - Performance/Geo routing
Azure Traffic Manager – Встроенный мониторинг
Azure Traffic Manager – Многоуровневая иерархия
Azure Traffic Manager – Многоуровневая иерархия
Гео-балансировка
ЦОД ЦОД ЦОД
Сервис Сервис
Azure Traffic Manager - недостатки
• Кэш DNS обновляется редко, часть запросов может идти на упавший endpoint
• Мониторинг производится только GET-запросом• Веса в Round-Robin статичны• Нельзя использовать собственные метрики
мониторинга
Azure Traffic Manager в Jelastic
Живая миграция из частного ЦОД в Azure
Живая миграция из AWS в Azure
Azure Traffic Manager - преимущества
• Поддержка гео-балансировки• Поддержка плавных обновлений сервиса по
цепочке• Встроенный мониторинг и failover• Многоуровневая DNS-иерархия• Поддержка как веб-сервисов Azure, так и
произвольных веб-сервисов в публичном или частном облаке
За рамками задачи остаются…
• Автоматическое горизонтальное масштабирование
• Репликация данных серверов приложений• Распределенные блокировки• Репликация и шардинг данных в СУБД• Репликация и высокая доступность Storage• Автоматическое восстановление данных
Storage после аппаратных сбоев
Многое решается фреймворками для микросервисов
Consul.io
Выводы
• Anycast IP – дорого и привязано к конкретным ЦОД
• Global IP/Failover IP – доступно у некоторых крупных игроков
• Global DNS – можно реализовать где угодно, но трудно обслуживать и масштабировать
• Azure Traffic Manager – простой и удобный способ настроить гео-балансировку в гетерогенной среде