3. Немножко про Service Discovery
● В понимании DevOps это общий инфраструктурный
паттерн
● Направлен на обеспечении целостности связей
между приложениями и сервисами
● Создает единую точку доступа к сервисам
4. Что такое кластер и зачем он нам нужен?
Кластер — группа компьютеров, объединённых высокоскоростными
каналами связи, представляющая с точки зрения пользователя единый
аппаратный ресурс.
Кластер - слабо связанная совокупность нескольких вычислительных
систем, работающих совместно для выполнения общих приложений, и
представляющихся пользователю единой системой.
7. Программная часть
● Обеспечивает связь всех узлов в кластере
● Отслеживает состояние узла
● Нотифицирует о проблемах с узлом
● Используется как сервис для управления кластером и узлами
8. Yandex Cocaine, OpenStack, Apache CloudStack
● PaaS, IaaS, SaaS ...
● Требует изменения существующей инфраструктуры
● Иногда требует серьезной доработки
● Может отсутствовать hosted-решение как класс
● OpenSource(не все)
9. Corosync
● Фреймворк для построения кластера
● Предоставляет C API
● Сложен в имплементации
● Сложен в настройке
● Недостаточно документирован
● OpenSource
10. Pacemaker
● Готовое решение
● Хорошо документирован
● Использует Сorosync в качестве основы
● OpenSource
● Сложен в настройке
11. Hashicorp Serf
● Готовое решение
● Прост в настройке
● Хорошо документирован
● Поддерживает множество языков
● OpenSource
13. Архитектура
● Handler - скрипт который обслуживает определенные события или
запросы к кластеру
● Event - событие внутри кластера, не возвращает никакого ответа (fire and
forget)
● Query - запрос у кластеру, требующий ответа, имеет ограничение на
размер и время
● Все handler-ы написаны на bash
15. Пример обработки event
Serf daemonSelf-update event Call handler
Basic
handler
Self-update
event
handler
Github
handler repo
16. Как все это поможет QA?
● Единая сущность для доступа ко всем ресурсам
● Единая точка доступа к управлению приложениями
● Единая точка доступа по мониторингу окружения
● Единая точка доступа ко всему
17. Пример:
Это Петя, он QA и у него есть огромное интеграционное
тестовое окружение.
Пете пишут что сейчав в окружении пойдут очень важные и
сложные тесты перед релизом.
И где-то в окружении есть приложение которое - хорошо бы
обновить.
Где оно? На какой машине? Как обновить?
Но Петя умный, у него есть serf!
serf query where <appname>
serf event update <appname>@<host>
serf query status <appname>@<host>
18.
19. Это только начало!
● Управление деплоем приложений из любого места кластера
● Старт/стоп приложений на любой машине с любой машины
● Мониторинг ресурсов кластера
● Любой действие в кластере для которого вы напишите
handler/event/query