Неспособность увидеть, как шаблон посла повышает модульность / простоту контейнерной архитектуры в Docker
Я не могу понять, как реализация шаблона посла поможет нам упростить / модульную структуру нашей контейнерной архитектуры.
Допустим, у меня есть контейнер базы данных db
на хосте A и используется программой db-client
который находится на хосте B, которые связаны через контейнеры послов db-ambassador
а также db-foreign-ambassador
по сети:
[host A (db) --> (db-ambassador)] <- ... -> [host B (db-forgn-ambsdr) --> (db-client)]
Соединения между контейнерами в одной машине, например db
в db-ambassador
, а также db-foreign-ambassador
в db-client
делаются через докера --link
параметр в то время как db-ambassador
а также db-foreign-ambassador
разговаривает по сети.
Но, --link
это просто модный способ вставки IP-адресов, портов и другой информации из одного контейнера в другой. При сбое контейнера другой связанный с ним контейнер не получает уведомления и не узнает новый IP-адрес аварийного контейнера при перезапуске. Короче говоря, если контейнер, связанный с другим, перестал работать, ссылка также не работает.
Чтобы рассмотреть мой пример, скажем, что db
аварийно завершает работу и перезапускается, таким образом, назначается другому IP. db-ambassador
пришлось бы тоже перезапустить, чтобы обновить связь между ними... За исключением того, что вы не должны. Если db-ambassador
перезапущен, IP-адрес тоже изменился бы, и foreign-db-ambassador
не будет знать, где его достичь при новом IP-адресе.
Цитируя статью в Докере о посольском образце,
Когда вам нужно перенаправить своего потребителя, чтобы он общался с другим сервером Redis, вы можете просто перезапустить контейнер redis-ambassador, к которому подключен потребитель.
Этот шаблон также позволяет вам прозрачно переместить сервер Redis на другой хост докера от потребителя.
кажется, что это именно та проблема, которую она пытается решить. Который, насколько я понимаю, это совершенно не так. Нет, если вы считаете --link
полезно только до тех пор, пока связанный контейнер не падает. Возможность запуска сбойного узла на его предыдущем IP-адресе была бы хорошим обходным путем, если бы она поддерживалась, по крайней мере, для архитектуры малого / среднего размера.
Я что-то упускаю из виду?
1 ответ
У Жерома было несколько хороших слайдов (11-33) о том, как послы лучше, чем другие способы обнаружения услуг (например, DNS, хранилища ключей, файл конфигурации bind-mount и т. Д.) В своей слайд-колоде на тему "Доставка приложений в производство в Контейнеры с докером ". У него также есть несколько предложений о том, как решить проблему, которую, я думаю, вы упомянули, особенно великий посол Докера выглядит многообещающе.