如何在cloudfoundry上使用kafka和storm?
Posted
技术标签:
【中文标题】如何在cloudfoundry上使用kafka和storm?【英文标题】:How to use kafka and storm on cloudfoundry? 【发布时间】:2016-04-17 04:51:32 【问题描述】:我想知道是否可以将 kafka 作为云原生应用程序运行,我是否可以在 Pivotal Web Services 上创建一个 kafka 集群作为服务。我不想只集成客户端,我想自己运行 kafka 集群/服务?
谢谢, 阿尼尔
【问题讨论】:
【参考方案1】:我可以为您指出几个起点,从这些起点到功能齐全的东西需要一些工作。
一种选择是使用 docker 镜像在 Cloud Foundry(例如 Pivotal Web Services)上部署 kafka 集群。 Spotify has Dockerized kafka and kafka-proxy(包括 Zookeeper)。要记住的一件事是,PWS 目前不支持具有持久性的应用程序(尽管this work is starting),所以如果你现在走这条路,当应用程序滚动时你会丢失 kafka 中的数据。查看该 Spotify 存储库,看起来 docker 映像通常在没有任何已安装卷的情况下运行,因此这种无持久性的 kafka 似乎可能是一个有效的用例(我对 kafka 的了解不够多)。
另一种选择是使用 BOSH 在某些 IaaS(例如 AWS)上直接部署 kafka。如果您是第一次看到 BOSH,它可能很难,但它是部署您希望在 VM 上运行的任何分布式软件的理想方式。如有必要,您还可以将持久卷附加到您的 kafka 虚拟机。这是一个kafka BOSH release,它可能会起作用。
集群运行后,您可以通过两种方式将 Cloud Foundry 应用程序与其集成。最简单的方法是将其作为“user-provided service”提供给您的应用程序,这样您就可以将 kafka 集群访问信息传递给您的应用程序。另一种方法是将服务代理放在集群前面,如果您有许多不同的人将推送需要与 kafka 集群通信的应用程序,这将特别有用。不必每次都手动告诉人们访问信息,他们可以做一些简单的事情,比如cf bind-service SOME_APP YOUR_KAFKA_SERVICE
。这是kafka service broker 和more info about service brokers in general。
【讨论】:
这是另一个支持多租户 Kafka 集群的 SASL 身份验证和主题授权的服务代理:github.com/1123/kafka-service-broker。【参考方案2】:根据 12-factor 应用程序描述 (https://12factor.net/processes),Kafka 不应作为应用程序在 Cloud Foundry 之上运行:
十二因素流程是无状态且无共享的。任何需要持久化的数据都必须存储在有状态的支持服务中,通常是数据库。
Kafka 通常被认为是“分布式提交日志”,因此携带大量状态。许多公司使用它来保持所有事件在很长一段时间(有时是无限的)时间内通过他们的分布式微服务系统流动。
因此,我强烈建议在接受的答案中选择第二个选项:Kafka 主题应该以有状态服务的形式绑定到您的应用程序。
【讨论】:
我知道这是一剂苦药,但很多人需要注意你的回答。以上是关于如何在cloudfoundry上使用kafka和storm?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 CloudFoundry 向 AWS-sdk 提供凭证
Cloudfoundry 上 node.js 应用程序的蓝/绿部署
shell 自动获取和map应用实例url cloudfoundry实例
0030-如何在CDH中安装Kudu&Spark2&Kafka