Масштабирование сервисов с помощью apache mesos
TRANSCRIPT
![Page 1: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/1.jpg)
Масштабирование сервисов с помощью Apache MesosВведение в систему управления пулом ресурсов Mesos и ее использование для создания масштабируемых приложений с помощью фреймворков Marathon, Chronos, Singularity
Автор: Иван А. Кудрявцев mailto: [email protected]: http://bw-sw.com/
![Page 2: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/2.jpg)
В чем проблема
1. Как осуществить “запуск множества экземпляров сервиса на выделенных серверах”?
2. Как управлять запущенными экземплярами (останавливать, масштабировать, перезапускать, удалять)?
![Page 3: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/3.jpg)
Источники проблемы (1)
1. Горизонтально масштабируемые сервисыa. две единицы обычного серверного оборудования с 2мя процессорами дешевле чем
1 единица с 4мя:i. Supermicro 4xXeon E7530 / 256 GB RAM = 927 000
ii. Supermicro 2xE5-2603v3 / 128 GB RAM = 220 000iii. Supermicro 1xE3-1231v3 / 32 GB RAM = 131 000
b. 10 серверов Supermicro дешевле чем 5 серверов HP при равной мощности (STSS.ru):i. HP ProLiant DL60 Gen9 2xE5-2603v3 / 128 GB RAM = 425 000ii. Supermicro 2xE5-2603v3 / 128 GB RAM = 220 000
Тренд: построение систем за счет избыточного масштабирования на обычных компонентах
![Page 4: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/4.jpg)
Источники проблемы (2)
1. Архитектура, основанная на микросервисах
дизайн подразумевает запуск и контроль множества разнородных сервисов и организацию взаимодействия между ними с использованием открытых интерфейсов
2. Широкое изменение рабочей нагрузки на сервис в течение дня:a. ядро сервиса на собственной инфраструктуре
b. арендованная инфраструктура (Cloud) по запросу (автоматизированное подключение и отключение мощностей внешних поставщиков по API)
![Page 5: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/5.jpg)
Проблемы управления инфраструктурой
1. Добавление и удаление новых ресурсов инфраструктуры2. Аккаунтинг использования ресурсов3. Планирование использования ресурсов4. Справедливое распределение ресурсов между задачами5. Мониторинг задач и обеспечение их работоспособности6. Обнаружение в комплексных сервисах (Discovery)7. Обеспечение безопасности и множественного доступа к пулу
ресурсов
![Page 6: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/6.jpg)
Методы управления инфраструктурой1. Управление вычислительными узлами
a. IPMI (IaaS) - включение и отключение аппаратных узловb. Amazon EC2 API (IaaS) - выделение и освобождение виртуальных машин в Amazonc. Openstack/Cloudstack API - выделение и освобождение виртуальных машин в частных и
публичных облаках (например, Rackspace)2. Управление конфигурациями
a. Chefb. Puppetc. Ansible
3. Управление пулом процессоров и памяти:a. Apache Mesos (generic resource planner) - matureb. Hadoop YARN (batch resource planner) - maturec. Docker Swarm (docker specific) - rookie
![Page 7: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/7.jpg)
Apache Mesos: экосистема
1. Apache Zookeeper: 1-N шт (DLM, конфигурация).2. Apache Mesos Master: 1 - M шт (управление планированием ресурсов)3. Apache Mesos Slave: M+ (агент на узле исполнения)4. Каркасы Mesos: Marathon, Chronos, Singularity, etc.
a. http://mesos.apache.org/documentation/latest/mesos-frameworks/
![Page 8: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/8.jpg)
![Page 9: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/9.jpg)
Marathon Framework
● Каркас для запуска и управления долгоживущими процессами в Mesos:○ Mesos native containerizer○ Mesos docker containerizer
● Интерфейс○ SPA UI○ REST API
● Стабильная реализация (production-ready)● Язык реализации: Java
![Page 10: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/10.jpg)
Chronos Framework
● Каркас для запуска и управления долгоживущими процессами в Mesos по расписанию (Cron-like):○ Mesos native containerizer○ Mesos docker containerizer
● Интерфейс○ SPA UI○ REST API
● Стабильная реализация (production-ready)● Язык реализации: Java
![Page 11: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/11.jpg)
1. {2. "id": "bridged-webapp",3. "cmd": "python3 -m http.server 8080",4. "cpus": 0.5,5. "mem": 64.0,6. "instances": 2,7. "container": {8. "type": "DOCKER",9. "docker": {
10. "image": "python:3",11. "network": "BRIDGE",12. "portMappings": [13. { "containerPort": 8080, "hostPort": 0, "servicePort": 9000, "protocol": "tcp" },14. { "containerPort": 161, "hostPort": 0, "protocol": "udp"}15. ]16. }17. },18. "healthChecks": [19. {20. "protocol": "HTTP",21. "portIndex": 0,22. "path": "/",23. "gracePeriodSeconds": 5,24. "intervalSeconds": 20,25. "maxConsecutiveFailures": 326. }27. ]28. }
![Page 12: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/12.jpg)
Mesos run command via REST
$ curl -i -H 'Content-Type: application/json' -d "@Docker.json" localhost:5052/v2/apps
![Page 13: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/13.jpg)
Сложности
1. Выбор узлов, на которых можно развертывать сервис. Проблема решаема заданием узлам tag-ов и указанием совместимых tag-ов при создании задачи.
2. Обнаружение сервисов. Заранее не известно где запустится экземпляр, поэтому необходима интеграция с сервисом конфигурации (Zookeeper, Etcd, Consul)a. внешняя интеграция (через API Mesos, Marathon)b. внутренняя интеграция (подготовка контейнеров)
![Page 14: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/14.jpg)
What’s next
1. Singularity от HubSpot - all-in-one framework более продвинутый чем Marathon:a. Marathon + Chronos в одном флаконеb. Различные типы запуска:
i. serviceii. workeriii. CRON-typeiv. on-demand
c. embedded load-balancing (using Baragon + HAProxy + Nginx)
![Page 15: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/15.jpg)
![Page 16: Масштабирование сервисов с помощью Apache Mesos](https://reader034.vdocuments.mx/reader034/viewer/2022042605/586f8fa51a28ab54768b76b1/html5/thumbnails/16.jpg)
© Bitworks Ltd., 2015
Спасибо за внимание