zjxhx 发表于 2017-5-23 17:46:24

Kafka(四) -- 创建多实例集群

这一节我们看下怎么创建一个多实例的集群(以三个节点为例)。

 
  一、 创建配置文件

进入到 Kafka 主目录,以 config/server.properties 为原型,创建两个新的节点配置文件



cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties




 

按如下方式修改这两个配置文件的相关属性
 

config/server-1.properties:
listeners=PLAINTEXT://:9093
broker.id=1
port=9093
log.dir=/tmp/kafka-logs-1
config/server-2.properties:
listeners=PLAINTEXT://:9094
broker.id=2
port=9094
log.dir=/tmp/kafka-logs-2


 
上述属性中 broker.id 在集群中必须是唯一且永久的。我们打算在同一台机器上启动另两个节点实例,为避免冲突,端口和日志文件路径也做了相应的修改。

 

 

二、启动服务
 

输入如下命令启动服务:

 

bin/kafka-server-start.sh config/server.properties &
bin/kafka-server-start.sh config/server-1.properties &
bin/kafka-server-start.sh config/server-2.properties &


 

 jps 一下,一共可以看到三个 Kafka 进程。

 

 

三、 创建主题


现在我们创建一个具有三份副本、两个划分的主题:

 

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


 

我们可以通过 describe 参数查看集群中对刚刚创建的主题的配置情况:

 
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic2
Topic:my-replicated-topic2      PartitionCount:2      ReplicationFactor:3   Configs:
Topic: my-replicated-topic2   Partition: 0    Leader: 0       Replicas: 0,1,2 Isr: 0,1,2
Topic: my-replicated-topic2   Partition: 1    Leader: 1       Replicas: 1,2,0 Isr: 1,2,0


 

这里解释一下上述输出:第一行给出了所有划分的摘要信息,接下来逐行显示每个划分的详细信息。


[*]leader 节点响应对应划分的全部读写请求。
[*]replicas 是一个节点列表,他们产生相应划分的副本信息,里面的节点不一定都是存活的。
[*]isr 是一组非同步(in-sync)的备份,它是 replicas 的子集,里面的节点当前都是存活的。





 
  四、 验证可靠性


接下来我们验证一下多副本的可靠性。先灌两条消息到之前创建的主题上:

 

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic2
test message 1
test message 2


 

读一下看看:

 

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic2
test message 1
test message 2



 

(注意因为我们申请了两个划分,上述命令的结果有可能顺序不一致,也就是 test message 2 在前面)

我们通过这个命令找到 id 为 1 的节点实例:

 

ps -ef | grep server-1.properties
work   15053 478750 17:25 pts/1


 

干掉这个节点进程:

 

kill -9 15053


 

这时候我们再看一下主题的状态描述:

 

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic2
Topic:my-replicated-topic2      PartitionCount:2      ReplicationFactor:3   Configs:
Topic: my-replicated-topic2   Partition: 0    Leader: 0       Replicas: 0,1,2 Isr: 0,2
Topic: my-replicated-topic2   Partition: 1    Leader: 2       Replicas: 1,2,0 Isr: 2,0


 

可以看出来节点 1 已经被停掉了。我们再去主题中读一下消息:

 

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic eplicated-topic2
test message 2
test message 1


 

谢天谢地,数据还在。

 

 

 

 
页: [1]
查看完整版本: Kafka(四) -- 创建多实例集群