我正在尝试将本地具有的docker-compose设置转换为带有任务的ECS集群。我的docker-compose设置如下所示:

version: '3'

services:
  rabbit-mq-service:
    image: rabbitmq:3.6-management
    ports:
      - "15672:15672"
      - "5672:5672"
    environment:
      RABBITMQ_DEFAULT_USER: ***
      RABBITMQ_DEFAULT_PASS: ***
  service-a:
    image: service-a:latest
    depends_on:
      - rabbit-mq-service
    restart: on-failure
    command: --spring.profiles.active=docker --spring.rabbitmq.host=rabbit-mq-service
  service-b:
    image: service-b:latest
    depends_on:
      - rabbit-mq-service
    restart: on-failure
    command: --spring.profiles.active=docker --spring.rabbitmq.host=rabbit-mq-service

这是非常简单的东西,在Docker中效果很好。我可以运行docker-compose并获得Rabbitmq + 2服务,并且这两个服务都可以连接到Rabbit服务器。

现在,只要我对Rabbit服务器的主机名进行硬编码,就可以将service-a和service-b部署到ECS集群。这意味着我需要一个单独的EC2实例(或类似的实例)来运行Rabbit服务器。我真的希望我的群集具有一个Rabbit服务器,并使我的实例能够连接到它。到目前为止,还没有运气。

让Rabbit服务器位于ECS集群之外是否更好?

有什么建议么?

最佳答案

两种选择:

  • 是,在ECS集群外部运行Rabbit服务器。由于它具有与之关联的持久状态,因此很难在节点之间移动或复制,因此在ECS中对其进行管理并没有太多好处。
  • 要求AWS提供给deploy a load balancer in front of RabbitMQ in ECS您可以为负载均衡器分配自己的DNS名称(通过Route 53)或使用其默认名称,但是无论哪种方式,您都可以使用该DNS名称来引用RabbitMQ,并且它将路由实际运行它的任何主机。
  • 关于docker - 带RabbitMQ的Amazon ECS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51560602/

    10-15 03:32