Mesos-dns, лучшая практика для работы с портами

Я новичок в сервисе Discovery и кластеризованных системах. Я начал экспериментировать с Mesos и Marathon для развертывания контейнеров Docker, Marathon REST API и пользовательский интерфейс, похоже, делают хорошую работу.

Моя проблема - фактическое обнаружение развернутых служб. В целях тестирования я развернул кластер Kafka, масштабированный до 3-х экземпляров через Marathon, так как я сделал это с тестовым кластером MongoDB. Клиент Mesos-DNS дает мне запись типа kafka.marathon.mesos и mongo.marathon.mesos, которая подразумевает динамически отображаемый порт от хоста к контейнеру. Проблема в том, что моему клиенту явно нужна информация о целевом порту. Существует ли общий способ получения данных порта из службы автоматически и динамически? Что делать с приложениями, открывающими несколько портов?

Мои до сих пор: - Выполнение вызова REST для получения статуса о развернутом приложении и как-то извлечения соответствующих данных - Выполнение поиска SRV DNS и извлечение необходимых данных - Наличие какого-то "мастера", статически связанного с портом, с динамическими "клиентами".

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

Ответ 1

Ты на месте. Недавно я опубликовал презентацию в XebiCon по этой теме и планирую опубликовать сообщение в блоге с подробностями о настройке, в т.ч. GitHub репо. Для начала вы можете взглянуть на реализацию Python для части потребления HTTP API.

UPDATE: сообщение в блоге теперь доступно here.