2.Kafka_Zookeeper集群搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15014327/article/details/83421753

在同一台机器上搭建zk集群和kfaka集群。

一.Zookeeper集群搭建

1.创建zk安装目录

[root@master ~]# mkdir -p /opt/server/zookeeper/server1/data
[root@master ~]# mkdir -p /opt/server/zookeeper/server1/dataLog
[root@master ~]# mkdir -p /opt/server/zookeeper/server2/data
[root@master ~]# mkdir -p /opt/server/zookeeper/server2/dataLog
[root@master ~]# mkdir -p /opt/server/zookeeper/server3/data
[root@master ~]# mkdir -p /opt/server/zookeeper/server3/dataLog

2.下载zk-3.3.6,并解压到上述三个目录中

#下载
[root@master ~]# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
#解压
[root@master ~]# tar -zxvf  zookeeper-3.3.6.tar.gz -C /opt/server/zookeeper/server1
[root@master ~]# tar -zxvf  zookeeper-3.3.6.tar.gz -C /opt/server/zookeeper/server2
[root@master ~]# tar -zxvf  zookeeper-3.3.6.tar.gz -C /opt/server/zookeeper/server3

3.修改三个zk配置文件

[root@master ~]# cd /opt/server/zookeeper/server1/zookeeper-3.3.6/conf
[root@master conf]# cp -rf  zoo_sample.cfg   zoo.cfg
[root@master conf]# vim  zoo.cfg
    tickTime=2000
    initLimit=10
    syncLimit=5
    clientPort=2181    #2182,2183 
    dataDir=/opt/server/zookeeper/server1/data #server2和server3依次修改目录即可
    dataLogDir=/opt/server/zookeeper/server1/dataLog #server2和server3依次修改目录即可
    server.1=127.0.0.1:2888:3888
    server.2=127.0.0.1:2889:3889
    server.3=127.0.0.1:2890:3890
#创建zk的id编号
[root@master conf]# echo "1" > /opt/server/zookeeper/server1/data/myid
[root@master conf]# echo "2" > /opt/server/zookeeper/server2/data/myid
[root@master conf]# echo "3" > /opt/server/zookeeper/server3/data/myid

4.依次开启三个zk

[root@master conf]# cd /opt/server/zookeeper/server1/zookeeper-3.3.6/
[root@master zookeeper-3.3.6]# bin/zkServer.sh start
[root@master zookeeper-3.3.6]# cd /opt/server/zookeeper/server2/zookeeper-3.3.6/
[root@master zookeeper-3.3.6]# bin/zkServer.sh start
[root@master zookeeper-3.3.6]# cd /opt/server/zookeeper/server3/zookeeper-3.3.6/
[root@master zookeeper-3.3.6]# bin/zkServer.sh start

5.客户端登录验证

[root@master zookeeper-3.3.6]# bin/zkCli.sh -server master:2181

二.Kafka集群搭建

1.创建kafka安装目录

[root@master ~]# mkdir -p  /opt/server/kafka/kafka1/kafkaLog
[root@master ~]# mkdir -p  /opt/server/kafka/kafka2/kafkaLog
[root@master ~]# mkdir -p  /opt/server/kafka/kafka3/kafkaLog

2.下载zk-3.3.6,并解压到上述三个目录中

[root@master ~]# wget http://apache.fayea.com/kafka/0.10.2.2/kafka_2.11-0.10.2.2.tgz
[root@master ~]# tar -zxvf kafka_2.11-0.10.2.2 -C /opt/server/kafka/kafka1
[root@master ~]# vi /opt/server/kafka/kafka1/kafka_2.11-0.10.2.2/config/server.properties
broker.id=0 #broker.id=1、broker.id=2
log.dirs =/opt/server/kafka/kafka1/kafkaLog
listeners=PLAINTEXT://master:9092 #port=9093、port=9094
port=9092 #port=9093、port=9094
zookeeper.connect=master:2181,master:2182,master:2183
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880
[root@master ~]# vi /opt/server/kafka/kafka1/kafka_2.11-0.10.2.2/config/consumer.properties
zookeeper.connect=master:2181,master:2182,master:2183
group.id=logGroup

同样解压到kafka2、kafka3中,更改配置。唯一跟kafka1的区别就是broker.id和port。
3.开启服务

[root@master ~]# cd /opt/server/kafka/kafka1/kafka_2.11-0.10.2.2/bin
[root@master ~]# ./kafka-server-start.sh  ../config/server.properties  &
[root@master ~]# cd /opt/server/kafka/kafka2/kafka_2.11-0.10.2.2/bin
[root@master ~]# ./kafka-server-start.sh  ../config/server.properties  &
[root@master ~]# cd /opt/server/kafka/kafka3/kafka_2.11-0.10.2.2/bin
[root@master ~]# ./kafka-server-start.sh  ../config/server.properties  &

三.Kafka基本应用

1.创建主题

让我们创建一个名为“test”的主题,它只包含一个分区,只有一个副本:

1

> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

如果我们运行list topic命令,我们现在可以看到该主题:

1

2

> bin/kafka-topics.sh --list --zookeeper localhost:2181

test

或者,您也可以将代理配置为在发布不存在的主题时自动创建主题,而不是手动创建主题。

2.发送一些消息

Kafka附带一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到Kafka集群。默认情况下,每行将作为单独的消息发送。

运行生产者,然后在控制台中键入一些消息以发送到服务器。

1

2

3

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

This is a message

This is another message

3.启动消费者

1

2

3

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

This is a message

This is another message

4.设置多代理集群(具体配置如上方:二.kafka配置)

现在创建一个复制因子为3的新topic:

1

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

现在我们有一个集群,我们怎么知道哪个Agent正在做什么?要查看运行“describe topics”命令:

1

2

3

> bin/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,2,0 Isr: 1,2,0

这是输出的解释。第一行给出了所有分区的摘要,每个附加行提供有关一个分区的信息。由于我们只有一个分区用于此topic,因此只有一行。

  • “leader”是负责给定分区的所有读取和写入的节点。每个节点将成为随机选择的分区部分的领导者。
  • “replicas”是复制此分区日志的节点列表,无论它们是否为领导者,或者即使它们当前处于活动状态。
  • “isr”是“同步”复制品的集合。这是副本列表的子集,该列表当前处于活跃状态并且已经被领导者捕获。

请注意示例中,节点1是该topic的唯一分区的领导者。

5.测试容错性

broker1充当leader,所以让我们kill它:

1

2

3

> ps aux | grep server-1.properties

7564 ttys002    0:15.91 /System/Library/Frameworks/JavaVM.framework/Versions/1.8/Home/bin/java...

> kill -9 7564

leader已切换到其中一个从属节点,节点1不再位于同步副本集中:

1

2

3

> bin/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: 2   Replicas: 1,2,0 Isr: 2,0

但即使最初接受写入的leader已经失败,这些消息仍可供消费。

猜你喜欢

转载自blog.csdn.net/qq_15014327/article/details/83421753
今日推荐