Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
DevOps или искусство
ухода за Интернет-
проектами
Титов Александр, Express 42
О себе
• Оверсан-Скалакси
• Qik/Skype/Microsoft
Экспресс 42
О чем доклад
• Что такое DevOps
• Мой опыт в DevOps
DevOps?
DevOps как решение
проблемы
• баги
• отказы
• простои при выкатке
• редкие и болезненные релизы
Корень проблемы -
потеря информации
Примеры из жизни
• не выкатились, потому что не знали
• система отказала, потому что кто-то
промолчал
• не смогли договориться
DevOps это
• автоматизация и инструменты
автоматизации
• управление изменениями через
измерения
• новая инженерная культура
• распространение знаний между всеми
участниками команды
Автоматизация?
• инструменты для сохранения
информации
• критерий эффективного использования -
больше порядка в системе
• сохранение информации о системе -
bash скрипты, хранение конфигов в git
• сохранение информации об изменении в
системе - Opscode Chef
2D vs 3D
Как инструменты
помогают
Dev Test Prod
Контекст Контекст’ Контекст’’
Одинаковые образы ОС (cobbler)
Контекст изменения в Chef
Изменение
Пример
Модель “Экспресс 42”
application
service (nginx, pgsql,etc)
base
(ОС, бэкапы, базовый мониторинг)
Ops
Ops
Dev
Ops
Пример
postgresql "main" do
databag node["zabbix-server"]["database"]["databag"]
cluster_create_options "locale" => "ru_RU.UTF-8"
configuration(
:version => "9.1",
:connection => {
:listen_addresses => listen_address,
:max_connections => 300
},
:resources => {
:shared_buffers => "8MB",
:maintenance_work_mem => "128MB",
:work_mem => "8MB"
},
:queries => { :effective_cache_size => "3GB" },
:wal => { :checkpoint_completion_target => "0.9" },
:logging => { :log_min_duration_statement => "1000" },
:archiving => {
:archive_mode => "on",
:archive_command => "'exit 0'"
},
:standby => { :hot_standby => "on" }
)
hba_configuration(
[ { :type => "host", :database => "all", :user => "all", :address => node["zabbix-server"]["database"]["network"], :method => "md5" } ]
)
end
Пример
php_pool "zabbix-runtime" do
address "127.0.0.1"
port "9200"
allow "127.0.0.1"
backlog -1
limits :core => 0, :files => 1024, :requests => 500, :children => 5, :spare_children => { :min => 1, :max => 3 }
php_var 'register_globals' => true,
'short_open_tag' => true,
'display_errors' => false,
'max_execution_time' => '600',
'error_reporting' => 'E_ALL & ~E_DEPRECATED',
'date.timezone' => 'UTC',
'error_log' => '/var/log/zabbix-php-error.log',
'memory_limit' => '128M',
'post_max_size' => '32M',
'max_input_time' => '300'
action :add
end
Изменения через
измерения
Dev Test Prod
Контекст Контекст’ Контекст’’
Изменение
Мониторинг
Изменения через
измерения
zabbix_connect "connect to monitoring.name.net zabbix" do
apiurl "http://monitoring.name.net/api_jsonrpc.php"
databag "zabbix"
end
zabbix_host node.fqdn do
host_group node["storage"]["monitoring"]["host_group"]
use_ip true
ip_address ip_mon
end
zabbix_template 'Linux_Template'
Изменения через
измерения
zabbix_application "#{mpoint} filesystem" do
item "vfs.fs.size[#{mpoint},free]" do
type :active
name "Free disk space on #{mpoint}"
frequency 600
end
item "vfs.fs.size[#{mpoint},total]" do
type :active
name "Total disk space on #{mpoint}"
frequency 6000
end
# Free space triggers
{20 => :warning, 10 => :average, 5 => :high}.each do |percent, sev|
trigger "Free space on #{mpoint}, #{percent}%" do
expression "{#{node.fqdn}:vfs.fs.size[#{mpoint},pfree].last(0)}<#{percent}"
severity sev
end
end
trigger "Free space on #{mpoint}, 0%" do
expression "{#{node.fqdn}:vfs.fs.size[#{mpoint},pfree].last(0)}=0"
severity :disaster
end
end
Изменения через
измерения
• логирование
• сбор эксепшенов
• визуализация статистики
Культура
• Честность
• Открытость
• Искренность
Меньше потерь информации!
Как применять?
• победить дискомфорт
• на своем примере
Коммуникации
• Скайп
• Разговоры
• Работа в группе
• Пицца, пиво, Джармуш
Спрашивайте!
twitter: @osminog
рассылка: http://
groups.google.com/group/
devopsru
meetup: http://
www.meetup.com/DevOps-
Moscow-in-Russian

More Related Content

DevOps или исскуство ухода за Интернет-проектом