Неспособность увидеть, как шаблон посла повышает модульность / простоту контейнерной архитектуры в 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 и т. Д.) В своей слайд-колоде на тему "Доставка приложений в производство в Контейнеры с докером ". У него также есть несколько предложений о том, как решить проблему, которую, я думаю, вы упомянули, особенно великий посол Докера выглядит многообещающе.

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