Как решить проблему деплоя
     тысяч серверов?
ClusterIt




       pssh
Виды деплоя

●
    Пофайловая раскладка
●
    checkout из репозитория (svn,cvs,etc..) на сервер
●
    Символическая ссылка на stable
●
    Использование пакетного менеджера
Проблемы коробочных решений

●
    Не справляются с нагрузкой
●
    Излишне умные
●
    Требуюь больше времени при допиливании
●
    Усложняется поддержка обновлений
Пишем сами
             1) Интерфейс должен быть выполнен
                в виде API
             2) Исполняющая часть должна быть
                легкой
             3) Сервис не должен принимать
                самостоятельных решений
             4) Формат конфигов должен быть
                предельно простым

             5) Система должна поддерживать
                различные механизмы выполнения
                задач
Принципы работы

●
    Используем пакетный менеджер
●
    Собираем пакет на build-server'е
●
    Используем транзакции
●
    Используем механизм `repackage` для RPM
●
    Впиливаем отдачу версии в сам продукт
●
    Контролируем целостность и актуальность конфигов и пакетов
Requirements

●
    Оператор ставит задачи в очередь на выполнение
●
    Менеджер очереди отдает команды исполняющим демонам
●
    Исполняющий демон выполняет сценарий
●
    Контроль ошибок и ведение журнала выполнения сценария
●
    Обработка событий
Получилось
             1) mntd исполнительный статический
                демон на C

             2) mntqd менеджер очереди


             3) mntw web морда для управления


             4) Протокол взаимодействия - SOAP
SOAP (gSOAP)

●
    Универсальный протокол взаимодействия
●
    SMTP/HTTP/FTP...
●
    Быстрая разработка
●
    Автоматическая генерация WSDL и XML (XSD)
Описание методов (WSDL)

<message name="exec">
       <part name="cmd" type="xsd:string"/>
       <part name="arg" type="xsd:string"/>
</message>

<message name="resp">
       <part name="status" type="xsd:int"/>
       <part name="message" type="xsd:string"/>
       <part name="log" type="xsd:string"/>
</message>
Взаимодействие
                         mntqd             queue manager
                                           policy-server
               SOAP
                                           web interface

some service
                  SOAP

       mntd                                          mntd
                            mntd
                                                            exec


        server1                  server2          server3
Основные методы
●
    exec - выполнить сценарий
●
    status - получить статус сервера
●
    pushfile - положить файл
●
    periodic_status - периодическая задача получения статуса
●
    set_task - поставить задачу (через policy-server)
Список серверов




Очередь задач
Шаблоны




Мастер постановки задач
Пример использования

                   Хранилище почты
●
    10Пб+ данных
●
    2000+ машин
●
    ферма тестовых серверов
●
    ферма beta-серверов
Алгоритм выкладки

●
    Релиз-мастер ставит задачу на сборку пакета
●
    Пакет собирается и уезжает в репозиторий
●
    Отдаем собранный билд на тест
●
    Поехали на beta-сервера
●
    Поехали в бой
Скользящее окно

-------------------------------
        FAIL                      ●
                                      сдвиг выполнения на N серверов
 vvvvv vxx- - -                   ●
                                      архивация выполненных задач
|1|2|3|4|5|6|7|8|9|10|11|
          |_____|                 ●
                                      контроль ошибок
               |______|
-------------------------------
Автоматизация горизонтального масштабирования

●
  выделяется пул IP адресов
●
  в базовом дистрибутиве уже умеется
  предустановленный mntd
●
  сервер ставит задачу на init (шаблон init_server)

●
  после наливки остается только включить сервер в нагрузку.
●
  ввод в строй 100 серверов может занимать не более одного
  часа.
СПАСИБО!
          Сергей Кубасов
Заместитель технического директора
      s.kubasov@corp.mail.ru

More Related Content

PPT
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
PDF
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
PDF
Алексей Фомкин, Практическое применение Web Workers
PPTX
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
PPTX
Первые шаги с RabbitMQ
PPTX
обзор архитектуры и подсистем деплоя и мониторинга
PPTX
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
Алексей Фомкин, Практическое применение Web Workers
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Первые шаги с RabbitMQ
обзор архитектуры и подсистем деплоя и мониторинга
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)

What's hot (20)

PPTX
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
PDF
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
PPTX
Применяем Ansible
PDF
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
PDF
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
PPTX
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
PPTX
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
PDF
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
PDF
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
PDF
Highload 2014. PostgreSQL: ups, DevOps.
PDF
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
PPTX
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
PDF
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
PDF
Профилирование кода на C/C++ в *nix системах
PDF
RootConf 2015
PPTX
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
PDF
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
PPTX
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
PDF
CodeFest 2012. Евтухович И. — Как мы делали Групон
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Применяем Ansible
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Highload 2014. PostgreSQL: ups, DevOps.
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Профилирование кода на C/C++ в *nix системах
RootConf 2015
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
CodeFest 2012. Евтухович И. — Как мы делали Групон
Ad

Similar to Kubasov 1 7_deploy (20)

PPTX
Управление облачной инфраструктурой
PDF
Zherdev icinga 20120423
PPTX
Варианты развертывания проектов на M3
PDF
Эффективное управление ПО под *nix
PDF
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...
PDF
микроСЕРВИСЫ: огонь, вода и медные трубы
PPTX
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
PPT
Сервлеты
PDF
Масштабируемый DevOps
PDF
«​Масштабируемый DevOps​» Александр Колесень
PDF
IT-инфраструктура. FAQ для разработчика
PDF
PPTX
Impress Application Server for node.js (ru)
PPT
Три СПО-решения (мастер-класс)
PPTX
Chef @DevWeb
PDF
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
PDF
Как devops исчерпывает себя и что будет дальше
PPTX
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
PDF
Как разработать вычислительную инфраструктуру для большого кластера
PDF
Масштабирование сервисов с помощью Apache Mesos
Управление облачной инфраструктурой
Zherdev icinga 20120423
Варианты развертывания проектов на M3
Эффективное управление ПО под *nix
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...
микроСЕРВИСЫ: огонь, вода и медные трубы
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Сервлеты
Масштабируемый DevOps
«​Масштабируемый DevOps​» Александр Колесень
IT-инфраструктура. FAQ для разработчика
Impress Application Server for node.js (ru)
Три СПО-решения (мастер-класс)
Chef @DevWeb
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя и что будет дальше
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
Как разработать вычислительную инфраструктуру для большого кластера
Масштабирование сервисов с помощью Apache Mesos
Ad

More from kuchinskaya (20)

PDF
Kharkov
PDF
Balashov
PDF
Zamyakin
PDF
Panfilov
PDF
Platov
PDF
Rabovoluk
PDF
Smirnov dependency-injection-techforum(1)
PDF
Smirnov reverse-engineering-techforum
PDF
Zacepin
PDF
Zagursky
PDF
Haritonov
PDF
Chudov
PDF
Bubnov
PDF
A.pleshkov
PDF
Zenovich
PDF
Romanenko
PDF
Perepelitsa
PDF
Osipov
PDF
Kubasov
PDF
Kalugin balashov
Kharkov
Balashov
Zamyakin
Panfilov
Platov
Rabovoluk
Smirnov dependency-injection-techforum(1)
Smirnov reverse-engineering-techforum
Zacepin
Zagursky
Haritonov
Chudov
Bubnov
A.pleshkov
Zenovich
Romanenko
Perepelitsa
Osipov
Kubasov
Kalugin balashov

Kubasov 1 7_deploy

  • 1. Как решить проблему деплоя тысяч серверов?
  • 2. ClusterIt pssh
  • 3. Виды деплоя ● Пофайловая раскладка ● checkout из репозитория (svn,cvs,etc..) на сервер ● Символическая ссылка на stable ● Использование пакетного менеджера
  • 4. Проблемы коробочных решений ● Не справляются с нагрузкой ● Излишне умные ● Требуюь больше времени при допиливании ● Усложняется поддержка обновлений
  • 5. Пишем сами 1) Интерфейс должен быть выполнен в виде API 2) Исполняющая часть должна быть легкой 3) Сервис не должен принимать самостоятельных решений 4) Формат конфигов должен быть предельно простым 5) Система должна поддерживать различные механизмы выполнения задач
  • 6. Принципы работы ● Используем пакетный менеджер ● Собираем пакет на build-server'е ● Используем транзакции ● Используем механизм `repackage` для RPM ● Впиливаем отдачу версии в сам продукт ● Контролируем целостность и актуальность конфигов и пакетов
  • 7. Requirements ● Оператор ставит задачи в очередь на выполнение ● Менеджер очереди отдает команды исполняющим демонам ● Исполняющий демон выполняет сценарий ● Контроль ошибок и ведение журнала выполнения сценария ● Обработка событий
  • 8. Получилось 1) mntd исполнительный статический демон на C 2) mntqd менеджер очереди 3) mntw web морда для управления 4) Протокол взаимодействия - SOAP
  • 9. SOAP (gSOAP) ● Универсальный протокол взаимодействия ● SMTP/HTTP/FTP... ● Быстрая разработка ● Автоматическая генерация WSDL и XML (XSD)
  • 10. Описание методов (WSDL) <message name="exec"> <part name="cmd" type="xsd:string"/> <part name="arg" type="xsd:string"/> </message> <message name="resp"> <part name="status" type="xsd:int"/> <part name="message" type="xsd:string"/> <part name="log" type="xsd:string"/> </message>
  • 11. Взаимодействие mntqd queue manager policy-server SOAP web interface some service SOAP mntd mntd mntd exec server1 server2 server3
  • 12. Основные методы ● exec - выполнить сценарий ● status - получить статус сервера ● pushfile - положить файл ● periodic_status - периодическая задача получения статуса ● set_task - поставить задачу (через policy-server)
  • 15. Пример использования Хранилище почты ● 10Пб+ данных ● 2000+ машин ● ферма тестовых серверов ● ферма beta-серверов
  • 16. Алгоритм выкладки ● Релиз-мастер ставит задачу на сборку пакета ● Пакет собирается и уезжает в репозиторий ● Отдаем собранный билд на тест ● Поехали на beta-сервера ● Поехали в бой
  • 17. Скользящее окно ------------------------------- FAIL ● сдвиг выполнения на N серверов vvvvv vxx- - - ● архивация выполненных задач |1|2|3|4|5|6|7|8|9|10|11| |_____| ● контроль ошибок |______| -------------------------------
  • 18. Автоматизация горизонтального масштабирования ● выделяется пул IP адресов ● в базовом дистрибутиве уже умеется предустановленный mntd ● сервер ставит задачу на init (шаблон init_server) ● после наливки остается только включить сервер в нагрузку. ● ввод в строй 100 серверов может занимать не более одного часа.
  • 19. СПАСИБО! Сергей Кубасов Заместитель технического директора s.kubasov@corp.mail.ru