Я настраиваю кластер контейнеров Docker в Azure в режиме Azure Swarm, используя overlay
сетевой драйвер. В настоящее время используются 2 виртуальные машины в Azure, обе находятся в североевропейском регионе, но являются частью разных подписок Azure с операционной системой: Linux (ubuntu 18.04)
, работает на уровне: Standard B1ms (1 vcpus, 2 GiB memory)
.
Ниже приведен файл Docker Compose, который использовался при создании стека Docker:
version: '3.3'
services:
vlab-web-service:
image: 'my-image-here'
ports:
- target: 8080
published: 8080
protocol: tcp
mode: ingress
command: tail -f /dev/null
deploy:
mode: replicated
replicas: 2
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 30s
endpoint_mode: vip
networks:
- vlab-swarm-network
networks:
vlab-swarm-network:
driver: overlay
driver_opts:
encrypted: "false"
Я пытаюсь измерить overlay
производительность сети между двумя контейнерами, особенно при работе в зашифрованной сети. К сожалению, кажется, что overlay
соединение между контейнерами не работает должным образом. На одном из контейнеров я запускаю netcat
в режиме сервера, в котором все подключенные клиенты получат случайный файл размером 5 ГБ:
nc -lk -p 8080 -q 0 < transfer.file &
При проверке IP-адресов контейнеров Docker я получаю следующее:
root@vlab-docker-01:~# docker container inspect 6cc4296046a8 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "10.255.0.5",
"IPAddress": "10.0.0.3",
и
root@vlab-docker-02:~# docker container inspect 382b3489fc01 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "10.255.0.6",
"IPAddress": "10.0.0.4",
В netcat
клиент подключается к netcat
сервер с помощью следующей команды:
nc 10.0.0.3 8080 > in.file
что дает следующее сообщение:
(UNKNOWN) [10.0.0.3] 8080 (?) : Connection timed out
Если я попытаюсь подключить netcat
клиент из одного из контейнеров в netcat
сервер, используя общедоступный IP-адрес виртуальной машины, на которой netcat
серверный контейнер размещен, все работает, как ожидалось, и данные могут передаваться между контейнерами. Хотя это не то, что я ищу, так как я не могу использовать overlay
Водитель.
Как видно, все необходимые порты Docker Swarm были включены на обеих виртуальных машинах. Вот. Согласно Документация Docker Swarm, это также требование, чтобы разрешить трафик IP-протокола 50 (ESP). Хотя я не могу найти способ включить этот трафик на сетевых интерфейсах на моих виртуальных машинах Azure? Также стоит упомянуть, что вышеуказанная установка доказала свою ожидаемую работу на локальных серверах. Бег Docker version 19.03.2, build 6a30dfc
.
Любые советы по этому поводу приветствуются. Спасибо!