Pull to refresh

Comments 13

Так совпало, что я сейчас изучаю эту же тему со связкой Ansible+Consul+Docker Swarm. Вы используете для service discovery при построении кластера Docker Swarm подключение к Consul первый IP адрес в датацентре. В таком случае, при сбое этой ноды кластера Consul, у вас развалится кластер Docker Swarm. Это проверено на личном опыте. Правда я кластеризую еще и роль Docker Swarm Manager.

В issue репозитария Swarm на гитхабе разработчиков просили дать возможность указывать несколько адресов нод Consul, но это невозможно из-за ограничение go библиотеки клиента Consul, которая используется в коде Swarm. В итоге обсуждений пришли к решению использовать в качестве адреса подключение consul.service.consul. Если указать в качестве дополнительных DNS адресов на холстах в датацентре адреса нод кластера Consul, то в вашем случае consul.service.dc1.consul вернёт вам как раз «здоровые» ноды кластера Consul.

К сожалению я не успел проверить отказоустойчивость этого решения, так как в данный момент борюсь со связкой Ansible+VMware vSphere.
Вы правы. Это связано с тем, что у меня сам Docker Swarm Manager запущен в единственном экземпляре. Если выпадет первая нода, тогда и самого Docker Swarm Manager не будет.

Если запустить Docker Swarm Manager в нескольких экземплярах, то ваше решение с подключением к consul.service.consul вполне может иметь право на жизнь, я думаю. Я прямо сейчас проверю это и если всё будет ок, то залью новую версию.

Спасибо за комментарий.
В процессе развертывания обнаружилась еще одна проблема. Для хранения метаданных multi-host network в Docker тоже используется Consul. В таком случае на тех хостах, где запускаются контейнеры c Consul Docker придется запускать без использования multi-host network. Так как до старта контейнеров с Consul Docker пытается обратиться к key-value store Consul и становится практически недоступным для управления. После старта контейнера все нормализуется.
Это накладывает ограничение на способы запуска контейнеров с Consul. Их придется запускать политикой restart=always. В случае использования systemd для старта контейнеров через docker run или любой другой init системы вы просто замучаетесь ждать, когда демон Docker среагирует на ваш запрос, так как в это время он будет постоянно пытаться подключится к кластеру Consul.
Может, стоит вынести Consul из докера и ставить его прямо на хост?
В итоге к этому и пришёл. С consul кластером, запущенным не в контейнерах, все прекрасно работает.
Кстати, на днях смотрел состояние Docker UCP. Там в качестве KV хранилища выступает etcd, развёрнутый в контейнере. И если делать разворачивать все по официальной инструкции все прекрасно работает до тех пор, пока не выполняешь шаг, необходимый для поддержки multi-host networking. Как только docker engine меняет настройки для использования etcd для хранения конфигурации overlay сетей все встаёт колом по той же самой причине, что и у меня с consul, до его запуска вне контейнера. Вот такая вот официальная документация.0
Спасибо. Особенно доставила винда 98. :)
Терпеть не могу винду, но те времена вспоминаю с теплотой.

У меня был 486DX, 4Mb RAM, 70Mb HDD. Сосед приносил своё ОЗУ, что бы я мог установить 98 винду (она не хотела устанавливаться на 8Mb). Я устанавливал её всю ночь, потом сосед забирал память и всё начинало безбожно тормозить. Но я был счастлив.

В те времена только изучал винду и часто удалял какой-нибудь системный файл, так что процедуру надо было повторять раз в 2 недели.
Прошло много лет. Железо стало мощнее на порядки. Но винда всё также тормозит…

Прошло много лет с комментария))

Железо хоть и стало мощнее, но и ОС с ПО на месте не стоят и тоже стали сильно прожорливее, да и разработчики ленивее ( мало кто заморачивается правильной работой с памятью и цпу )

А на счёт торможения не согласен. Работает ровно так, как ожидается от нее от выбранных условий - какое железо, какие требования и ПО, какие настройки ОС. Впрочем, как никсы.

Понятно, что если включать Aero (на момент вашего коммента актуалочка)) на видекарте затычке с 64мб, то все будет лагать.

Балансировка, получается, делается средствами DNS? Вы написали про consul-template, я думал он будет использоваться для изменения конфигов…
Всё никак статью про deploy руки не дойдут написать и рассказать про это. Он и используется у нас для изменения конфигов, конечно.
Напишите, да.
Я вот думаю ещё terraform как-то приспособить для управления инфраструктурой. А docker-compose используете, для масштабирования? И как приложение деплоите, собираете из Dockerfile или herokuish приспособили?
В данный момент в production мы даже docker-swarm не используем, у нас мало машин пока. Деплоим с помощью ansible, который автоматом запускается после коммита в git репозиторий. Приложения собираем из Dockerfile, да.
Sign up to leave a comment.

Articles

Change theme settings