Разворачиваем Hello Word сервис во Fleet

coreos-logoВ этом посте я расскажу, как развернуть свой первый “облачный” сервис через распределённую систему fleet. Это система запуска сервисов в кластере машин на базе CoreOS. Вообще рекомендую прочитать про эту операционку, т.к. там многое сделано и заточено именно под кластерные системы.

Теория

CoreOS – это операционная система, заточенная на работу в кластере. У неё нет пакетного менеджера, т.к. работать в ней софт может только в контейнерах. Ну на самом деле не только, но главное понять что coreos – это хостова операционка для запуска контейнеров с сервисами.

Fleet – это сетевая версия systemd. Точнее сказать, это средство по управлению, балансировкой и оркестрацией сервисами (реализуемые в вид контейнеров) на уровне кластера. Например, мы запускаем сервис на однйо машине, она умирает и сервис запускается на другой. Сейчас мы попробуем это в действии.

fleet-pic

Требования к испытательному стенду

Развернуть можно практически на любой машине. Ставим с офсайтов последнюю версию VirtualBox и Vagrant. Ну и git конечно.

Разворачиваем CoreOS кластер

Должны создаться три виртуальные машины core-01, core-02, core-03.

Узнаём IP адрес любой машины (т.к. они равноправные) и заходим на неё по ssh

Или можно коннектиться так:

Далее уже на одной из нод кластера. Создаём такой вот Unit-файл для fleet hello.service в текущем каталоге юзера core

Теперь сохраняем файл и добаввляем его в кластер.

Ну вот, сервис запущен в кластере.

Важно то, что fleetctl status адекватно работает только на той ноде, на которой запущен в данный момент сервис. Т.е. при подключении к одной ноде и попытке узнать в ней статус сервиса на другой ноде получим ошибку:

Как с этим бороться я пока не знаю, м.б. это нормальное поведение, т.к. fleetctl status является оберткой над systemctl status.

Теперь прибиваем одну из виртуалок и смотрим вывод команды fleetctl list-units.

Сервис убежал на другую виртуалку.

Ссылки

https://coreos.com/blog/coreos-clustering-with-vagrant/
https://coreos.com/fleet/docs/latest/launching-containers-fleet.html

 

 

Leave a Comment