«Chef и Аnsible в инфраструктуре 2ГИС» — Артём Силенков, 2ГИС

Post on 25-Dec-2014

510 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

— Интернет-проект, проблемы роста и развития: ITIL + DevOps. — Уровни управления серверной инфраструктурой — bootstrap, configuration, deploy. — Cистемы управления серверной инфраструктурой на примере Chef и Ansible, плюсы и минусы. — Обратная связь от приложений, Graylog2. — Как мы деплоим наш геокластер — примеры рецептов Chef и Ansible playbooks. — Существующие проблемы и планы на будущее. В своём выступлении я расскажу, как мы развёртываем API 2ГИС и 2ГИС-Онлайн на серверы в Новосибирске, Москве и Амстердаме. Особый интерес представляет API 2ГИС, так как этот продукт является довольно сложным приложением, с более чем двумя десятками компонентов и приложений: Nginx, Yii, С++, Python, Lua, PostgreSQL, Redis, Node.js и прочее.

Transcript

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