SlideShare une entreprise Scribd logo
1  sur  19
Управление облачной
  инфраструктурой

  Системы управления
   конфигурацией ПО
Задачи
1. Выполнение типовых команд на
   множестве серверов
2. Развертывание собственного ПО на
   множестве серверов
3. Управление объектами (ресурсами)
   множества ОС
1. Выполнение типовых команд
Примеры:
• обновление системы:
  – yum update;
  – aptitude full-upgrade и т.д.
• заливка нового конфигурационного файла:
  – yum.conf, sources.list;
  – resolv.conf.
  – ntp.conf и т.д.
1.1. Использование скриптов
Например:
for veid in {101..105}; do
  vzctl exec $veid команда
done
           Преимущества               Недостатки
Простота                  Скрипт нужно запускать на каждом
                          хосте отдельно
1.2. Использование distributed shells


           yum update




           Преимущества                           Недостатки
Сервера адресуются по имени или IP,   Требуется дополнительная
т.е. нет привязки к их расположению   конфигурация на сервере (sudoers)
                                      Полностью работает только в
                                      гомогенных средах
1.2.1. Использование distributed shells

Например: dsh или pdsh
Запрос:
$ pdsh -R ssh -w mvio.ru,nagios.reic.ru ls
Ответ:
nagios.reic.ru: Projects
mvio.ru: build
mvio.ru: Projects
2. Развертывание собственного ПО
            Машина
                                          Сервер
          разработчика



Действия:
1. копирование на сервер (scp, rsync, tar c, git push);
2. сборка на сервере (tar x, git merge);
3. перезапуск приложения.
2.1. Развертывание собственного ПО
                                Тестовый
                                 сервер
   Машина
 разработчика
   Василия      Центральный     Рабочий
                репозиторий     сервер 1
   Машина
 разработчика
    Петра                       Рабочий
                                сервер 2



Для более сложной архитектуры удобнее
 использовать специальные инструменты
2.2. Развертывание собственного ПО
Для различных ЯП и платформ используются свои
  инструменты для сборки и развертывания:
• Python – Fabric;
• Ruby – Capistrano;
• Java – Ant, Maven …
                              Преимущества
Можно гибко конфигурировать в зав-ти от типа/роли (test, prod) сервера
Развертывание на несколько серверов параллельно
3. Управление объектами (ресурсами)
                 ОС
Объекты управления (ресурсы):
• пакеты ПО (apache, nginx, syslog, ntp …);
• конфигурация этого ПО;
• пользователи и группы;
• сетевая конфигурация;
• другие параметры.
Web-прокси
                                 (nginx)
1-й вариант конфигурации:
Электронный секретарь
                              Java-приложение
                                (mvio-web)



      Web-прокси                                    У всех вариантов
        (nginx)         2-й вариант конфигурации:   конфигурации Nginx
                        Биллинг BGBilling           есть общие части и
    Java-приложение
       (BGBilling)
                                                    части специфические!


                               Web-прокси
3-й вариант конфигурации:        (nginx)
Сайт maestrotelecom.ru
                              PHP-приложение
                                  (сайт)
Отсюда – разные потребности:
• изменение общих частей конфигурации
  (например, нужно добавить защиту от
  DDOS-атак);
• изменение специфических частей
  конфигурации (увеличить размер буфера
  для пользовательских данных на портале
  «Электронный секретарь»).
Решение №1:
• для общих частей использовать собственные пакеты (т.е.
   взять и включить типовую конфигурацию nginx в rpm-
   пакет nginx).
• cпецифические части хранить в отдельном репозитории.

                              Недостатки
Приходится самому поддерживать пакеты (т.е. отслеживать обновления
исходного ПО и уязвимости ПО)
Куча ручной работы по изменению конфигурационных файлов (либо нужно
писать специальные скрипты с использованием distributed shells)
Решение №2:
• использование SCM (Software Configuration Management)
  или системы управления конфигурацией ПО.

Основной подход – описание объектов системы на
  абстрактном языке.

    Пользователь        Сервис (nginx)       Настройки сети

user paul {         service nginx {       file interfaces {
  uid 1000            name test.reic.ru     int 01
  comment Pavel       port 80               name eth1
  home /home/paul     ssl yes               speed 100
  shell /bin/bash     template nginx-       mode full-duplex
  …                 std.conf              }
}                   }
В системе SCM должны быть описаны ВСЕ
  специфические объекты конфигурации (те,
  которые отличаются от стандартных).
Другими словами, в SCM-системе хранится
  точный функциональный образ системы
  (сервера).
Из SCM-системы можно в любой момент
  получить копию работоспособного сервера,
  выполняющего нужные нам задачи.
Работа SCM (Chef)
                                          Сервер 1


   Машина        Команды    Хранилище
администратора                            Сервер 2
                           конфигураций
   Евгения


                                          Сервер 3
Две SCM-системы
Puppet                            Chef
• Имеет долгую историю, вырос     • Более свежий проект, взял
  из cfengine                       многое из Puppet
• Декларативный, более            • Императивный, более подходит
  подходит для администратора       для программиста
• В «рецептах» используется DSL   • В «рецептах» используется Ruby
  («птичий язык»), расширяемый    • Коммерциализация – SaaS-
  на Ruby                           модель
• Коммерциализация –              • Более удобен для
  расширенная версия с web-         развертывания приложений из
  интерфейсом                       VCS-репозиториев
Установка пакета “play-framework” и
                 библиотеки “asterisk-java” в Puppet
# Install Play! Framework
package { "play-framework":
   ensure => present
}

# Install asterisk-java module
file { "/opt/asterisk-java":
   ensure => "directory",
   owner => "root",
   group => "root",
   mode => 0755,
}
file { "/opt/asterisk-java/target":
   ensure => "directory",
   owner => "root",
   group => "root",
   mode => 0755,
}
file { "/opt/asterisk-java/target/asterisk-java.jar":
   source => "puppet:///modules/git-repo/asterisk-java.jar",
   owner => "root",
   group => "root",
   mode => 0644,
}
Установка пакета “play-framework” и
             библиотеки “asterisk-java” в Chef
package "play-framework"

# Install asterisk-java module
%w{/opt/asterisk-java /opt/asterisk-java/target}.each do |dir|
   directory "#{dir}" do
     owner "root"
     group "root"
     mode 0755
     action :create
   end
end
cookbook_file "/opt/asterisk-java/target/asterisk-java.jar" do
   source "asterisk-java.jar"
   owner "root"
   group "root"
   mode 0644
end

Contenu connexe

Tendances

Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50lab50
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)AvitoTech
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015OSLL
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)Ontico
 
Docker в виртуальной среде VMware
Docker в виртуальной среде VMwareDocker в виртуальной среде VMware
Docker в виртуальной среде VMwareAndrey Konovalov
 
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва  Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва it-people
 
VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?Anton Zhbankov
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S OptimizationsStepan Korshakov
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQAlexander Svetkin
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Ontico
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Ontico
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магияAleksey Solntsev
 
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Ontico
 

Tendances (20)

ПК КВГ
ПК КВГПК КВГ
ПК КВГ
 
Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 
Docker в виртуальной среде VMware
Docker в виртуальной среде VMwareDocker в виртуальной среде VMware
Docker в виртуальной среде VMware
 
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва  Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 
VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S Optimizations
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQ
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Automation Compliance Checks
Automation Compliance ChecksAutomation Compliance Checks
Automation Compliance Checks
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
 
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
 
openSUSE Build Server от Б до Ю
openSUSE Build Server от Б до ЮopenSUSE Build Server от Б до Ю
openSUSE Build Server от Б до Ю
 

Similaire à Управление облачной инфраструктурой

«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»Nata_Churda
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Ontico
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Yandex
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...SQALab
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
NPM и модульная архитектура приложения
NPM и модульная архитектура приложенияNPM и модульная архитектура приложения
NPM и модульная архитектура приложенияDenis Latushkin
 
Apache maven in java projects
Apache maven in java projectsApache maven in java projects
Apache maven in java projectsAsya Dudnik
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayAndrey Rebrov
 
Web deployment
Web deploymentWeb deployment
Web deploymentGetDev.NET
 
Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеdevclub
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...DevDay
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыOleg Nenashev
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 

Similaire à Управление облачной инфраструктурой (20)

«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
 
Instalarea DSpace
Instalarea DSpaceInstalarea DSpace
Instalarea DSpace
 
Sivko
SivkoSivko
Sivko
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
NPM и модульная архитектура приложения
NPM и модульная архитектура приложенияNPM и модульная архитектура приложения
NPM и модульная архитектура приложения
 
Apache maven in java projects
Apache maven in java projectsApache maven in java projects
Apache maven in java projects
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применение
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 

Управление облачной инфраструктурой

  • 1. Управление облачной инфраструктурой Системы управления конфигурацией ПО
  • 2. Задачи 1. Выполнение типовых команд на множестве серверов 2. Развертывание собственного ПО на множестве серверов 3. Управление объектами (ресурсами) множества ОС
  • 3. 1. Выполнение типовых команд Примеры: • обновление системы: – yum update; – aptitude full-upgrade и т.д. • заливка нового конфигурационного файла: – yum.conf, sources.list; – resolv.conf. – ntp.conf и т.д.
  • 4. 1.1. Использование скриптов Например: for veid in {101..105}; do vzctl exec $veid команда done Преимущества Недостатки Простота Скрипт нужно запускать на каждом хосте отдельно
  • 5. 1.2. Использование distributed shells yum update Преимущества Недостатки Сервера адресуются по имени или IP, Требуется дополнительная т.е. нет привязки к их расположению конфигурация на сервере (sudoers) Полностью работает только в гомогенных средах
  • 6. 1.2.1. Использование distributed shells Например: dsh или pdsh Запрос: $ pdsh -R ssh -w mvio.ru,nagios.reic.ru ls Ответ: nagios.reic.ru: Projects mvio.ru: build mvio.ru: Projects
  • 7. 2. Развертывание собственного ПО Машина Сервер разработчика Действия: 1. копирование на сервер (scp, rsync, tar c, git push); 2. сборка на сервере (tar x, git merge); 3. перезапуск приложения.
  • 8. 2.1. Развертывание собственного ПО Тестовый сервер Машина разработчика Василия Центральный Рабочий репозиторий сервер 1 Машина разработчика Петра Рабочий сервер 2 Для более сложной архитектуры удобнее использовать специальные инструменты
  • 9. 2.2. Развертывание собственного ПО Для различных ЯП и платформ используются свои инструменты для сборки и развертывания: • Python – Fabric; • Ruby – Capistrano; • Java – Ant, Maven … Преимущества Можно гибко конфигурировать в зав-ти от типа/роли (test, prod) сервера Развертывание на несколько серверов параллельно
  • 10. 3. Управление объектами (ресурсами) ОС Объекты управления (ресурсы): • пакеты ПО (apache, nginx, syslog, ntp …); • конфигурация этого ПО; • пользователи и группы; • сетевая конфигурация; • другие параметры.
  • 11. Web-прокси (nginx) 1-й вариант конфигурации: Электронный секретарь Java-приложение (mvio-web) Web-прокси У всех вариантов (nginx) 2-й вариант конфигурации: конфигурации Nginx Биллинг BGBilling есть общие части и Java-приложение (BGBilling) части специфические! Web-прокси 3-й вариант конфигурации: (nginx) Сайт maestrotelecom.ru PHP-приложение (сайт)
  • 12. Отсюда – разные потребности: • изменение общих частей конфигурации (например, нужно добавить защиту от DDOS-атак); • изменение специфических частей конфигурации (увеличить размер буфера для пользовательских данных на портале «Электронный секретарь»).
  • 13. Решение №1: • для общих частей использовать собственные пакеты (т.е. взять и включить типовую конфигурацию nginx в rpm- пакет nginx). • cпецифические части хранить в отдельном репозитории. Недостатки Приходится самому поддерживать пакеты (т.е. отслеживать обновления исходного ПО и уязвимости ПО) Куча ручной работы по изменению конфигурационных файлов (либо нужно писать специальные скрипты с использованием distributed shells)
  • 14. Решение №2: • использование SCM (Software Configuration Management) или системы управления конфигурацией ПО. Основной подход – описание объектов системы на абстрактном языке. Пользователь Сервис (nginx) Настройки сети user paul { service nginx { file interfaces { uid 1000 name test.reic.ru int 01 comment Pavel port 80 name eth1 home /home/paul ssl yes speed 100 shell /bin/bash template nginx- mode full-duplex … std.conf } } }
  • 15. В системе SCM должны быть описаны ВСЕ специфические объекты конфигурации (те, которые отличаются от стандартных). Другими словами, в SCM-системе хранится точный функциональный образ системы (сервера). Из SCM-системы можно в любой момент получить копию работоспособного сервера, выполняющего нужные нам задачи.
  • 16. Работа SCM (Chef) Сервер 1 Машина Команды Хранилище администратора Сервер 2 конфигураций Евгения Сервер 3
  • 17. Две SCM-системы Puppet Chef • Имеет долгую историю, вырос • Более свежий проект, взял из cfengine многое из Puppet • Декларативный, более • Императивный, более подходит подходит для администратора для программиста • В «рецептах» используется DSL • В «рецептах» используется Ruby («птичий язык»), расширяемый • Коммерциализация – SaaS- на Ruby модель • Коммерциализация – • Более удобен для расширенная версия с web- развертывания приложений из интерфейсом VCS-репозиториев
  • 18. Установка пакета “play-framework” и библиотеки “asterisk-java” в Puppet # Install Play! Framework package { "play-framework": ensure => present } # Install asterisk-java module file { "/opt/asterisk-java": ensure => "directory", owner => "root", group => "root", mode => 0755, } file { "/opt/asterisk-java/target": ensure => "directory", owner => "root", group => "root", mode => 0755, } file { "/opt/asterisk-java/target/asterisk-java.jar": source => "puppet:///modules/git-repo/asterisk-java.jar", owner => "root", group => "root", mode => 0644, }
  • 19. Установка пакета “play-framework” и библиотеки “asterisk-java” в Chef package "play-framework" # Install asterisk-java module %w{/opt/asterisk-java /opt/asterisk-java/target}.each do |dir| directory "#{dir}" do owner "root" group "root" mode 0755 action :create end end cookbook_file "/opt/asterisk-java/target/asterisk-java.jar" do source "asterisk-java.jar" owner "root" group "root" mode 0644 end