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.