赞
踩
需要从一个Kafka集群投递消息到多个Kafka 集群,这个过程可能只是对某些topic进行分发;同时topic也能支持分发到不同集群;
经过选型后,决定使用flume来实现高可用管道,并使用flume的复制分流拓扑结构来实现源集群的一次消费即可投递到下游的不同目标。
节点说明:
2个agent节点,2个collector节点;
2个agent 节点,完全相同的配置起flume agent ,组高可用的Kafka消费组,同步一个topic起一个flume进程;
2个collector节点的作用是,统一投递管理,新加topic source 无需重启应用,减少对全局应用的影响;
agent通过avro sink 向collector的avro source投递数据;
agent 通过设置sink group 来实现高可用或者负载均衡方式向collector投递数据;
注意:为了保证数据不丢失,使用file channel不要使用memory channel 。
一、agent 上的消费进程配置:
kafka source配置:
agent.sources.kafkaSource.type = org.apache.flume.source.kafka.KafkaSourceagent.sources.kafkaSource.kafka.bootstrap.servers = xx1:9092,xx2:9092,xx3:9092agent.sources.kafkaSource.kafka.topics = testTopicagent.sources.kafkaSource.kafka.consumer.group.id = dataDelever.flume
source interceptor设置,添加kv对,kfCluster值用于区分Kafka 集群,kfCluster取值:cluster1表示投递消息到Kafka集群cluster1,cluster2表示投递消息到Kafka 集群cluster2,clusterall表示两个集群都投递该topic。
agent.sources.kafkaSource.interceptors = i1agent.sources.kafkaSource.interceptors.i1.type = staticagent.sources.kafkaSource.interceptors.i1.key = kfClusteragent.sources.kafkaSource.interceptors.i1.value = clusterall
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。