Top Banner
Chef и Ansible в инфраструктуре 2ГИС
29

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

Dec 25, 2014

Download

Documents

DevDay

— Интернет-проект, проблемы роста и развития: 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 и прочее.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: «Chef и Аnsible в инфраструктуре 2ГИС» — Артём Силенков, 2ГИС

Chef и Ansible в инфраструктуре 2ГИС

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

О чём речь• Проблемы роста и развития

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

• Chef и Ansible

• Graylog 2 — как инструмент обратной связи

• Деплой геокластера

• Проблемы и планы на будущее

2

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

Что имеем• Новосибирск, Москва, Дронтен

• 20 серверов на каждый ДЦ

• 300 человек + 4 администратора

• 30 млн. пользователей

• 1 500 rps на фронтенд в каждый ДЦ

3

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

ITIL vs DevOps

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

Было, 2010• 2 сервера

• 10 человек

• Мало кода

5

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

Стало, 2013• 50 серверов

• геокластер

• 300 человек

6

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

Задачи

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

1. Однородность среды

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

2. Очень частые релизы

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

3. Много разного железа

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

4. Сплиттесты

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

5. Документация

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

Серверная инфраструктура• Разработка

• Тестирование

• Staging

• Production

13

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

Bootstrap → Configuration → Deploy

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

Эволюция1. Обновление руками

2. Простые скрипты

3. Приложения для деплоя

4. Приложения для приложений для деплоя

15

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

16

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

17

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

Плюсы• Конфигурация как код

• Cookbooks (playbook) — сразу и документация

• Простота, понятность, могущество

• Целостное видение инфраструктуры

• Единая среда development, test и production

18

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

Минусы• Надо аккуратно писать рецепты

• Агенты, демоны, предварительная настройка

• PULL / PUSH

• Дирижёр для дирижёра

19

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

Graylog 2 — дополняет Chef• Информация о состоянии системы

• Всё в одном месте от всех компонентов

• Поиск, индексация, агрегация и графики

20

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

21

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

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

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

- 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

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

Проблемы

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

Геораспределенность• Задержки и неполадки сети

• Временные зоны

• Отказоустойчивость геозоны

25

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

Chef• Усложняется с каждым релизом

• Демоны и контроль их состояния

26

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

Будущее• Деплоим приложение, а не инфраструктуру (Heroku)

• Private Clouds, автобалансировка нагрузки, сервер сценариев

• Одна кнопка и всё работает

• Облака всё

27

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

Спасибо!

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

Вопросы?