LINUX.ORG.RU
ФорумAdmin

Docker swarm, маршрутизация

 


0

2

Добрый день!

Имеем рой из двух нод

$ docker node ls
ID                            HOSTNAME  STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
ycc######################     node1     Ready     Active         Leader           18.06.3-ce
rx5###################### *   node2     Ready     Active         Reachable        20.10.21

Запускаю стек из двух сервисов qBitTorrent’а. Примерно так

version: "3.9"
services:

  qbt-node1:
    image: linuxserver/qbittorrent:latest
    ports:
      - 6004:6004
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.labels.tag == node1]

  qbt-node2:
    image: linuxserver/qbittorrent:latest
    ports:
      - 6005:6005
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.labels.tag == node2]

Все запустилось и работает. Работает и ВебМорда http://node1:6004 http://node2:6005

Проверяем маршрутизацию. http://node1:6005 - Долго висит и отваливается http://node2:6004 - Работает

Проверяем телнетом

$ telnet node1 6005
Trying node1...
Connected to node1.
Escape character is '^]'.
GET /

HTTP/1.1 400 Bad Request
connection: close
content-length: 0
date: Sun, 25 Jun 2023 06:01:49 GMT

Connection closed by foreign host.
$ telnet node1 6005
Trying node1...
Connected to node1.
Escape character is '^]'.
GET / HTTP/1.1


Connection closed by foreign host.

Как такое может быть, с одной нады маршрутизится, а с другой нет? Куда смотреть/копать?

С swarm’ом не работал, только с кубером

Но в конфиге не вижу выбора сети

Убедись, что у тебя есть overlay сеть. Ну или любая другая, которая обеспечит связность между нодами

https://docs.docker.com/engine/swarm/networking/

https://habr.com/ru/articles/334004/

router ★★★★★
()
Ответ на: комментарий от Kopek

Да, две менеджер ноды. Веб морда работает:

  • Если заходить с соответствующей ноды на нужный порт, т.е. node1 -> 6004, node2 -> 6005
  • Если заходить с node2 на любой порт (6004, 6005), то подключаешся с нужному (правильному) сервису. Т.е. node2:6004->node1:6004, node2:6005->node2:6005

Телнет ведет себя аналогично браузеру. Но при не корректном запросе «GET /» вместо «GET / HTTP/1.1» дает ответ «HTTP/1.1 400 Bad Request»

ProphSerg
() автор топика