`
bibithink
  • 浏览: 28832 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
 
这里解释一下上述输出:第一行给出了所有划分的摘要信息,接下来逐行显示每个划分的详细信息。
  1. leader 节点响应对应划分的全部读写请求。
  2. replicas 是一个节点列表,他们产生相应划分的副本信息,里面的节点不一定都是存活的。
  3. 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 47875  0 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
 
谢天谢地,数据还在。
 
 
 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics