3. Кто здесь?
● Максим, администратор серверных систем
● Отвечаю за производительность
● Состою в скромной команде архитекторов
● Холю и лелею инфраструктуру
До Колёс:
● много VoIP’а на цисках и линуксах
● линуксы дома, на работе, в отпуске…
10. OpenVZ
Минусы:
● одно ядро на всех
● «хитрое» управление памятью (MongoDB и JVM передают
привет!)
● ФС для контейнеров
● видимость ограничена
● постоянные танцы с бубном вокруг user_beancounters
11. KVM
Плюсы:
● полная изоляция ВМ друг от друга и от хоста
● MongoDB и JVM улыбаются и пляшут
● быстрая работа с диском
● видимость всех ресурсов ВМ
● virtio, vhost_net, KSM
13. OpenVZ, давай, до свидания!
● Несколько недель не спим
● Переносим контейнеры в ВМ
● …
● PROFIT!
P.S. До сих пор KVM ни разу не становился настолько
узким местом, чтобы хотелось от него отказаться.
15. Немного про overprovisioning
Он же оверселлинг, он же оверсабскрайбинг, он же
большая радость хостера и засада клиента:
● позволяет продать больше, чем имеешь
● провоцирует «драку» за ресурсы
● распределение ресурсов становится
«тяжелой», но приоритетной задачей
● совершенно нам не подходит
17. Почему же?
● большая коробка — половину в другой ЦОД не
отпилишь
● аренда места в ЦОД стоит космических денег
● заполненность на 25% экономически невыгодна
● сэкономили на сетевой части
● недешевый бренд
18. Наш выбор — Supermicro Twin²
● один такой заменит блэйд
● компактный
● производительный
● в 4 раза меньше
● в 2 раза дешевле
● недорогой бренд
● даже с учётом электричества, аренда обходится
дешевле
19. GlusterFS
● как NFS, только от Red Hat
● плюшки в виде репликации
● и распределенности
● которые никто не заюзал
● ибо хранилище было одно
● в самом низу — родная ФС (ext3/4, xfs)
20. Что лежало на хранилке
Объявления:
/mnt/data/live/0007/654/321/data.xml
Фотографии:
/mnt/data/live/0007/654/321/photos/1/60x45.jpg
/mnt/data/live/0007/654/321/photos/1/120x90.jpg
/mnt/data/live/0007/654/321/photos/1/400x300.jpg
/mnt/data/live/0007/654/321/photos/1/full.jpg
~ 2 ТБ данных к середине 2012-го
24. Проблема
Задержки:
● HDD
● сетевая ФС
● ФС как структура вообще
● множественный доступ (кэш не спасёт)
● бэкап данных за неделю длится неделю
25. Решение для объявлений
● Никаких каталогов
● Никаких файлов
● Вкусный JSON вместо XML
● Репликация
● Резервное копирование (с бубном)
26. В итоге
● драматическое падение задержек
● катастрофический прирост производительности
● ещё два года Колёса живут без шардинга
27. Решение для фотографий
● храним объекты
● намного меньше метаданных
● доступ по HTTP
● nginx для кэша и HTTPS
● распределенная система
● избыточно (3 копии данных)
● задержки по-прежнему высоковаты :(
28. Цифры (Swift vs Хранилка)
● стоимость: 30% старой системы
● расходы: на 20% выше
● тройная избыточность
● защита от сбоев
● распределенность
29. Миграция
1. поднимаем новую систему
2. включаем запись в обе системы
3. запускаем перенос данных из старой в новую
систему
4. начинаем читать с новой системы
5. дожидаемся окончания переноса
6. ждём «на всякий случай»
7. отключаем старую систему
30. Фотографии (сейчас)
● 2к запросов/сек
● 260 Мбит/сек
● 220 ГБ кэш (memcached)
● кэш спасает, но продолжаем ускоряться
● SSD для метаданных
32. 2013 …
● появились мобильные приложения
● доросли до конца года до 1.5М просмотров и
120к визитов
● масштабируемся каждый день
● все хотят в API, а API всех ненавидит
● присутствуем в двух ЦОДах
34. Немного уже не узких мест
● CDN для фотографий и статики
○ два ЦОДа
○ балансировка на уровне DNS
● загрузка фото
○ кэш для свежезагруженных изображений
○ фоновый перенос в Swift
● жесткие диски
○ SSD уже не дорого
○ и очень быстро
35. Автоматизация
● серверов всё больше
● конфигурации всё изощрённее
● зависимость A->B->C->D->A
● нужно же что-то делать, Петька!
36. Chef
● сервер управления конфигурацией
● для всех *nix
● пишем рецепты, а оно их исполняет
● только там, где нужно
● попутная инвентаризация
● только pull
● пришлось учить ruby
● программисты смеялись :(
37. Примеры
● добавлять все новые серверы в мониторинг
● установить nginx на серверы группы web
● найти все серверы, с драйвером e1000 и
наложить патч
40. Что дальше?
● вчерашние паттерны уже антипаттерны
● на горизонте маячит HTTP2
● оптимизация под dial-up снова в моде
● только теперь 1080p и 4K
● зато даже в самолёте