# Surok 0.7
Difrex(mira, 14) — All
2016-10-20 08:42:28


Под свободной личензией(BSD 3-clause) открыт код Surok и вся дальнейшая работа будет продолжена на github.

Surok - простая программа для обнаружения сервисов в Apache Mesos кластерах.
Surok может работать, как на хост системе, так и внутри контейнера в качестве entrypoint. Приложение следит за изменением адресов зависимостей, обновляет конфигурацию и выполняет действие для перезагрузки конфигурации.

Что сейчас реализовано(v0.7):
* Обнаружение сервисов через dns(mesos-dns)
* Шаблоны конфигураций на Jinja2
* Перезапуск контейнера(самого себя) через Marathon API
* Перезагрузка приложение через команду(reload_cmd)
* Актуальная документация на русском языке

Планы на версию 0.6:
* Ослеживание состояния сервиса внутри контейнера
* Явное указание, где запускается surok - в контейнере или нет
* Перезагрузка конфигурации через kill -HUP PID. Если, приложение упало, то запускается вновь(run_cmd).

Планы на версию 0.8:
* Все, что в 0.6
* Проверка состояния сервиса через Marathon API(healthcheck)
* Собвственные проверки через запуск команды
* Обнаружение сервисов через Marathon

Планы на версию 0.9:
* начальная поддержка zookeeper

Известные проблемы:
* Костыль в surok/system.py с переменной First(уйдет в 0.6)
* Неверное сравнение конфигурации для можества сервисов. Что я имею в виду:
dns возвращает список A записей по очереди, т.е. он меняется:
# первый
dig _nginx.testing._tcp.marathon.mesos SRV
;; ADDITIONAL SECTION:
nginx.testing-513q3-s1.marathon.mesos. 20 IN A	10.15.56.157
nginx.testing-y3zdd-s2.marathon.mesos. 20 IN A	10.15.56.250
nginx.testing-r58dj-s1.marathon.mesos. 20 IN A	10.15.56.157
nginx.testing-fbpxm-s0.marathon.mesos. 20 IN A	10.15.56.252
nginx.testing-riirn-s4.marathon.mesos. 20 IN A	10.15.56.156

Склонировать: https://github.com/Difrex/surok

# Re: Surok 0.7
Difrex(mira, 14) — Difrex
2016-10-20 08:45:22


Отправил.

Продолжение:
>dns возвращает список A записей по очереди, т.е. он меняется
# Второй запрос
dig _nginx.testing._tcp.marathon.mesos SRV
;; ADDITIONAL SECTION:
nginx.testing-y3zdd-s2.marathon.mesos. 20 IN A	10.15.56.250
nginx.testing-r58dj-s1.marathon.mesos. 20 IN A	10.15.56.157
nginx.testing-fbpxm-s0.marathon.mesos. 20 IN A	10.15.56.252
nginx.testing-riirn-s4.marathon.mesos. 20 IN A	10.15.56.156
nginx.testing-513q3-s1.marathon.mesos. 20 IN A	10.15.56.157

Т.е. это правильное подение dns сервера. Но surok пока не умеет корректно обрабатывать такие изменения и считает конфигурацию изминившийся.
Бедет исправлено в ближайшем корректирующем релизе ветки 0.7