27
Дмитрий Росляков, Евгений Чернов Сотни серверов, десятки компонент: автоматизация раскладки и конфигурирования

сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

  • Upload
    rit2011

  • View
    696

  • Download
    2

Embed Size (px)

Citation preview

Page 1: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

Дмитрий Росляков, Евгений Чернов

Сотни серверов, десятки компонент: автоматизация раскладки и

конфигурирования

Page 2: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 2

Требования

• Организационные и системные ограниченияРута мы вам не дадим, программисты - криворукие, админы – тоже, perl рулез

• Куча существующего кодаТакже известен как «Говнокод»

• Интуитивная простота и понятностьАаааа! Ctrl-c, ctrl-c, ctrl-c

• Continuous IntegrationКатаем что угодно и когда угодно

• АудитКто это выкатил?! Почему порт закрыт?! Был же открыт вчера!

Page 3: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 3

бинарные файлы

Файлы конфигурации

данныепакет

компонента

Page 4: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 4

Page 5: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 5

Searcher IndexerSpider

Page 6: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 6www.mail.ru 6

• Name• SVN• Build-server• Build• Check-build• Package• Config• Path• Pre/post – install

scripts

Параметры Сборки

Параметры Установки

Описание компонента

Page 7: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 7www.mail.ru 7

• Name• SVN• Build-server• Build• Check-build• Package• Config• Path• Pre/post – install

scripts

Параметры Сборки

Параметры Установки

• Name = spider

• SVN = svn://mail.ru/search.mail.ru

• Build-server = s1.mail.ru s2.mail.ru

• Build = ./configure && make spider

• Check-build = make test-spider

• Package = pack/spider.tgz

• Config = conf/spider.xml

• Path = ~/spider/

• Pre-install = ./check_lib.sh

• Post-install = ./post-install.sh

Описание Компонента

Page 8: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 8

Иерархия ролей

Описание Роли

• Name• Components• Servers• Dependencies• Checks• Events• Use• <comp_name>_settings• <comp_name>_macros

spider

spider-web

video

video-fast

image

spider-fast

news feeds

blogs

Page 9: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 9www.mail.ru 9www.mail.ru 9www.mail.ru 9

SADCo (System for Automatical Deployment and Configuration)

./sadco --role=searcher install

Установка компонентов роли “searcher”:

Page 10: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 10www.mail.ru 10www.mail.ru 10

SADCo (System for Automatical Deployment and Configuration)

./sadco --role=searcher install

Установка компонентов роли “searcher”:

Конфигурирование компонента “daemon” роли “searcher”:

./sadco --role=searcher --component=daemon configure

Page 11: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 11www.mail.ru 11

SADCo (System for Automatical Deployment and Configuration)

./sadco --role=searcher install

Установка компонентов роли “searcher”:

Конфигурирование компонента “daemon” роли “searcher”:

./sadco --role=searcher --component=daemon configure

Откатить к предыдущей версии все компоненты роли “searcher” на сервере s1.mail.ru:

./sadco --role=searcher --server=s1.mail.ru rollback

Page 12: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 12

SADCo (System for Automatical Deployment and Configuration)

./sadco --role=searcher install

Установка компонентов роли “searcher”:

Конфигурирование компонента “daemon” роли “searcher”:

./sadco --role=searcher --component=daemon configure

Откатить к предыдущей версии все компоненты роли “searcher” на сервере s1.mail.ru:

./sadco --role=searcher --server=s1.mail.ru rollback

Удалить компонент “daemon” роли “searcher” на сервере s1.mail.ru:

./sadco -r searcher -c daemon -s s1.mail.ru remove

Page 13: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 13

Процесс выкладки компонента

Package Backups

SVN

Sources

package configs

checkout

build

package configspack. v.1pack. v.2pack. v.3pack. v.4

pre-install

post-install

install

pre-config

post-config

configure

да

pre-install

post-install

install

pre-config

post-config

configure

да

Config Backupsconfig. v.1config. v.2

да

Sources

package configs

build

checkout

Сборочные сервера

SADCo

Боевой кластер

pack. v.5

config. v.3

Изменился?

Page 14: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 14

..%VISIBLE%...%HEIGHT%..........

%TYPE%................%SUMMARY%............

...

....TRUE.....

.750px.......

........XML..

.............

..SomeTool...............

....FALSE....

.500px.......

........HTML.

.............

..OtherTool..

.............

Шаблон конфигурационного файла

Роль 1 Роль 2

VISIBLE = TRUEHEIGHT = 750pxTYPE = XMLSUMMARY = SomeTool

VISIBLE = FALSEHEIGHT = 500pxTYPE = HTMLSUMMARY = OtherTool

Частьописания

роли

Page 15: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 15

Откат роли к предыдущим версиям

К 1 К 2 К 3

К1, r1 К2, r1 К3, r1

К1, r2

К1, r3

К1, r4

К2, r3

К2, r4

К3, r2

День 1

День 2

День 3

День 4

• Полнота• Корректность• Скорость• Надежность

?

Page 16: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 16www.mail.ru 16

Откат роли к предыдущим версиям

К 1 К 2 К 3

К1, r1 К2, r1 К3, r1

К1, r2

К1, r3

К1, r4

К2, r3

К2, r4

К3, r2

День 1

День 2

День 3

День 4

• Полнота• Корректность• Скорость• Надежность

К2, r1

К3, r2

К3, r2

Page 17: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 17

Транзакционность выкладки

К1 К2 К3

На уровнесервера

1

1 2

2

На уровнекластера

3

3 На уровнероли

Page 18: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 18

Зависимости между ролями. Сигналы и события

Роль 1 Роль 2

Роль 3Роль 4

Примеры зависимостей между ролями:

1. Обновление Роли 2 после установки Роли 1

2. Перед установкой Роли 1 нужно отключить компонент Роли 4

3. Если произошло переконфигурирование компонентов Роли 1, то переконфигурировать Роль 3

4. На время установки Роли 2 необходимо включить компонент Роли 3

Роль 1: depends = Роль 2, Роль 3, Роль 4

Роль 2: depends = Роль 3

Стандартные сигналы:

• start-configure• failed-configure• finish-configure

• start-install• failed-install• finish-install

• start-rollback• failed-rollback• finish-rollback

finish-install

start-install reconfigured

start-installfinish-install

Page 19: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 19

Посылка сигналов самому себе

Роль 1 events: start-install = /etc/init.d/httpd stop

finish-install = /etc/init.d/httpd start

restart = /etc/init.d/httpd restart

Описание обработчика событий:

start-install

Типичные примеры использования:

1. Необходимо выполнить некоторые pre/post-install действия (остановка / запуск обновляемых служб).

2. Создание собственных сигналов для управления компонентами

./sadco --role=“Роль 1” --signal restart

Перезапуск apache на всех серверах роли Роль 1:

Page 20: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 20

Синхронизация обработки сигнала

Роль

Роль

Одновременный перезапуск

Последовательный Перезапуск

(+ возможна задержка)

5 мин.5 м

ин.

restart

restart

restart

restart

restart

restar

t

Page 21: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 21

Управление раскладкой

Типичные проблемы управления раскладкой:

1. Авторизация и идентификация пользователя.

2. Запрет / разрешение на одновременную выкладку разных ролей.

Page 22: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 22

Клиент - серверная архитектура

chernov ivanov petrov

Daemon

SADCoКто Роль Действие Статус

chernov spider install done

ivanov searcher configure current

chernov spider-web install done

ivanov searcher install scheduled

petrov spider install current

installconfigure

Page 23: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 23

Управление одновременностью запуска

Р1

Р4

Р5Р8

Р9

Р3

Р2 Р6

Р7

Р10

Р11 Р12

Р13

Группы:

• Searchers: Р1, Р2, Р5, Р8, Р9

• Indexers: Р3, Р6, Р7, Р12, Р13

• Test: Р3, Р4, Р5, Р10

Indexers

Searchers

Test

• Из каждой группы можно одновременно раскладывать только одну роль

• Роль может входить в несколько групп

• Роль без группы, образует собственную группу

Page 24: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 24

Проверка требований к серверам

Возможные проверки:

• Проверка свободного места

• Открытость портов

• Настройки ядра

• Присутствие мониторинга

Параметры проверки:• До установки роли• После установки• Прерывать установку в случае

ошибки• Не прерывать (только сообщить

о ошибке)

Page 25: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 25

Информативность системы

• Уведомления о установке заинтересованных разработчиков

• Подробное логирование (на случай аварии)

• История установок

• Возможность узнать текущее состояние роли (какие компоненты, каких версий на каких серверах установлены)

• Возможность узнать состояние сервера (какие роли установлены)

indexeroptimizer

idx1.mail.rupackage: 19/04/2011 18:03 chernov 16507

configs: 20/04/2011 13:24 chernov 16548indexer

idx1.mail.rupackage: 19/04/2011 18:03 chernov 16507configs: 19/04/2011 18:03 chernov 16507

Page 26: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

www.mail.ru 26

Ключевые моменты

• Понятие “Роль”

• Система откатов и транзакционность выкладки

• Сигналы / события ролей

• Клиент - серверная архитектура и управление очередью

• Информативность системы

Page 27: сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования. дмитрий росляков,

Евгений Чернов, программист, [email protected]Дмитрий Росляков, руководитель группы разработки, [email protected]

Поиск@Mail.ru

СПАСИБО!