После небольшого лирического отступления давайте вернемся к моей истории.
Итак, моя проблема - надо собрать DCOS кластер, а я понятия не имею, что это вообще такое.
Тут я немного похвастаюсь - за весь свой опыт с самых низов я обрел полезный скилл, как я его называю, native engineering.
Под этим скилом я подразумеваю набор определенных навыков, присущих любому ИТшнику, которые объединяются в одно большое “сакральное знание”. Проще говоря, если вы ИМЕЕТЕ ПРЕДСТАВЛЕНИЕ как “все” (сети, компьютеры, Linux, Windows, базы данных, REST, HTTP вызовы, API вызовы, SSL, configuration management, VCS/SCM, CI/CD и многое многое другое) работает - освоить конкретный продукт, каким бы сложным он ни был, вам не составит труда.
Взять тот же AWS - вас абсолютно не должно волновать, каким образом Амазон содержит свои серверы и системы хранения данных. Вы знаете (и Амазон все время это твердит), что все их сервисы являются API based, а значит любое движение внутри является следствием множества систем, работающих между собой. Вы знаете, что EC2 (виртуальные серверы в облаке Амазона) это виртуальные машины, запускаемые внутри VPC, собираемые из образа ОС, к которым привязывается внутренний и/или внешний IP адрес. Как *конкретно* это делается, вас абсолютно не касается.
Вообще я полюбил Амазон как минимум за то, что он отвязал потребность людей залезать системе под капот.
И вот я приступаю к изучению DCOS. Я знаю, что он дает мне возможность запускать внутри него контейнеры, проводить им проверки и перезапускать, когда те отваливаются.
Чтобы пощупать систему, у меня есть два варианта - запустить кластер локально либо в облаке по заранее заготовленному шаблону.
И как раз тут мой внутренний инженер разбушевался, ведь как это так - запускать что-то, не разобравшись?
Здесь и появляется первое разочарование в себе - DCOS на самом деле очень сложный продукт, состоящий из десятков сложных компонентов, этакий Photoshop из мира DevOps. Если совсем немного окунуться в архитектуру, то получается следующее:
- Есть bootstrap сервер, который хранит в себе дистрибутив DCOS c разными настройками для мастера и агентов.
- Есть мастер - “голова”, которая собирает данные по ресурсам от агентов и распределяет между ними приложения через Marathon
- Есть агент - “тело”, на котором установлен mesos агент, который рапортует мастеру о своих доступных ресурсах.
Повторюсь, это самое элементарное описание. Если вы полезете в документацию или, упаси Бог, в исходный код, то потратите уйму времени, узнав ровным счетом ничего. Но моя роль не заключается в том, чтобы узнать всю подноготную продукта. Мне нужно узнать, как мне с ним работать, как добавлять новых агентов и мастеров и как запускать на нем мои приложения.
Поэтому читателю, попросившему совета о множественных, слишком сложных системах, вот два мои совета:
- Забей болт.
- Отталкивайся от потребностей бизнеса и своих личных.
Ведь тем же самым руководствуются многие люди, когда выбирают на какой языке или фреймворке писать свои приложения - они выбирают то, что им проще дается, и что решает поставленные задачи.
Но что касается тех, кто хочет залезть с головой в продукт Mesosphere, вот мое предложение:
- Поставьте его локально (как, читайте тут -
https://github.com/dcos/dcos-vagrant)
- Поставьте его вручную (есть хорошая подробная документация
https://docs.mesosphere.com/1.11/installing/oss/custom/advanced/)
Но на этом мое исследование не заканчивается, о продолжении (как я изучаю способы поднимать его быстро и легко с помощью Infrastructure-as-Code) я расскажу уже на следующее неделе.
Так что всем хороших выходных и веселой пятницы!