Chef и Ansible в инфраструктуре 2ГИС
О чём речь• Проблемы роста и развития
• Уровни управления инфраструктурой
• Chef и Ansible
• Graylog 2 — как инструмент обратной связи
• Деплой геокластера
• Проблемы и планы на будущее
2
Что имеем• Новосибирск, Москва, Дронтен
• 20 серверов на каждый ДЦ
• 300 человек + 4 администратора
• 30 млн. пользователей
• 1 500 rps на фронтенд в каждый ДЦ
3
ITIL vs DevOps
Было, 2010• 2 сервера
• 10 человек
• Мало кода
5
Стало, 2013• 50 серверов
• геокластер
• 300 человек
6
Задачи
1. Однородность среды
2. Очень частые релизы
3. Много разного железа
4. Сплиттесты
5. Документация
Серверная инфраструктура• Разработка
• Тестирование
• Staging
• Production
13
Bootstrap → Configuration → Deploy
Эволюция1. Обновление руками
2. Простые скрипты
3. Приложения для деплоя
4. Приложения для приложений для деплоя
15
16
17
Плюсы• Конфигурация как код
• Cookbooks (playbook) — сразу и документация
• Простота, понятность, могущество
• Целостное видение инфраструктуры
• Единая среда development, test и production
18
Минусы• Надо аккуратно писать рецепты
• Агенты, демоны, предварительная настройка
• PULL / PUSH
• Дирижёр для дирижёра
19
Graylog 2 — дополняет Chef• Информация о состоянии системы
• Всё в одном месте от всех компонентов
• Поиск, индексация, агрегация и графики
20
21
packages = value_for_platform( ["redhat", "centos", "scientific", "amazon", "oracle"] => {
"default" => %w(ruby-devel curl-devel) },
["ubuntu", "debian"] => {
"default" => %w(ruby-dev libcurl4-gnutls-dev) } )
packages.each do |devpkg|
package devpkg
end
gem_package 'rake'
gem_package 'passenger' do
action :install
version node["nginx"]["passenger"]["version"]
gem_binary node["nginx"]["passenger"]["gem_binary"] if node["nginx"]["passenger"]["gem_binary"]
end
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
22
- hosts: suppall
tasks:
- name: installing librabbitmq0
apt: pkg=librabbitmq0 state=installed force=yes
- name: installing php5-amqp
apt: pkg=php5-amqp state=installed force=yes
- name: restarting php
service: name=php5-fpm state=restarted
23
Проблемы
Геораспределенность• Задержки и неполадки сети
• Временные зоны
• Отказоустойчивость геозоны
25
Chef• Усложняется с каждым релизом
• Демоны и контроль их состояния
26
Будущее• Деплоим приложение, а не инфраструктуру (Heroku)
• Private Clouds, автобалансировка нагрузки, сервер сценариев
• Одна кнопка и всё работает
• Облака всё
27
Спасибо!
Вопросы?
Top Related