Kafka学习笔记:设置多broker集群

来源:互联网 发布:上海炫踪网络 怎么样 编辑:程序博客网 时间:2024/06/06 17:23

首先复制配置文件:

cp server.properties server1.propertiescp server.properties server2.properties

分别在新文件中修改以下内容:

broker.id=1listeners=PLAINTEXT://:9093log.dirs=/tmp/kafka-logs-1
broker.id=2listeners=PLAINTEXT://:9094log.dirs=/tmp/kafka-logs-2

启动单点zookeeper:

zookeeper-server-start.sh /usr/DevProgram/kafka_2.11-0.11.0.0/config/zookeeper.properties

新建终端,启动kafka服务:

kafka-server-start.sh /usr/DevProgram/kafka_2.11-0.11.0.0/config/server.properties &;kafka-server-start.sh /usr/DevProgram/kafka_2.11-0.11.0.0/config/server1.properties &;kafka-server-start.sh /usr/DevProgram/kafka_2.11-0.11.0.0/config/server2.properties &;

使用jps可以看到三个kafka进程:

创建新主题 :

kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

查看集群状态:

kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic

输出信息:
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2

发送消息:

kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic>helloworld1>helloworld2^C

读取消息:

kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic

容错性检验

在之前的集群状态中看到Broker1是leader,搜索带server-1.properties的进程并将其杀死:

ps aux | grep server1.properties;kill 5926

再次查看集群状态:

kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic

可以看到leader已经变成Broker0了:
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 0 Replicas: 1,0,2 Isr: 0,2

错误信息

在ambari搭建的集群中,根据各服务的启动顺序不同,在启动kafka服务时可能会出现这么一种错误:
os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
原因在于kafka默认启动设置为当剩余内存在1G以上时才能成功启动。为避免启动kafka时机器剩余内存不足1G而导致Kafka Broker无法启动的情况,修改./bin/kafka-server-start.sh文件:

export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
原创粉丝点击