SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
Масштабирование
сервисов с помощью
Apache Mesos
Введение в систему управления пулом ресурсов Mesos и ее
использование для создания масштабируемых приложений с помощью
фреймворков Marathon, Chronos, Singularity
Автор: Иван А. Кудрявцев
mailto: kudryavtsev_ia@bw-sw.com
www: http://bw-sw.com/
В чем проблема
1. Как осуществить “запуск множества экземпляров сервиса на
выделенных серверах”?
2. Как управлять запущенными экземплярами (останавливать,
масштабировать, перезапускать, удалять)?
Источники проблемы (1)
1. Горизонтально масштабируемые сервисы
a. две единицы обычного серверного оборудования с 2мя процессорами дешевле чем
1 единица с 4мя:
i. Supermicro 4xXeon E7530 / 256 GB RAM = 927 000
ii. Supermicro 2xE5-2603v3 / 128 GB RAM = 220 000
iii. 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 000
ii. Supermicro 2xE5-2603v3 / 128 GB RAM = 220 000
Тренд: построение систем за счет избыточного масштабирования на обычных
компонентах
Источники проблемы (2)
1. Архитектура, основанная на микросервисах
дизайн подразумевает запуск и контроль множества разнородных
сервисов и организацию взаимодействия между ними с
использованием открытых интерфейсов
2. Широкое изменение рабочей нагрузки на сервис в течение дня:
a. ядро сервиса на собственной инфраструктуре
b. арендованная инфраструктура (Cloud) по запросу (автоматизированное
подключение и отключение мощностей внешних поставщиков по API)
Проблемы управления инфраструктурой
1. Добавление и удаление новых ресурсов инфраструктуры
2. Аккаунтинг использования ресурсов
3. Планирование использования ресурсов
4. Справедливое распределение ресурсов между задачами
5. Мониторинг задач и обеспечение их работоспособности
6. Обнаружение в комплексных сервисах (Discovery)
7. Обеспечение безопасности и множественного доступа к пулу
ресурсов
Методы управления инфраструктурой
1. Управление вычислительными узлами
a. IPMI (IaaS) - включение и отключение аппаратных узлов
b. Amazon EC2 API (IaaS) - выделение и освобождение виртуальных машин в Amazon
c. Openstack/Cloudstack API - выделение и освобождение виртуальных машин в частных и
публичных облаках (например, Rackspace)
2. Управление конфигурациями
a. Chef
b. Puppet
c. Ansible
3. Управление пулом процессоров и памяти:
a. Apache Mesos (generic resource planner) - mature
b. Hadoop YARN (batch resource planner) - mature
c. Docker Swarm (docker specific) - rookie
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/
Marathon Framework
● Каркас для запуска и управления долгоживущими процессами в
Mesos:
○ Mesos native containerizer
○ Mesos docker containerizer
● Интерфейс
○ SPA UI
○ REST API
● Стабильная реализация (production-ready)
● Язык реализации: Java
Chronos Framework
● Каркас для запуска и управления долгоживущими процессами в
Mesos по расписанию (Cron-like):
○ Mesos native containerizer
○ Mesos docker containerizer
● Интерфейс
○ SPA UI
○ REST API
● Стабильная реализация (production-ready)
● Язык реализации: Java
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": 3
26. }
27. ]
28. }
Mesos run command via REST
$ curl -i -H 'Content-Type: application/json' -d "@Docker.json" localhost:
5052/v2/apps
Сложности
1. Выбор узлов, на которых можно развертывать сервис. Проблема
решаема заданием узлам tag-ов и указанием совместимых tag-ов
при создании задачи.
2. Обнаружение сервисов. Заранее не известно где запустится
экземпляр, поэтому необходима интеграция с сервисом
конфигурации (Zookeeper, Etcd, Consul)
a. внешняя интеграция (через API Mesos, Marathon)
b. внутренняя интеграция (подготовка контейнеров)
What’s next
1. Singularity от HubSpot - all-in-one framework более продвинутый чем
Marathon:
a. Marathon + Chronos в одном флаконе
b. Различные типы запуска:
i. service
ii. worker
iii. CRON-type
iv. on-demand
c. embedded load-balancing (using Baragon + HAProxy + Nginx)
© Bitworks Ltd., 2015
Спасибо за внимание

Contenu connexe

Tendances

Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Ontico
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
Vadim Madison
 
Software Transactional Memory
Software Transactional MemorySoftware Transactional Memory
Software Transactional Memory
Vadim Tsesko
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
 
А.Могильников "Специализированные облака", DUMP-2014
А.Могильников "Специализированные облака", DUMP-2014А.Могильников "Специализированные облака", DUMP-2014
А.Могильников "Специализированные облака", DUMP-2014
it-people
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
fudz1k
 

Tendances (20)

Базы данных. Hash & Cache
Базы данных. Hash & CacheБазы данных. Hash & Cache
Базы данных. Hash & Cache
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
 
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.jsВячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
 
Базы данных. Haystack
Базы данных. HaystackБазы данных. Haystack
Базы данных. Haystack
 
Базы данных. Cassandra
Базы данных. CassandraБазы данных. Cassandra
Базы данных. Cassandra
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
 
Настройка Kubernetes: tips ans tricks
Настройка Kubernetes: tips ans tricksНастройка Kubernetes: tips ans tricks
Настройка Kubernetes: tips ans tricks
 
pgday17. How shared memory works in modern PostgreSQL
pgday17. How shared memory works in modern PostgreSQLpgday17. How shared memory works in modern PostgreSQL
pgday17. How shared memory works in modern PostgreSQL
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Оптимизации уровня CPU, Андрей Акиньшин (JetBrains)
Оптимизации уровня CPU,  Андрей Акиньшин (JetBrains)Оптимизации уровня CPU,  Андрей Акиньшин (JetBrains)
Оптимизации уровня CPU, Андрей Акиньшин (JetBrains)
 
Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleThumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - Ansible
 
Software Transactional Memory
Software Transactional MemorySoftware Transactional Memory
Software Transactional Memory
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_ru
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
А.Могильников "Специализированные облака", DUMP-2014
А.Могильников "Специализированные облака", DUMP-2014А.Могильников "Специализированные облака", DUMP-2014
А.Могильников "Специализированные облака", DUMP-2014
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
 

Similaire à Scaling services with apache mesos (and docker)

Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ontico
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформу
Vadim Kruchkov
 
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
jam_team
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
dddpaul
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
Ontico
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Ontico
 
Готовые решения Cisco для построения «частного облака»
Готовые решения Cisco для построения «частного облака»Готовые решения Cisco для построения «частного облака»
Готовые решения Cisco для построения «частного облака»
Cisco Russia
 
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
CodeFest
 

Similaire à Scaling services with apache mesos (and docker) (20)

SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
 
Yet Another PaaS
Yet Another PaaSYet Another PaaS
Yet Another PaaS
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформу
 
Нюансы запуска приложений в Kubernetes
Нюансы запуска приложений в KubernetesНюансы запуска приложений в Kubernetes
Нюансы запуска приложений в Kubernetes
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...
 
Middleware
MiddlewareMiddleware
Middleware
 
Веб-кластер
Веб-кластерВеб-кластер
Веб-кластер
 
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
 
DC/OS more than PAAS
DC/OS more than PAASDC/OS more than PAAS
DC/OS more than PAAS
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Технико-коммерческое предложение "База знаний"
Технико-коммерческое предложение "База знаний"Технико-коммерческое предложение "База знаний"
Технико-коммерческое предложение "База знаний"
 
Готовые решения Cisco для построения «частного облака»
Готовые решения Cisco для построения «частного облака»Готовые решения Cisco для построения «частного облака»
Готовые решения Cisco для построения «частного облака»
 
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
 

Scaling services with apache mesos (and docker)

  • 1. Масштабирование сервисов с помощью Apache Mesos Введение в систему управления пулом ресурсов Mesos и ее использование для создания масштабируемых приложений с помощью фреймворков Marathon, Chronos, Singularity Автор: Иван А. Кудрявцев mailto: kudryavtsev_ia@bw-sw.com www: http://bw-sw.com/
  • 2. В чем проблема 1. Как осуществить “запуск множества экземпляров сервиса на выделенных серверах”? 2. Как управлять запущенными экземплярами (останавливать, масштабировать, перезапускать, удалять)?
  • 3. Источники проблемы (1) 1. Горизонтально масштабируемые сервисы a. две единицы обычного серверного оборудования с 2мя процессорами дешевле чем 1 единица с 4мя: i. Supermicro 4xXeon E7530 / 256 GB RAM = 927 000 ii. Supermicro 2xE5-2603v3 / 128 GB RAM = 220 000 iii. 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 000 ii. Supermicro 2xE5-2603v3 / 128 GB RAM = 220 000 Тренд: построение систем за счет избыточного масштабирования на обычных компонентах
  • 4. Источники проблемы (2) 1. Архитектура, основанная на микросервисах дизайн подразумевает запуск и контроль множества разнородных сервисов и организацию взаимодействия между ними с использованием открытых интерфейсов 2. Широкое изменение рабочей нагрузки на сервис в течение дня: a. ядро сервиса на собственной инфраструктуре b. арендованная инфраструктура (Cloud) по запросу (автоматизированное подключение и отключение мощностей внешних поставщиков по API)
  • 5. Проблемы управления инфраструктурой 1. Добавление и удаление новых ресурсов инфраструктуры 2. Аккаунтинг использования ресурсов 3. Планирование использования ресурсов 4. Справедливое распределение ресурсов между задачами 5. Мониторинг задач и обеспечение их работоспособности 6. Обнаружение в комплексных сервисах (Discovery) 7. Обеспечение безопасности и множественного доступа к пулу ресурсов
  • 6. Методы управления инфраструктурой 1. Управление вычислительными узлами a. IPMI (IaaS) - включение и отключение аппаратных узлов b. Amazon EC2 API (IaaS) - выделение и освобождение виртуальных машин в Amazon c. Openstack/Cloudstack API - выделение и освобождение виртуальных машин в частных и публичных облаках (например, Rackspace) 2. Управление конфигурациями a. Chef b. Puppet c. Ansible 3. Управление пулом процессоров и памяти: a. Apache Mesos (generic resource planner) - mature b. Hadoop YARN (batch resource planner) - mature c. Docker Swarm (docker specific) - rookie
  • 7. 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/
  • 8.
  • 9. Marathon Framework ● Каркас для запуска и управления долгоживущими процессами в Mesos: ○ Mesos native containerizer ○ Mesos docker containerizer ● Интерфейс ○ SPA UI ○ REST API ● Стабильная реализация (production-ready) ● Язык реализации: Java
  • 10. Chronos Framework ● Каркас для запуска и управления долгоживущими процессами в Mesos по расписанию (Cron-like): ○ Mesos native containerizer ○ Mesos docker containerizer ● Интерфейс ○ SPA UI ○ REST API ● Стабильная реализация (production-ready) ● Язык реализации: Java
  • 11. 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": 3 26. } 27. ] 28. }
  • 12. Mesos run command via REST $ curl -i -H 'Content-Type: application/json' -d "@Docker.json" localhost: 5052/v2/apps
  • 13. Сложности 1. Выбор узлов, на которых можно развертывать сервис. Проблема решаема заданием узлам tag-ов и указанием совместимых tag-ов при создании задачи. 2. Обнаружение сервисов. Заранее не известно где запустится экземпляр, поэтому необходима интеграция с сервисом конфигурации (Zookeeper, Etcd, Consul) a. внешняя интеграция (через API Mesos, Marathon) b. внутренняя интеграция (подготовка контейнеров)
  • 14. What’s next 1. Singularity от HubSpot - all-in-one framework более продвинутый чем Marathon: a. Marathon + Chronos в одном флаконе b. Различные типы запуска: i. service ii. worker iii. CRON-type iv. on-demand c. embedded load-balancing (using Baragon + HAProxy + Nginx)
  • 15.
  • 16. © Bitworks Ltd., 2015 Спасибо за внимание