Под свободной личензией(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