Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

940 views

Published on

  • Be the first to like this

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

  1. 1. Сотни серверов, десятки компонент: автоматизация раскладки и конфигурирования <br />Дмитрий Росляков, Евгений Чернов<br />
  2. 2. www.mail.ru<br />2<br />Требования<br /><ul><li>Организационные и системные ограниченияРута мы вам не дадим, программисты - криворукие, админы – тоже, perlрулез
  3. 3. Куча существующего кодаТакже известен как «Говнокод»
  4. 4. Интуитивная простота и понятностьАаааа! Ctrl-c, ctrl-c, ctrl-c
  5. 5. Continuous IntegrationКатаем что угодно и когда угодно
  6. 6. АудитКто это выкатил?!Почему порт закрыт?! Был же открыт вчера!</li></li></ul><li>www.mail.ru<br />3<br />бинарные <br />файлы<br />данные<br />пакет<br />компонента<br />Файлы конфигурации<br />
  7. 7. www.mail.ru<br />4<br />
  8. 8. Indexer<br />Searcher<br />Spider<br />www.mail.ru<br />5<br />
  9. 9. Описание компонента<br />Name<br />SVN<br />Build-server<br />Build<br />Check-build<br />Package<br />Config<br />Path<br />Pre/post – install scripts<br />Параметры <br />Сборки<br />Параметры <br />Установки<br />www.mail.ru<br />6<br />www.mail.ru<br />6<br />
  10. 10. www.mail.ru<br />7<br />Описание Компонента<br /><ul><li>Name = spider
  11. 11. SVN =svn://mail.ru/search.mail.ru
  12. 12. Build-server = s1.mail.ru s2.mail.ru
  13. 13. Build = ./configure && make spider
  14. 14. Check-build = make test-spider
  15. 15. Package = pack/spider.tgz
  16. 16. Config =conf/spider.xml
  17. 17. Path = ~/spider/
  18. 18. Pre-install = ./check_lib.sh
  19. 19. Post-install = ./post-install.sh</li></ul>Name<br />SVN<br />Build-server<br />Build<br />Check-build<br />Package<br />Config<br />Path<br />Pre/post – install scripts<br />Параметры <br />Сборки<br />Параметры <br />Установки<br />www.mail.ru<br />7<br />
  20. 20. Иерархия ролей<br />www.mail.ru<br />8<br />Описание Роли<br />Name<br />Components<br />Servers<br />Dependencies<br />Checks<br />Events<br />Use<br /><comp_name>_settings<br /><comp_name>_macros<br />
  21. 21. www.mail.ru<br />9<br />SADCo (System for Automatical Deployment and Configuration)<br />Установка компонентов роли “searcher”:<br />./sadco --role=searcher install<br />www.mail.ru<br />9<br />www.mail.ru<br />9<br />www.mail.ru<br />9<br />
  22. 22. www.mail.ru<br />10<br />SADCo (System for Automatical Deployment and Configuration)<br />Установка компонентов роли “searcher”:<br />./sadco --role=searcher install<br />Конфигурирование компонента “daemon” роли “searcher”:<br />./sadco --role=searcher --component=daemon configure<br />www.mail.ru<br />10<br />www.mail.ru<br />10<br />
  23. 23. www.mail.ru<br />11<br />SADCo (System for Automatical Deployment and Configuration)<br />Установка компонентов роли “searcher”:<br />./sadco --role=searcher install<br />Конфигурирование компонента “daemon” роли “searcher”:<br />./sadco --role=searcher --component=daemon configure<br />Откатить к предыдущей версии все компоненты роли “searcher” на сервере s1.mail.ru:<br />./sadco --role=searcher --server=s1.mail.ru rollback<br />www.mail.ru<br />11<br />
  24. 24. www.mail.ru<br />12<br />SADCo (System for Automatical Deployment and Configuration)<br />Установка компонентов роли “searcher”:<br />./sadco --role=searcher install<br />Конфигурирование компонента “daemon” роли “searcher”:<br />./sadco --role=searcher --component=daemon configure<br />Откатить к предыдущей версии все компоненты роли “searcher” на сервере s1.mail.ru:<br />./sadco --role=searcher --server=s1.mail.ru rollback<br />Удалить компонент “daemon” роли “searcher” на сервере s1.mail.ru:<br />./sadco -r searcher -c daemon -s s1.mail.ru remove<br />
  25. 25. www.mail.ru<br />13<br />Процесс выкладки компонента<br />SVN<br />checkout<br />checkout<br />Sources<br />Sources<br />Сборочные сервера<br />build<br />build<br />package<br />configs<br />package<br />configs<br />Package Backups<br />Config Backups<br />pack. v.1<br />config. v.1<br />package<br />configs<br />pack. v.2<br />config. v.2<br />SADCo<br />config. v.3<br />pack. v.3<br />pack. v.4<br />да<br />Изменился?<br />pack. v.5<br />да<br />да<br />pre-install<br />pre-config<br />pre-install<br />pre-config<br />…<br />Боевой кластер<br />install<br />configure<br />install<br />configure<br />post-install<br />post-config<br />post-install<br />post-config<br />
  26. 26. www.mail.ru<br />14<br />Шаблонконфигурационного файла<br />..%VISIBLE%...%HEIGHT%..........%TYPE%................%SUMMARY%...............<br />Роль 1<br />Роль 2<br />....TRUE......750px...............XML.................SomeTool...............<br />....FALSE.....500px...............HTML................OtherTool...............<br />VISIBLE = TRUE<br />HEIGHT = 750px<br />TYPE = XML<br />SUMMARY = SomeTool<br />VISIBLE = FALSE<br />HEIGHT = 500px<br />TYPE = HTML<br />SUMMARY = OtherTool<br />Часть<br />описания роли<br />
  27. 27. www.mail.ru<br />15<br />Откат роли к предыдущим версиям<br />К 1<br />К 2<br />К 3<br /><ul><li> Полнота
  28. 28. Корректность
  29. 29. Скорость
  30. 30. Надежность</li></ul>К1, r1<br />К2, r1<br />К3, r1<br />День 1<br />К1, r2<br />К3, r2<br />День 2<br />?<br />К1, r3<br />К2, r3<br />День 3<br />К1, r4<br />К2, r4<br />День 4<br />
  31. 31. www.mail.ru<br />16<br />Откат роли к предыдущим версиям<br />К 1<br />К 2<br />К 3<br /><ul><li> Полнота
  32. 32. Корректность
  33. 33. Скорость
  34. 34. Надежность</li></ul>К1, r1<br />К2, r1<br />К3, r1<br />День 1<br />К1, r2<br />К3, r2<br />День 2<br />К2, r1<br />К1, r3<br />К2, r3<br />День 3<br />К3, r2<br />К1, r4<br />К2, r4<br />День 4<br />К3, r2<br />www.mail.ru<br />16<br />
  35. 35. www.mail.ru<br />17<br />Транзакционность выкладки<br />К1<br />К2<br />К3<br />1<br />2<br />3<br />1<br />2<br />3<br />На уровне<br />сервера<br />На уровне<br />кластера<br />На уровне<br />роли<br />
  36. 36. www.mail.ru<br />18<br />Зависимости между ролями. Сигналы и события<br />Примеры зависимостей между ролями:<br />Обновление Роли 2 после установки Роли 1<br />Перед установкой Роли 1 нужно отключить компонент Роли 4<br />Если произошло переконфигурирование компонентов Роли 1, то переконфигурировать Роль 3<br />На время установки Роли 2 необходимо включить компонент Роли 3<br />Роль 1<br />Роль 2<br />finish-install<br />start-install<br />finish-install<br />start-install<br />reconfigured<br />Роль 3<br />Роль 4<br />Стандартные сигналы:<br /><ul><li> start-configure
  37. 37. failed-configure
  38. 38. finish-configure
  39. 39. start-install
  40. 40. failed-install
  41. 41. finish-install
  42. 42. start-rollback
  43. 43. failed-rollback
  44. 44. finish-rollback</li></ul>Роль 1: depends = Роль 2, Роль 3, Роль 4<br />Роль 2: depends = Роль 3<br />
  45. 45. www.mail.ru<br />19<br />Посылка сигналов самому себе<br />Описание обработчика событий:<br />Роль 1<br />events: start-install = /etc/init.d/httpd stop<br />finish-install = /etc/init.d/httpd start<br />restart = /etc/init.d/httpd restart<br />start-install<br />Типичные примеры использования:<br />Необходимо выполнить некоторые pre/post-install действия (остановка / запуск обновляемых служб).<br />Создание собственных сигналов для управления компонентами<br />Перезапуск apache на всех серверах роли Роль 1:<br />./sadco --role=“Роль 1” --signalrestart<br />
  46. 46. www.mail.ru<br />20<br />Синхронизация обработки сигнала<br />restart<br />Роль<br />Одновременный <br />перезапуск<br />restart<br />restart<br />Последовательный <br />Перезапуск<br />(+ возможна <br />задержка)<br />Роль<br />5 мин.<br />restart<br />restart<br />restart<br />5 мин.<br />
  47. 47. www.mail.ru<br />21<br />Управление раскладкой<br />Типичные проблемы управления раскладкой:<br />Авторизация и идентификация пользователя.<br />Запрет / разрешение на одновременную выкладку разных ролей.<br />
  48. 48. www.mail.ru<br />22<br />Клиент - серверная архитектура<br />SADCo<br />Daemon<br />install<br />configure<br />chernov<br />ivanov<br />petrov<br />
  49. 49. www.mail.ru<br />23<br />Управление одновременностью запуска<br />Searchers<br />Р2<br />Р6<br />Группы:<br /><ul><li>Searchers: Р1, Р2, Р5, Р8, Р9
  50. 50. Indexers: Р3, Р6, Р7, Р12, Р13
  51. 51. Test: Р3, Р4, Р5, Р10</li></ul>Р1<br />Р4<br />Р5<br />Р8<br />Р7<br />Р3<br />Р9<br />Р10<br />Р13<br />Р12<br />Р11<br />Test<br />Indexers<br /><ul><li>Из каждой группы можно одновременно раскладывать только одну роль
  52. 52. Роль может входить в несколько групп
  53. 53. Роль без группы, образует собственную группу</li></li></ul><li>www.mail.ru<br />24<br />Проверка требований к серверам<br />Возможные проверки:<br /><ul><li>Проверка свободного места
  54. 54. Открытость портов
  55. 55. Настройки ядра
  56. 56. Присутствие мониторинга</li></ul>Параметры проверки:<br /><ul><li>До установки роли
  57. 57. После установки
  58. 58. Прерывать установку в случае ошибки
  59. 59. Не прерывать (только сообщить о ошибке)</li></li></ul><li>www.mail.ru<br />25<br />Информативность системы<br /><ul><li>Уведомления о установке заинтересованных разработчиков
  60. 60. Подробное логирование (на случай аварии)
  61. 61. История установок
  62. 62. Возможность узнать текущее состояние роли (какие компоненты, каких версий на каких серверах установлены)
  63. 63. Возможность узнать состояние сервера (какие роли установлены)</li></ul>indexer<br /> optimizer<br /> idx1.mail.ru<br /> package: 19/04/2011 18:03 chernov 16507<br />configs: 20/04/2011 13:24 chernov 16548<br /> indexer<br /> idx1.mail.ru<br /> package: 19/04/2011 18:03 chernov 16507<br />configs: 19/04/2011 18:03 chernov 16507<br />
  64. 64. www.mail.ru<br />26<br />Ключевые моменты<br /><ul><li>Понятие “Роль”
  65. 65. Система откатов и транзакционность выкладки
  66. 66. Сигналы / события ролей
  67. 67. Клиент - серверная архитектура и управление очередью
  68. 68. Информативность системы</li></li></ul><li>Евгений Чернов, программист, e.chernov@corp.mail.ru<br />Дмитрий Росляков, руководитель группы разработки, roslyakov@corp.mail.ru<br />Поиск@Mail.ru<br />Спасибо!<br />

×