我有~4个微服务,一个密钥披风和一个RabbitMQ服务器,我想通过Docker进行部署。每个微服务都必须能够与Keycloak对话,而有些则需要与RabbitMQ对话。
为了保持它的清洁,我想为Keycloak创建一个坞-撰写文件,为RabbitMQ创建一个文件,并为每个微服务创建一个文件。这样做对吗?(每个微服务都有自己的数据库。)

MS,B,C,D需要能够调用Keycloak;MS C,D需要能够与RabbitMQ交谈。
将所有微服务连接到Keycloak / RabbitMQ服务器的最佳方法是什么?一些微型服务也需要能够相互交流。
发布于 2018-09-13 18:25:22
你可以通过码头,但有以下几件事你需要考虑,
如果答案是开发或测试,那么是的,你可以使用坞撰写。它帮助您从一个地方启动所有容器,并且可以在一个文件中配置它们。您可以让keycloak、rmq数据库和服务通过docker组合全部设置到同一个主机上,它们可以相互交谈。
如果你想要像env那样的刺激或推动,那么我们可以查看码头蜂群。它是来自docker组合的增量更新,允许您在多个主机上部署容器。
如果您只有四个服务,您可以使用它,但如果您有更多,或者您需要更好地控制您的服务如何部署、运行和需要更多的度量和接触点,请选择kubernetes。
如果您想将数据库保存在容器中,我不太确定。容器是不稳定的,但是总体上它们给了您很高的可用性,但是对于数据库和rmq,我个人不会将它们保存在容器中进行prod,但是这样您就可以四处阅读,并根据您的需要来决定这一点。
Docker swarms和kubernetes也可以用于开发和测试env。它们总是可以在单个主机上运行。
发布于 2018-09-13 19:54:25
是的,您可以按照您所说的那样做,方法是为每个服务创建一个撰写文件,但是如果您想保持它的干净,您可以将它们放在一个文件中,如下所示:
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交谈,你应该创建另一个网络,并在其中放置微服务,并根据需要将微服务放在其他网络中。
正如Anunay所说的,你可以使用群模式或kubernetes,但如果您是初学者,坚持对接-撰写,之后,对于缩放和编排,您可以使用这些框架。
编辑:数据库的有多种方式取决于您的数据库体系结构。例如,如果每个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 https://stackoverflow.com/questions/52319370
复制相似问题