Развертывание стека докеров с использованием оверлейной сети - непоследовательное поведение - PullRequest
0 голосов
/ 27 февраля 2019

Я развертываю 2 контейнера (приложение и SQL) в одной сети с помощью файла docker-compose.yml (развертывание стека Swarm).В большинстве случаев у приложения нет проблем с обращением к SQL через имя хоста в качестве источника данных в строке подключения.

Однако бывают случаи, когда оно просто не может его найти.Для отладки я проверил, что оверлейная сеть действительно создана в каждом узле, и при проверке сети на каждом узле я вижу, что контейнер действительно принадлежит этой сети.

Более того, когда явыполните команду docker exec для входа в контейнер приложения, я пытаюсь отправить ping в контейнер SQL, и имя хоста разрешается с правильным IP, но ответ по-прежнему отсутствует.

Это крайнерасстраивает, так как это происходит только время от времени.Любые предложения о том, как отладить проблему?

version: '3.2'
services:
  sqlserver:
   image: xxxx:5000/sql_image
   hostname: sqlserver
   deploy: 
     endpoint_mode: dnsrr
   networks:
      devnetwork:
        aliases:
            - sqlserver

  test:
    image: xxxx:5000/test
    deploy: 
     endpoint_mode: dnsrr
    deploy:
     restart_policy:
        condition: none
     resources:
        reservations:
          memory: 2048M
    networks:
      - devnetwork

networks:
    devnetwork:
        driver: overlay

1 Ответ

0 голосов
/ 01 марта 2019

Обнаружение службы и проблемы DNS при загрузке - известная сумка в режиме роя.У нас есть эта проблема много раз.Вы можете найти открытые выпуски здесь и здесь .

Если вы используете интенсивное сетевое приложение, рассмотрите возможность разделения вашего рабочего узла и узла менеджера.Это поможет менеджеру хорошо выполнить обнаружение службы.

Вы можете изменить компонент обнаружения службы и использовать его как Консул или ZooKeeper как часть вашей реализации стека.

Я хотел бы рассмотреть возможность использования некоторой сетки услуг для связи данных между службами. Консул может сделать это за вас.Вы можете получить много преимуществ от этого шаблона дизайна.Безопасность и зашифрованная передача данных, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...