Kafka集群搭建

环境

  • Virtual Box

  • CentOS7

  • JDK8u172

  • ZooKeeper 3.4.12

  • Kafka-2.11-2.1.1

步骤

一、安装CentOS7

这一步自行百度。。。

二、安装JDK

  • 我这里使用的是JDK8U172,从Oracle官网下载好对应的版本后安装到CentOS

  • 然后配置环境变量

    • vi /etc/profile
    • export JAVA_HOME=/your/path/jdk1.8_0_172
    • export PATH=$$PATH:$JAVA_HOME/bin
    • source /etc/profile
  • 接着使用java -version命令检查JDK是否安装成功

三、下载并安装ZooKeeper 3.4.12

四、下载并安装Kafka-2.11-2.1.1

五、搭建另外几台Kafka服务器

我这边搭建了三台,你们可以选择更多

安装完成后开始配置ZooKeeper和Kafka

首先配置hosts文件

  • vi /etc/hosts

  • 添加以下内容

    • your.kafka.host1 your.hostname

    • your.kafka.host2 your.hostname

    • your.kafka.host3 your.hostname

    • # 例如
      192.168.0.12 kafka-01
      192.168.0.13 kafka-02
      192.168.0.14 kafka-03
      

接着我们修改ZooKeeper的配置文件

  • cd /your/path/zookeeper-3.4.12/conf

  • cp zoo_sample.cfg zoo.cfg

  • vi zoo.cfg

  • 修改配置,这里我列一下我的配置

  • tickTime=2000
    initLimit=10
    syncLimit=5
    # Data目录
    dataDir=/tmp/zookeeper/data
    # Log目录
    dataLogDir=/tmp/zookeeper/log
    # Zk端口
    clientPort=2181
    # 集群配置
    server.0=192.168.0.12:2888:3888
    server.1=192.168.0.13:2888:3888
    server.2=192.168.0.14:2888:3888
    
  • cd /tmp/zookeeper/data

  • touch myid

  • echo 0 >> myid

其他几台Kafka服务器也需要这样修改

然后我们修改Kafka的配置

  • cd /your/path/kafka_2.11-2.1.1/config

  • vi server.properties

  • 修改配置,这里我列一下我的配置

  • # brokerId,如果搭建集群,那么brokerId不能相同,默认值为-1,如果没有设置,kafka会默认生成一个ID
    broker.id=0
    # broker监听客户端连接的地址列表,即客户端要连接broker的入口地址列表
    listeners=PLAINTEXT://192.168.0.12:9092
    # Kafka消息持久化路径
    log.dirs=/tmp/kafka-logs
    # zooKeeper集群的ip:port  /kafka指明了chroot路径为kafka,如果不指定,则默认使用Zookeeper的根路径
    zookeeper.connect=192.168.0.12:2181,192.168.0.13:2181,192.168.0.14:2181/kafka
    

同理,其他几台Kafka服务器的配置也需要修改

配置修改完毕后,我们可以启动Zk和Kafka进行测试

# 启动zk
➜  config zkServer.sh start 
ZooKeeper JMX enabled by default
Using config: /usr/local/soft/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

# 使用Jps查看zk是否运行
➜  config jps
1447 QuorumPeerMain
1534 Jps

# 查看zk状态
➜  config zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/soft/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower

# 启动Kafka
kafka-server-start.sh server.properties
# 以后台进程的方式启动
kafka-server-start.sh -daemon server.properties
# 或者
kafka-server-start.sh server.properties &

# 创建Topic
kafka-topics.sh --zookeeper 192.168.0.12:2181/kafka --create --topic topic-demo --replication-factor 3 --partitions 4

# 查看topic的详细信息
➜  ~ kafka-topics.sh --zookeeper kafka-01:2181/kafka --describe --topic topic-demo                                        
Topic:topic-demo	PartitionCount:4	ReplicationFactor:3	Configs:
	Topic: topic-demo	Partition: 0	Leader: 1	Replicas: 0,1,2	Isr: 1,2,0
	Topic: topic-demo	Partition: 1	Leader: 1	Replicas: 1,2,0	Isr: 1,2,0
	Topic: topic-demo	Partition: 2	Leader: 1	Replicas: 2,0,1	Isr: 1,2,0
	Topic: topic-demo	Partition: 3	Leader: 1	Replicas: 0,2,1	Isr: 1,2,0

# 使用producer发送消息
➜  ~ kafka-console-producer.sh --broker-list kafka-01:9092 --topic topic-demo
>helloo,^H^H,^H
>

# 使用consumer消费消息
➜  ~ kafka-console-consumer.sh --bootstrap-server kafka-01:9092 --topic topic-demo
hello,,

如果没有问题的话,zk集群和Kafka集群就搭建完成了!