7.1 Изучение сети overlay
Сеть overlay — это распределенная сеть Docker, которая позволяет контейнерам, работающим на разных хостах, взаимодействовать друг с другом. Она часто используется в контексте оркестрации контейнеров, таких как Docker Swarm или Kubernetes, для обеспечения связи между контейнерами, работающими на разных узлах. В этой лекции мы рассмотрим, как создать и использовать сеть overlay, а также примеры её применения.
Сеть overlay создаёт виртуальную распределенную сеть поверх существующих сетей, объединяя несколько хостов в единое сетевое пространство. Это позволяет контейнерам взаимодействовать, как если бы они были в одной локальной сети, независимо от физического расположения хостов.
Преимущества использования overlay сети:
- Связь между контейнерами на разных хостах: обеспечивает сетевое взаимодействие между контейнерами, запущенными на различных узлах.
- Изоляция: позволяет создавать изолированные сетевые пространства для различных приложений.
- Масштабируемость: поддерживает динамическое добавление и удаление узлов без перерыва в работе.
7.2 Создание сети overlay
Для создания overlay сети необходимо сначала инициализировать кластер Docker Swarm. Это создаст управляющий узел (менеджер) и позволит создавать распределённые сети.
Шаг 1: Инициализация Docker Swarm
Запустите команду на хосте, который будет менеджером кластера. Эта команда инициализирует кластер Swarm и выводит команду для присоединения других узлов к кластеру.
docker swarm init
Шаг 2: Присоединение рабочих узлов к кластеру
На других хостах выполните команду, которую вывела docker swarm init, чтобы присоединить их к кластеру. Пример команды:
docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377
Шаг 3: Создание overlay сети
После инициализации кластера создайте overlay сеть с помощью команды:
docker network create -d overlay my_overlay_network
Шаг 4: Проверка сети
Для проверки успешного создания сети выполните команду docker network ls, которая выведет список всех сетей, включая новую overlay сеть:
docker network ls
Пример вывода:
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5 my_overlay_network overlay swarm
Теперь сеть my_overlay_network готова к использованию для распределённых приложений.
7.3 Использование overlay сети
Теперь, когда сеть создана, вы можете запускать контейнеры и сервисы, подключенные к этой сети.
Пример использования overlay сети для сервисов
В Docker Swarm можно использовать сервисы для управления контейнерами. Создадим несколько сервисов, которые будут подключены к overlay сети.
Шаг 1: Создание сервиса веб-сервера
docker service create --name webserver --network my_overlay_network -p 8080:80 nginx
Эта команда создаёт сервис webserver, подключённый к сети my_overlay_network. Веб-сервер будет доступен по адресу http://localhost:8080.
Шаг 2: Создание сервиса базы данных
docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres
Здесь создаётся сервис database, подключённый к той же сети, с установкой переменной среды POSTGRES_PASSWORD.
Шаг 3: Проверка связи между сервисами
Запустите временный контейнер для проверки связи между сервисами:
docker run -it --network my_overlay_network busybox
Внутри контейнера используйте команды ping, чтобы проверить связь с веб-сервером и базой данных:
ping webserver
ping database
Если настройка выполнена правильно, пинг покажет успешное соединение, подтверждая, что контейнеры могут взаимодействовать по именам хостов.
Шаг 4: Просмотр статуса сервисов
Используйте команду docker service ls, чтобы проверить статус созданных сервисов:
docker service ls
Ожидаемый вывод покажет информацию о запущенных сервисах, их статусе и количестве реплик.
Примечание: overlay сеть позволяет контейнерам на разных хостах обмениваться данными, если они подключены к одному кластеру Swarm.
7.4 Примеры использования overlay сети в Docker Compose
Docker Compose упрощает управление многоконтейнерными приложениями и сетями. Вы можете определить overlay сеть и использовать её для связи между контейнерами в файле docker-compose.yml.
Пример файла docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
networks:
- my_overlay_network
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
networks:
- my_overlay_network
networks:
my_overlay_network:
driver: overlay
attachable: true
Запуск Docker Compose:
docker stack deploy -c docker-compose.yml mystack
Эта команда развернет стек, используя файл docker-compose.yml, и создаст сервисы, подключенные к сети my_overlay_network.
Практические советы:
- Мониторинг сети: Используйте инструменты мониторинга Docker Swarm, такие как Docker Dashboard или Prometheus, для отслеживания состояния сети и взаимодействия между контейнерами.
- Управление масштабируемостью: Overlay сеть поддерживает динамическое добавление и удаление узлов. Обеспечьте правильную настройку сетевых ресурсов для масштабирования приложений.
- Резервное копирование конфигураций: Регулярно сохраняйте конфигурации сети и стэков для быстрого восстановления в случае сбоев.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ