Upload
sqalab
View
9.678
Download
1
Embed Size (px)
Citation preview
Как Cluster Membership Software может помочь QA?
Алексей АлексеевLuxoft
Немножко про DevOps
Немножко про Service Discovery
● В понимании DevOps это общий инфраструктурный паттерн
● Направлен на обеспечении целостности связей между приложениями и сервисами
● Создает единую точку доступа к сервисам
Что такое кластер и зачем он нам нужен?Кластер — группа компьютеров, объединённых высокоскоростными каналами связи, представляющая с точки зрения пользователя единый аппаратный ресурс.
Кластер - слабо связанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих приложений, и представляющихся пользователю единой системой.
Строительные материалы кластера● Хосты (машины, ноды, боксы)● Сеть● Специализированное ПО● Скрипты
Программная часть● Обеспечивает связь всех узлов в кластере● Отслеживает состояние узла● Нотифицирует о проблемах с узлом● Используется как сервис для управления кластером и узлами
Yandex Cocaine, OpenStack, Apache CloudStack● PaaS, IaaS, SaaS ... ● Требует изменения существующей инфраструктуры● Иногда требует серьезной доработки ● Может отсутствовать hosted-решение как класс● OpenSource(не все)
Corosync● Фреймворк для построения кластера● Предоставляет C API● Сложен в имплементации● Сложен в настройке● Недостаточно документирован● OpenSource
Pacemaker● Готовое решение● Хорошо документирован● Использует Сorosync в качестве основы● OpenSource● Сложен в настройке
Hashicorp Serf● Готовое решение● Прост в настройке● Хорошо документирован● Поддерживает множество языков● OpenSource
Архитектура
Serf daemon
Serf daemon
Serf daemon
Serf protocol(gossip)
handlers handlers
handlers
Архитектура● Handler - скрипт который обслуживает определенные события или
запросы к кластеру● Event - событие внутри кластера, не возвращает никакого ответа (fire and
forget)● Query - запрос у кластеру, требующий ответа, имеет ограничение на
размер и время● Все handler-ы написаны на bash
Архитектура
Serf daemonEvent / query Call handlerBasic handler
query handler
event handler
Пример обработки event
Serf daemonSelf-update event Call handlerBasic handler
Self-update event handler
Github handler repo
Как все это поможет QA?● Единая сущность для доступа ко всем ресурсам● Единая точка доступа к управлению приложениями● Единая точка доступа по мониторингу окружения● Единая точка доступа ко всему
Пример:
Это Петя, он QA и у него есть огромное интеграционное тестовое окружение.Пете пишут что сейчав в окружении пойдут очень важные и сложные тесты перед релизом.И где-то в окружении есть приложение которое - хорошо бы обновить.Где оно? На какой машине? Как обновить?
Но Петя умный, у него есть serf!
serf query where <appname>serf event update <appname>@<host>serf query status <appname>@<host>
Это только начало!● Управление деплоем приложений из любого места кластера● Старт/стоп приложений на любой машине с любой машины● Мониторинг ресурсов кластера● Любой действие в кластере для которого вы напишите
handler/event/query
Удаленная отладка скриптов
Удаленная отладка скриптов запущенных из скриптов
Тотальная трассировка всех скриптов:
Тотальное логгирование:
А как сделать так чтоб все демоны на всех машинах были одной версии?
Host2 Host3
Host1
handlers
NFS
Serf daemon
Контакты
http://linkedin.com/in/alexeyalexeev
voodoo1441
https://google.com/+АлексейАлексеев144