У меня 6 микросервисов, упакованных в докерные контейнеры. На каждом узле рой я установил агента консула, привязанного к IP-адресу хоста и клиенту в режиме 0.0.0.0. Все микросервисы находятся в файле-файле, который я запускаю из диспетчера Swarm. Микросервисы написаны на Java и в bootstrap.yml Я должен указать конечную точку консула. Возможные варианты:Докерный рой, консул и весенний ботинок
- локальные переменная
- $ {} HOSTIP среды
Проблема: - локальный не локальный хост, но контейнер локальный, и я не имею консул агента на контейнер localhost, но хост. - $ {HOSTIP} в файле компоновки я должен предоставить этот env var. Но я не знаю, где Swarm MAnager планирует запланировать запуск микросервиса, поэтому я не могу знать, какой IP-адрес будет использоваться.
Я попытался разоблачить каждый IP-адрес хоста узла, но поскольку я запускаю команду из менеджера, он не будет читать эту переменную.
У вас есть предложения, как это решить? У меня есть кластер consul, 3 менеджера и 3 узла. на каждом менеджере и узле у меня запущен агент консула (в качестве контейнера докеров). Независимо от того, какой тип сетей я использую, я не могу запустить микросервис. Я начал консул как --net = host и --net = bridge, но это не работает.
Есть ли у кого-нибудь идеи? Спасибо заранее.
[Читать] (http://blog.nimbleci.com/2016/08/17/how -to-setup-and-deploy-to-a-1000-node-docker-swarm /) может вам помочь. [Этот тоже] (http://stackoverflow.com/questions/34365604/how-to-create-docker-overlay-network-between-multi-hosts/34434948#34434948). – Auzias
Ознакомьтесь с новой функцией рояля Docker Engine в версии 1.1. Теперь обнаружено обнаружение службы, что означает, что вам больше не понадобится использовать консул для отслеживания экземпляров контейнера. https://docs.docker.com/engine/swarm/. Я также могу порекомендовать следующее, в котором подробно описано, как интегрировать балансировщики нагрузки с новым режимом роя: https://technologyconversations.com/2016/08/01/integrating-proxy-with-docker-swarm-tour-around-docker-1 -12-series/ –