【发布时间】:2017-10-13 15:30:03
【问题描述】:
我正在尝试将 dockerized Kafka(使用 Zookeeper)部署到 AWS。我已经梳理了几个资源,并接近了。但是当我 ssh 进入 AWS 中的 Kafka 盒子时,我可以看到 Kafka 以 -1 退出。我只能假设 Kafka 无法访问 Zookeeper,因为我还没有设置任何名称解析。我正在将 Consul 视为解决此问题的方法(请参阅 here)。
这看起来像一个不错的resource。但我什至无法成功运行官方 Consul docker image(无论是服务器模式还是代理模式)。我可以让this one 工作(使用here)。但如果可能的话,我想使用官方图像。
有没有人获得与 Kafka 和 Zookeeper 合作的官方 Consul 图像?
A) 首先,我想我想让它在 docker-compose 中运行。这是我的 docker-compose.yml file,我试图让 Kafka 使用 Consul 来发现 Zookeeper 节点。
以下是相关代码块,您可以使用docker-compose up consul 运行它。这不会显示任何错误。但是 i) 我无法联系到 http://localhost:8500 。 ii)然后我如何将 Kafka 指向 Zookeeper 并将 Kafka 客户端指向 Kafka?
version: '2'
services:
consul:
image: consul:0.8.3
expose:
- 8300
- 8301
- 8301/udp
- 8302
- 8302/udp
- 8400
- 8500
- 8600
- 8600/udp
ports:
- 8300:8300
- 8301:8301
- 8301/udp:8301/udp
- 8302:8302
- 8302/udp:8302/udp
- 8400:8400
- 8500:8500
- 8600:8600
- 8600/udp:8600/udp
command: "agent -server -bind=0.0.0.0 -retry-join=0.0.0.0 -bootstrap-expect=1"
B) 然后我可以尝试在 AWS 中使用它(通过Terraform)。理想情况下,我希望有 10 个 Kafka 节点和 2 个 Zookeeper 节点。但这是一个延伸目标。
编辑
正如@MattSchuchard 所指出的,Mesos 有 Marathon 和 Chronos 的选项。
A) 但我想尝试一些我认为更直接的东西(即 Consul、Zookeeper、Kafka),然后再对另一个抽象进行分层。使用 zutherb/terraform-dcos 之类的东西似乎简化了安装 DCOS。
B) 但走这条路意味着将部署工作流程从 i) 仅部署 ECS 实例更改为 ii) 将 DCOS 集群部署到 AWS,然后将 docker 映像部署到该集群。如果我知道将 Consul、Zookeeper、Kafka 等容器部署到 Marathon 很容易,那就太好了。但据我所知,我必须使用 docs cli,而对于我的实际应用程序和服务来说,Terraform 的声明性属性会丢失。因为就目前而言,没有与 Marathon 交互的官方 Terraform 提供程序(尽管有nicgrayson/terraform-provider-marathon)。
C) 所以我来看看 Mesosphere DCOS。但希望我现在所拥有的只是一个小的配置错误。
【问题讨论】:
-
已经有 Mesosphere 和/或 DC/OS 为您执行此操作。
-
@MattSchuchard +1 我知道 Mesos Marathon 和 Chronos。可能你是对的。但在 Mesos 分层之前,我想尝试一些更直接的东西(Consul、Zookeeper、Kafka)。走这条路意味着将部署从 i) 部署容器到 ECS,到 ii) 部署 DCOS,将 docker 映像部署到它。而且它看起来很费力,因为我不得不使用 dcos cli,失去了 Terraform 对我的实际应用程序和服务的声明性属性。因为就目前而言,没有用于与 Marathon 交互的 Terraform 提供程序。希望我现在所拥有的只是一个小错误。
-
您可以在没有 DC/OS 的情况下进行 Mesosphere。此外,Marathon 用于应用程序部署,因此无论如何您都不会使用 Terraform。
-
您也可以使用 Docker 中已经存在的Docker swarm mode,并为您处理服务发现。并允许您将 Compose 文件与
docker stack deploy一起使用。顺便说一句,您可能希望将您的撰写文件提升到 v3 docs.docker.com/compose/compose-file -
运行 2 个 Zookeeper 节点是没有意义的,因为它们需要法定人数才能运行。要对 1 个 zookeeper 节点故障具有恢复能力,您首先需要有 3 个 zookeeper 节点。
标签: docker apache-kafka consul amazon-ecs terraform