Как Cluster Membership Software может помочь QA

Preview:

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

Recommended