Что такое Docker App Containerization и как использовать оверлейные сети для связи контейнеров на разных хостах?
Когда инфраструктура вырастает за пределы одного физического или виртуального сервера, стандартной мостовой сети Docker становится недостаточно. Для обеспечения безопасного и стабильного взаимодействия между контейнерами, запущенными на совершенно разных физических машинах, применяются оверлейные сети. Эта технология создает виртуальный сетевой уровень поверх существующей физической инфраструктуры с помощью инкапсуляции трафика.
Оверлейные сети работают на базе встроенных механизмов оркестрации, таких как Docker Swarm, или сторонних сетевых плагинов, включая Calico и Flannel. Они используют протокол VXLAN для заворачивания пакетов данных контейнеров в обычные UDP-пакеты, которые беспрепятственно передаются между физическими хостами через стандартные сетевые интерфейсы.
Процесс настройки распределенного взаимодействия выглядит следующим образом:
Главным преимуществом оверлейных сетей является полная прозрачность для разработчиков. Приложению не нужно знать, на каком именно физическом сервере запущен смежный микросервис, так как сетевой уровень берет на себя всю работу по инкапсуляции, маршрутизации и шифрованию трафика. Это позволяет масштабировать сложные распределенные системы на любое количество машин без изменения исходного кода программного обеспечения.