Рекомендации по работе с сетями Docker - PullRequest
0 голосов
/ 13 сентября 2018

У меня ~ 4 микросервиса, Keycloak и сервер RabbitMQ, которые я хочу развернуть через Docker.Каждый микросервис должен иметь возможность общаться с Keycloak, а некоторым - с RabbitMQ.

Чтобы сохранить его в чистоте, я хотел создать файл docker-compose для Keycloak, один для RabbitMQ и один для каждого микросервиса.Это правильный способ сделать это?(Каждый микросервис имеет свою собственную базу данных.)

Image Microservices Relations etc.

MS A, B, C, D должны иметь возможность вызывать Keycloak;MS C, D должен иметь возможность общаться с RabbitMQ.

Каков наилучший способ подключения всех микроуслуг к серверу Keycloak / RabbitMQ?Некоторые из микросервисов также должны иметь возможность общаться друг с другом.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

да, вы можете сделать это так, как вы сказали, создав файл составления для каждой службы, но если вы хотите сохранить его в чистоте, вы можете поместить их в один файл, как показано ниже:

version: '2'
services:  
  rabbitmq:
    image: rabbitmqImg
    networks:
      - rabbitmq
  keycloak:
    image: keycloakImg
    networks:
      - keycloak
  MS-A:
    image: MSImg
    networks:
      - keycloak
  MS-B:
    image: MSImg
    networks:
      - keycloak
  MS-C:
    image: MSImg
    networks:
      - keycloak
      - rabbitmq
  MS-D:
    image: MSImg
    networks:
      - keycloak
      - rabbitmq
networks:
  rabbitmq:
    external:
      name: rabbitmq
  keycloak:
    external:
      name: keycloak

с этимМикросервисы yaml могут общаться друг с другом через сеть keycloak, все микросервисы могут общаться с сервером keycloak, также используя сеть keycloak, а MS-C, MS-D могут общаться с rabbitmq через сеть rabbitmq.но если есть или будут какие-то другие микросервисы, которым не нужно общаться ни с rabbitmq, ни с keycloak, вам следует создать другую сеть и включить в нее микросервисы и помещать микросервисы в другие сети по мере необходимости.

, как сказал вам Аннуайможно использовать режим роя или kubernetes, но если вы новичок, придерживайтесь docker-compose, после этого для масштабирования и оркестровки вы можете использовать эти инфраструктуры.

EDIT: для баз данных существует несколько способовэто зависит от архитектуры вашей базы данных.например, если у вас есть контейнер базы данных для MS, вы должны создать сеть для MS, как показано ниже:

version: '2'
services:
# General Services      
  rabbitmq:
    image: rabbitmqImg
    networks:
      - rabbitmq
  keycloak:
    image: keycloakImg
    networks:
      - keycloak
  # Micro Services      
  MS-A:
    image: MSImg
    networks:
      - ms-a-net
      - keycloak
  MS-B:
    image: MSImg
    networks:
      - ms-b-net
      - keycloak
  MS-C:
    image: MSImg
    networks:
      - ms-c-net
      - keycloak
      - rabbitmq
  MS-D:
    image: MSImg
    networks:
      - ms-d-net
      - keycloak
      - rabbitmq

  # Database Services      

  DB-A:
    image: DBImg
    networks:
      - ms-a-net
  DB-B:
    image: DBImg
    networks:
      - ms-b-net
  DB-C:
    image: DBImg
    networks:
      - ms-c-net
  DB-D:
    image: DBImg
    networks:
      - ms-d-net

networks:
  rabbitmq:
    external:
      name: rabbitmq
  keycloak:
    external:
      name: keycloak

  # Services Network

  ms-a-net:
    external:
      name: ms-a-net
  ms-b-net:
    external:
      name: ms-b-net          
  ms-c-net:
    external:
      name: ms-c-net
  ms-d-net:
    external:
      name: ms-d-net                    
0 голосов
/ 13 сентября 2018

Вы можете сделать это через докер, но есть следующие вещи, которые вы должны учитывать,

  • Почему вы хотите развернуть

Если ответ dev или test, тогда yes, вы можете использовать docker compose. Это поможет вам запустить все ваши контейнеры из одного места, и вы можете настроить их в одном файле. Вы можете настроить keycloak, базы данных и службы rmq на одном хосте через docker compose, и они могут общаться друг с другом

Если вы хотите сделать это для prod или prod, как env, то мы можем заглянуть в рои докеров. Это инкрементное обновление от docker compose, которое позволяет развертывать контейнеры на нескольких хостах.

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

Если вы хотите хранить ваши базы данных в контейнерах, в этом я не совсем уверен. Контейнеры очень нестабильны, но в совокупности они обеспечивают высокую доступность, но для баз данных и rmq я лично не буду хранить их в контейнерах для prod, но тогда вы сможете ознакомиться с ними и принять решение по этому вопросу.

Рой Docker и kubernetes могут быть использованы для разработки и тестирования env. они всегда могут работать на одном хосте.

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