【问题标题】:ECS + ZooKeeper / Kafka - would it work?ECS + ZooKeeper / Kafka - 可以吗?
【发布时间】:2016-11-26 21:12:00
【问题描述】:

我以前从未使用过 ZooKeeper/Kafka,所以如果我说的有问题,请随时纠正。

使用 AWS ECS 扩大/缩小 ZooKeeper/Kafka 集群是否是个好主意?我不太确定这是如何完成的,因为似乎没有很多信息将两者结合在一起,所以我开始觉得这不是我应该做的事情。

似乎没有办法将 zookeeper 副本自动添加到集群中,Kafka 似乎也是如此(除非使用 MirrorMaker)。

【问题讨论】:

    标签: apache-kafka apache-zookeeper amazon-ecs


    【解决方案1】:

    ZooKeeper 可以由Exhibitor 管理automatic instance management,使用shared config 位置。将其组合成一个 Docker 映像,并使用 Amazon S3 作为后端选项,您应该可以开始了。

    Kafka 有点复杂,因为每个节点都需要一个唯一的broker.id,并且您需要在考虑到故障和节点更换的情况下管理这些节点。此外,当新的broker.id 被添加到集合中或从集合中删除时(即当您缩小或缩小时),您需要重新平衡主题分区。我强烈推荐 this 博客文章,主题是 broker.id 在自动缩放组中管理。

    请注意,这两个问题都与自动 Kafka 扩展有关,而不是使用 Amazon ECS 本身。在 Amazon ECS 上的 Docker 容器中部署具有一些限制的 Kafka 应该相当简单。

    我不确定 MirrorMaker 如何适合您的场景,但请记住,这只是另一个消费者 - 它与集群管理无关。

    【讨论】:

    • 现有/新的 Kafka 实例如何知道所有 ZooKeepers 地址?
    • @Ben:我建议在这种情况下研究服务发现,因为有很多选项可以构建它。我们目前正在使用本地 haproxy 实例,但您也可以生成常规 ELB。
    • 不是 haproxy 更像是一种负载平衡解决方案吗?我更希望为 Kafka 提供动态服务发现解决方案(这样,如果添加/删除 ZooKeeper 实例,它会动态地重新调整到此类设置)。
    • “动态”部分本质上是关于保持一些接入点与当前集群状态同步 - 你需要自己提供这个,因为它不在 Kafka 的职责范围内“管理” ZooKeeper 集合 (example)。
    • @Ben 你解决过这个问题吗?以及您是如何处理 ADVERTISED_HOST 的?另外你用的是什么图片? github.com/spotify/docker-kafka ?
    猜你喜欢
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多