View
707
Download
2
Category
Preview:
Citation preview
Дмитрий Росляков, Евгений Чернов
Сотни серверов, десятки компонент: автоматизация раскладки и
конфигурирования
www.mail.ru 2
Требования
• Организационные и системные ограниченияРута мы вам не дадим, программисты - криворукие, админы – тоже, perl рулез
• Куча существующего кодаТакже известен как «Говнокод»
• Интуитивная простота и понятностьАаааа! Ctrl-c, ctrl-c, ctrl-c
• Continuous IntegrationКатаем что угодно и когда угодно
• АудитКто это выкатил?! Почему порт закрыт?! Был же открыт вчера!
www.mail.ru 3
бинарные файлы
Файлы конфигурации
данныепакет
компонента
www.mail.ru 4
www.mail.ru 5
Searcher IndexerSpider
www.mail.ru 6www.mail.ru 6
• Name• SVN• Build-server• Build• Check-build• Package• Config• Path• Pre/post – install
scripts
Параметры Сборки
Параметры Установки
Описание компонента
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
Описание Компонента
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
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”:
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
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
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
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
Изменился?
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
Частьописания
роли
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
• Полнота• Корректность• Скорость• Надежность
?
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
www.mail.ru 17
Транзакционность выкладки
К1 К2 К3
На уровнесервера
1
1 2
2
На уровнекластера
3
3 На уровнероли
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
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:
www.mail.ru 20
Синхронизация обработки сигнала
Роль
Роль
Одновременный перезапуск
Последовательный Перезапуск
(+ возможна задержка)
5 мин.5 м
ин.
restart
restart
restart
restart
restart
restar
t
www.mail.ru 21
Управление раскладкой
Типичные проблемы управления раскладкой:
1. Авторизация и идентификация пользователя.
2. Запрет / разрешение на одновременную выкладку разных ролей.
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
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
• Из каждой группы можно одновременно раскладывать только одну роль
• Роль может входить в несколько групп
• Роль без группы, образует собственную группу
www.mail.ru 24
Проверка требований к серверам
Возможные проверки:
• Проверка свободного места
• Открытость портов
• Настройки ядра
• Присутствие мониторинга
Параметры проверки:• До установки роли• После установки• Прерывать установку в случае
ошибки• Не прерывать (только сообщить
о ошибке)
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
www.mail.ru 26
Ключевые моменты
• Понятие “Роль”
• Система откатов и транзакционность выкладки
• Сигналы / события ролей
• Клиент - серверная архитектура и управление очередью
• Информативность системы
Евгений Чернов, программист, e.chernov@corp.mail.ruДмитрий Росляков, руководитель группы разработки, roslyakov@corp.mail.ru
Поиск@Mail.ru
СПАСИБО!
Recommended