kafka 自带zk怎么配置_Kafka使用自带Zookeeper搭建集群

Kafka是非常常用的软件,集群更是常见的使用方式,本文从实际使用角度出发,搭建一个Kafka集群,并逐渐完善到实际使用阶段。

1.概念解释

Kafka是无中心节点的结构,集群中的机器是平等的,无主次之分,由于Kafka的集群需要借助Zookeeper来实现,搭建集群时,集群机器的数量要求为:其按2N+1(N>=1),因此集群最小机器数量为3台。另外,Kafka本身自带了Zookeeper,无需单独下载安装,使用本身自带软件即可。

2.安装准备

三台机器:

192.168.102.128

192.168.102.132

192.168.102.133

3.安装过程

先配置128这台机器。下载、解压Kafka,进入主目录,在config目录打开zookeeper.properties文件,改其配置如下:

dataDir=/tmp/zookeeper

dataLogDir=/tmp/zookeeper/log

clientPort=2181maxClientCnxns=0admin.enableServer=falsetickTime=2000initLimit=10syncLimit=5#设置broker Id的服务地址

server.0=192.168.102.128:2888:3888server.1=192.168.102.132:2888:3888server.2=192.168.102.133:2888:3888

其中,2888端口为zookeeper的通讯端口,3888端口为选举端口。之后,在其数据目录下,新建myid文件,并写入server.id具体值(建议和kafka的broker.id保持一致)。

然后,再配置Kafka的配置文件server.properties:

broker.id=0listeners=PLAINTEXT://192.168.102.128:9092

log.dirs=/tmp/kafka-logs

zookeeper.connect=192.168.102.128:2181,192.168.102.132:2181,192.168.102.133:2181

配置文件完成后保存。

之后,安装128机器,安装并配置132、133机器,只是修改下Zookeeper的server.id值、kafka的listeners值即可。

4.启动事项

(1)先启动Zookeeper,再启动Kafka

(2)最好能后台启动Zookeeper及Kafka,并将日志写入指定文件。以下相关启动命令已验证

nohup bin/zookeeper-server-start.sh config/zookeeper.properties > /usr/local/kafka2.12/myabc.log 2>&1 &nohup bin/kafka-server-start.sh config/server.properties > /usr/local/kafka2.12/kafka.log 2>&1 tailf filename

5.生产及消费端测试(非生产环境使用)

测试方式:以128为生产端节点,以133为消费端节点。

生产端代码如下:

//Topic

private static final String topic = "kafkaTopic1";public static voidaaa() {

Properties props= newProperties();

props.put("bootstrap.servers", "192.168.102.128:9092");

props.put("acks", "0");

props.put("group.id", "ABC");

props.put("retries", "0");

props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");

props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");//生产者实例

KafkaProducer producer = new KafkaProducer(props);int i = 1;//发送消息

while (true) {

System.out.println("--------------生产开始:--------------");

producer.send(new ProducerRecord(topic, "key:" + i, "value:" + i+1));

System.out.println("key:" + i + " " + "value~~~:" + i+1);

i++;if (i >= 10) {break;

}

}

}

消费端代码:

private static final String topic = "kafkaTopic1";public static voidaaaa() {

Properties props= newProperties();

props.put("bootstrap.servers", "192.168.102.133:9092");

props.put("group.id", "ABC");

props.put("enable.auto.commit", "true");

props.put("auto.commit.interval.ms", "1000");

props.put("auto.offset.reset", "earliest");

props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

KafkaConsumer consumer = new KafkaConsumer(props);

consumer.subscribe(Arrays.asList(topic));while (true) {

ConsumerRecords records = consumer.poll(1000);for (ConsumerRecordrecord : records) {

System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());//i++;

}

}

}

生产端日志输出:

消费端日志输出:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值