Речь пойдет об особенностях использования контейнеров в публичных услугах. Почему linux upstream containers пока не подходят на эту роль? По каким причинам OpenVZ справляется с задачей, но не полностью? Какие фишки контейнеров мы хотим иметь в будущем?
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Использование контейнеризации в среде массового хостинга
1. Использование контейнеризации
в среде массового хостинга
Павел Одинцов
Технический директор FastVPS
pavel.odintsov@gmail.com
fastvps.ru
pavel.odintsov@gmail.com
2. Схема контейнеры
Из чего состоят контейнеры?
Управляющее ПО
Ядро
fastvps.ru
pavel.odintsov@gmail.com
3. Ядро
Ядерная составляющая
PID namespace
Network namespace
Memory cgroup
Mount namespace
User namespace
CPU cgroup
IPC namespace
UTS namespace
Blkio cgroup (disk)
fastvps.ru
pavel.odintsov@gmail.com
7. Изоляция
В чем особенности задачи изоляции?
Известно, какое ПО у нас работает в контейнере
!
Есть возможность оценки, какие типы ресурсов и в каком количестве требует ПО
!
Имеется доступ к конфигурации для оптимизации ПО
!
Имеется возможность регулярного обновления ПО
!
Использование заведомо более-менее адекватного ПО
fastvps.ru
pavel.odintsov@gmail.com
8. VPS/VDS
В чем особенности VPS/VDS?
• Мы не знаем ничего о типе нагрузки и требуемых ресурсах
• Мы не имеем доступа к конфигурации
• Безопасность на очень низком уровне - велика вероятность полной компрометации
• Возможна спланированная «атака» на ресурсы (исчерпание памяти, дисковых ресурсов)
• Возможна спланированная «атака» на безопасность / устойчивость сервиса
• Высокая вероятность входящих DoS/DDoS атак
• Высокая вероятность исходящих DoS/DDoS атак, а также иной зловредной активности
• Необходимость предоставить полноценную Linux среду, а не только «частичную»
изоляцию
fastvps.ru
pavel.odintsov@gmail.com
9. Проблемы
Проблемы Linux Upstream Containers
• Проблемы в изоляции ресурсов, например, ioctl и многие опасные syscall не изолированы
• Нет полной изоляции proc fs
• Нет возможности гранулированного контроля за расходом ресурсов IPC, памяти, сокетов, буферов
ядра. Как следствие - возможность достижения лимита для хост-сервера.
• Отсутствие удобной в эксплуатации реализации файловых систем для контейнеров
• Отсутствие Live Migration (Update от 23 января 2013: рабочий прототип: https://github.com/xemul/
p.haul)
• Нет возможности ограничить число процессов (process counter cgroup так и не принята в ядро)
fastvps.ru
pavel.odintsov@gmail.com
10. OpenVZ
OpenVZ - отсутствие проблем
•Нет проблем в изоляции ресурсов, напимер, ioctl и многие опасные syscall изолированы
•Есть полная изоляция proc fs
•Есть возможности гранулированного контроля за расходом ресурсов IPC, памяти,
сокетов, буферов ядра
•Есть удобная в эксплуатации реализации файловая система для контейнеров - ploop
•Есть Live Migration
•Есть возможности ограничить число процессов
fastvps.ru
pavel.odintsov@gmail.com
11. Наши будни
Атаки на контейнеризацию
• Входящие DDoS атаки (от 10 kpps до1 Mpps, до 3-5 Gbps и более). От деградции сети на хост-сервере до перегрузки
оборудования Дата Центра
• Исходящие DDoS атаки (от 50 000 пакетов/секунду и более). Приводит к сильной деградации производительности
сети
• Попытки размещения командных центров ботнетов. Деградация сети где-то на 50-100 серверах сторонних компаний
• Форк бомбы или сбои ПО приводящие к аналогичному эффекту.
• Перегрузка iptables conntrack сервера при некорректной конфигурации фаерволла либо при очень высоком трафике
на сервис. Приводит к полной недоступности всего сервера
• Баги ядра
fastvps.ru
pavel.odintsov@gmail.com
12. OpenVZ FastVPS
OpenVZ в FastVPS - цифры
• 2 Дата Центра
• Около 200 хост-серверов
• Десятки тысяч контейнеров
• 30 различных дистрибутивов ОС
• 60 фич риквестов и баг репортов в проект OpenVZ
fastvps.ru
pavel.odintsov@gmail.com
13. OpenVZ FastVPS
OpenVZ в FastVPS - технологии
• Дистрибутив: CentOS 5/CentOS 6
• Ядро: OpenVZ 2.6.32 актуальной версии (если у вас 2.6.18 - срочно обновитесь!)
• Файловая система: ext4 (и местами ext3)
• Тип OpenVZ дисков: simfs, ploop
• Тип используемого контроллера ресурсов: UBC совместно с vSWAP
• VzAPI - собственное решение на Go для управления контейнерами OpenVZ по
сети с использованием REST/JSON/SSL
fastvps.ru
pavel.odintsov@gmail.com
14. Будущее
Что мы хотим от контейнеров в будущем?
•Большего уровня изоляции и возможность максимально гранулированного контроля всех ресурсов
•Дружбы между всеми контейнеризациями! :)
•Общего формата шаблонов ОС для контейнеризации: https://github.com/containers/container-rfc
•Эффективной системы хранения для контейнеров (даже ploop из OpenVZ имеет ряд проблем)
•Динамического распределения ресурсов
•Более крутого user space средства для управления и мониторинга
•Отсутствия полноценного Linux дистрибутива на хост-сервере, возможно, загрузка по сети или упрощенный root fs, см. CoreOs
•Проблемы с файловыми системами и централизованным хранением
•Контейнеров работающих не нескольких севрерах
•Сетевых (и распределенных) файловых систем (кто внимательный приглашаем на тест: https://openvz.org/Pstorage)
fastvps.ru
pavel.odintsov@gmail.com
15. Информация
Что можно почитать еще?
•http://OpenVZ.org - официальный сайт проекта
•http://www.slideshare.net/kolyshkin/ - Презентации от Кирилла Колышкина
•Контейнеры — это будущее облаков: http://habrahabr.ru/company/FastVPS/blog/208650/
•Контейнеризация на Linux в деталях — LXC и OpenVZ. Часть 1: http://habrahabr.ru/company/FastVPS/
blog/209072/
•Контейнеризация на Linux в деталях — LXC и OpenVZ Часть 2: http://habrahabr.ru/company/FastVPS/
blog/209084/
•http://LWN.net - общие новости из мира ядра Linux
fastvps.ru
pavel.odintsov@gmail.com