В чем разница между размещением отдельного обнаружения службы и его интеграцией в компьютер кластера в Docker Swarm

У меня проблемы с пониманием необходимости отдельного сервера обнаружения служб, в то время как мы могли бы зарегистрировать подчиненный узел на главном узле при запуске подчиненного узла по любому протоколу. Хостинг другого сервиса мне кажется излишним.

1 ответ

Docker Swarm предназначен для создания кластера хостов, на которых выполняется Docker, и планирования контейнеров по всему кластеру.
Он не включает в себя обнаружение службы, которая предоставляется серверной службой, такой как etcd, консул или zookeeper.

  • Первая проблема: регистрация и обнаружение услуг - это проблема инфраструктуры, а не проблема приложения.
  • Вторая проблема: реализация регистрации и обнаружения сервисов, когда инфраструктура и реализация приложений взаимно независимы, является сложной задачей.

DockerCon проясняет это различие сегодня утром (16 ноября 2015 г.) с помощью "стека докеров":

введите описание изображения здесь
(Графика от @laurelcomics)

Сеть Docker решает эти проблемы, поддерживая интерфейс (DNS) с подключаемыми компонентами инфраструктуры, которые придерживаются общего интерфейса KV.

Вы можете увидеть файл consul.io, используемый в:

Это означает:

  • Consul - это хранилище KV (Key/Value), которое можно подключить к Swarm для управления аспектом обнаружения услуг.
  • Swarm - это уровень доступа, который обычно представляет собой уровень, который содержит шлюз или компонент маршрутизации, который позволяет другим реально достигать ваших услуг.

https://cdn-images-1.medium.com/max/800/1*aQpT7eAmwhWItNuIi9PXFw.png

(Изображение из статьи " Легкая маршрутизация и поиск сервисов с помощью Docker, Consul и nginx ", написанной Ладиславом Газо)

Цель состоит в том, чтобы изолировать объект инфраструктуры (служба обнаружения) в собственном контейнере отдельно от объекта разработки (Swarm).

Другие вопросы по тегам