Автоматизированные инструменты развертывания облачных сервисов (Apache Mesos, Docker Compose, Kubernetes)

С развитием интернета и технологий разработки подход к разработке и предоставлению услуг кардинально поменялся. Сегодня в Интернете хранится множество веб-сайтов и разнообразной информации. Вместе с развитием Интернета развивались и веб-сервисы, и способы их размещения на серверах. Первоначально это были собственные серверы компаний, которые имели множество недостатков начиная от необходимости хранить собственный штат сотрудников и заканчивая тем, что ресурсы каждого из серверов не использовались на 100%. Позже появились виртуальные машины, которые тоже имели свои недостатки в виде нужды виртуализировать для каждой виртуальной машины операционную систему и компоненты компьютера. Еще позже появились контейнеры, которые используются сейчас в мире.

Относительно недавно количество контейнеров, которые развертывает компания выросло до сотен, а иногда и тысяч и остро встал вопрос автоматического развертывания таких сервисов. Конкретно эту дилемму и решают такие системы как Kubernetes. Они позволяют автоматически разворачивать множество микросервисов, настроив их один раз конфигурационными файлами, а также поддерживать их работу.

Docker – это технология виртуализации контейнеров. Итак, это как очень легкая виртуальная машина – VM. Это приложение для построения контейнеров, работа которого на самом деле заключается в помощи людям в создании контейнеров и приложений внутри изолированного пространства, а также хранение копий этих контейнеров для того, чтобы затем делиться ими среди своих товарищей по команде и без проблем развертывать такие копии как в облаке, так и на локальном компьютере разработчика для анализа, например, если возникли какие-либо проблемы. Есть несколько проблем, которые решает Docker.

Первая из них о том, что VM является достаточно большим вычислительным ресурсом. Средняя виртуальная машина – это копия операционной системы, работающая поверх гипервизора – программного обеспечения, позволяющая параллельно управлять несколькими операционными системами, запущенными поверх другой операционной системы, работающей поверх физического оборудования, над которым потом находится ваша программа. Это представляет определенные вызовы по скорости и производительности, а также некоторые проблемы в ловкой среде, а также проблемы с быстродействием при развертывании и остановке работы.

Kubernetes – это механизм организации контейнеров (COE) с открытым кодом, вдохновленный проектом Google под названием Borg. Kubernetes используется для организации групп контейнеров, представляющих экземпляры программ, отделенных от машин, на которых они работают. Поскольку количество контейнеров в кластере увеличивается до сотен или тысяч экземпляров, а компоненты приложений развертываются как отдельные контейнеры, Kubernetes приходит на помощь, обеспечивая основу для развертывания, управления, автоматического масштабирования, высокой доступности и соответствующих задач. Контейнеры – это хороший способ объединения и запуска приложения. В производственной среде нужно управлять контейнерами, в которых запущены приложения, и убедиться, что нет простоев. Например, если контейнер опускается, следует запускать другой контейнер. Вот так на помощь приходит Kubernetes.

Kubernetes

Kubernetes предоставляет фреймворк для стабильного запуска распределенных систем. Он заботится о масштабировании и восстановлении после отказа для вашей программы, предоставляет схемы развертывания и т.д. Например, Kubernetes может легко управлять развертыванием сервисов для вашей системы, или если была потеряна связь с одним из контейнеров или даже компьютером, то Kubernetes знает, какие контейнеры и с какими параметрами были запущены на этом компьютере и за считанные секунды запустит все потерянные контейнеры на других компьютерах.

Docker Swarm

Docker Swarm – это альтернативный, собственный Docker механизм оркестрации контейнеров, координирующий размещение и управление контейнерами между несколькими хостами Docker Engine. Docker Swarm позволяет вам общаться непосредственно с множеством контейнеров, вместо того чтобы общаться с каждым Docker контейнером отдельно.

Архитектура Docker Swarm состоит из двух типов узлов, называемых менеджерами и рабочими.

• Узел – это машина, запускающая экземпляр Docker Engine

• Swarm – это скопление экземпляров Docker Engine.

• Узел менеджера – они распределяют и планируют входные задания на узлы Worker и поддерживают состояние кластера. Узлы менеджера могут также дополнительно запускать службы для узлов Worker.

• Рабочие узлы – это экземпляры Docker Engine, ответственные за запуск программ в контейнерах.

• Сервис – это образ микросервиса, такого как Интернет или серверы баз данных. Задание – Служба, запланированная для запуска на узле Worker.

Docker compose

Docker compose – это простой, но мощный инструмент, который используется для запуска нескольких контейнеров в качестве одной службы. Например, предположим, что есть программа, требующая Nginx в качестве веб-сервера и PostgreSQL в качестве службы баз данных. В этом случае с помощью docker-compose можно создать один единственный файл (docker-compose.yml), который создаст оба контейнера как одну службу, не запуская каждый отдельно и управлять также можно как единым контейнером, глядя на одну консоль, в которую будут выводить свои данные все контейнеры, расширить количество контейнеров, или добавить совершенно новые сервисы, также у созданного множества сервисов будет собственная внутренняя сеть, и многие другие преимущества.

Apache Mesos

Apache Mesos, общекластерный менеджер ресурсов, широко используется в нескольких облаках и центрах обработки данных. Mesos стремится обеспечить высокое использование кластеров с помощью тонкозернистого совместного планирования и справедливости ресурсов среди нескольких пользователей благодаря распределению на основе доминирующей справедливости ресурсов. DRF учитывает разные типы ресурсов (ЦП, память, дисковый ввод/вывод), требуемые каждой программой, и определяет долю каждого ресурса кластера, который может быть назначен приложениям. Mesos принял двухуровневую политику планирования: DRF для распределения ресурсов на конкурирующие рамки и планирования уровня задач каждой структурой ресурсов, выделенных на предыдущем шаге. Mesos объединяет все ресурсы в кластере и позволяет четко распределить ресурсы, позволяя и применяя несколько приложений (называемых Mesos framework) для совместного планирования своих задач на виртуальных машинах/узлах. Mesos

использует DRF для распределения ресурсов во фреймворках, а затем фреймворки используют алгоритмы планирования для планирования задач в пределах выделенных ресурсов.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *

11 + 11 =