我正在尝试将dockerized Kafka(使用Zookeeper)部署到AWS.我已经梳理了几个资源,并且接近了.但是当我在AWS中使用我的Kafka盒子时,我可以看到Kafka正以-1退出.我只能假设Kafka无法访问Zookeeper,因为我没有设置任何名称解析.我正在考虑Consul作为解决方案(见here).
这看起来像一个体面的resource.但我甚至无法成功运行官方领事docker image(在服务器或代理模式).我可以让this one上班(使用here).但如果可能的话,我想使用官方图片.
有没有人得到官方的领事形象与卡夫卡和动物园管理员合作?
A)首先,我想我想在docker-compose中使用它.这是我的docker-compose.yml file,我试图让Kafka使用Consul来发现Zookeeper节点.
下面是相关的代码块,您可以使用docker-compose up consul运行.这不会显示任何错误.但我)我无法达到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镜像部署到AWS.如果我能够轻松地将Consul,Kafka等容器部署到Marathon,那么这将是件好事.据我所知,我必须使用docs cli,因为我的实际应用和服务而失去了Terraform的声明属性.因为现在,没有正式的Terraform提供商与Marathon进行交互(尽管有nicgrayson/terraform-provider-marathon).
C)所以我将看一下Mesosphere DCOS.但希望我现在拥有的只是一个小的配置错误.
Has anyone gotten the official Consul image working with Kafka and Zookeeper?
是的,我有:)请参阅https://github.com/dmstr/docker-roj/blob/master/data/example/discovery/consul/docker-compose.yml以获取示例配置.尽管映射的端口我使用网络模式主机为consul,它只是更好地工作.
您可以查看有关如何setup a swarm with consul on AWS的文档.
虽然这可能无法回答您的所有问题,但查看如何设置您的群体仍然是一个很好的资源;因为这是一个非常简单的解决方案.随意为roj提交问题或PR.