У меня возникла проблема с пониманием необходимости отдельного сервера обнаружения служб, в то время как мы могли зарегистрировать подчиненный узел на главном узле в подчиненном запуск узла по любому протоколу. Хостинг другой службы кажется излишним для меня.В чем разница между установкой отдельного открытия службы и ее интеграцией в кластерную машину в Docker Swarm
ответ
Docker Swarm существует для создания кластера хостов, работающих на Docker, и планирования контейнеров по кластеру.
Он не включает service discovery, который предоставляется бэкэнд-сервисом, таким как etcd, consul или zookeeper.
- Первая проблема: регистрационная служба и открытие является проблемой инфраструктуры, а не озабоченность применения.
- Вторая проблема: внедрение регистрации услуг и обнаружение, когда инфраструктура и реализация приложения взаимно агностически сложны.
DockerCon делает это различие ясно this morning (Nov. 16th, 2015), с "Докер Стек":
(Графика от @laurelcomics)
Docker сети решает эти проблемы путем поддержки интерфейс (DNS) с подключаемыми компонентами инфраструктуры, которые поддерживают общий интерфейс KV.
Вы можете увидеть consul.io используется в:
- "Easy routing and service discovery with Docker, Consul and nginx"
- "Docker Overlay Networks: That was Easy"
- "Docker DNS
getaddrinfo ENOTFOUN
D"
Это означает, что:
- Консул - это магазин KV (Key/Value), который можно подключить к Рою, чтобы управлять аспектом обнаружения услуг.
- Swarm - это уровень доступа, который обычно является слоем, который содержит компонент шлюза или маршрутизации, который позволяет другим пользователям реально достигать ваших услуг.
(Изображение из «Easy routing and service discovery with Docker, Consul and nginx» статьи, написанной Ladislav Gazo)
Цель состоит в том, чтобы изолировать то, что является проблемой инфраструктуры (Discovery службы) в своем контейнере, отдельно от проблема с инструментом dev (Swarm).