单台centos7主机做zookeeper和kafka集群

本文档详细介绍了如何在单台CentOS7系统上搭建Zookeeper和Kafka的集成集群,包括环境说明、Zookeeper集群的配置(端口分配、配置文件修改、myid文件生成)、Kafka集群的配置(目录结构、配置文件修改及启动验证)。通过实践,成功实现了Zookeeper和Kafka的多节点部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    集群环境越来越普遍了,本教程练习在单台centos主机上做zookeeper和kafka集成集群环境:zookeeper和kafka各三个节点,主要是配置,重点看配置,jdk安装部分略过,亲测通过。

环境说明

主机:CentOS7 64位linux系统

JDK:jdk1.8

Zookeeper:zookeeper-3.4.10.tar.gz    下载网址:http://mirror.bit.edu.cn/apache/zookeeper/

kafka:kafka_2.11-1.0.0.tgz   下载地址:http://kafka.apache.org/downloads


1、Zookeeper部分

1.1、目录结构

    搭建的Zookeeper集群准备设置端口为2181/2182/2183,为了便于维护,按照端口号新建目录,并新建子目录data和dataLog,然后把解压后的Zookeeper文件目录拷贝到2181/2182/2183三个目录下,目录结构如图:


1.2、配置文件修改

    修改配置文件zookeeper-3.4.10/conf/zoo.cfg,各项说明摘抄自网络,具体每个节点的配置见截图

  • initLimit 
    ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。 
    当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。
  • syncLimit 
    配置follower和leader之间发送消息,请求和应答的最大时间长度。
  • tickTime 
    tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。
  • server.id=host:port1:port2 
    其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。 
    host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。
  • dataDir 
    其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。如果没有配置dataLogDir,那么事务日志也会存储在此目录。

2181/zookeeper-3.4.10/conf/zoo.cfg的配置

 

2182/zookeeper-3.4.10/conf/zoo.cfg的配置


2183/zookeeper-3.4.10/conf/zoo.cfg的配置


1.3、生成myid文件

在每个data子目录下生成myid文件,文件内容为集群中指定的值,如server.1=192.168.213.4:2888:3888就需指定myid的文件内容为1,server.2=192.168.213.4:2788:3788就需指定myid的文件内容为2,以此类推,具体配置见截图


1.4、命令执行效果

    通过命令“2181/zookeeper-3.4.10/bin/zkServer.sh start”分别启动三个节点


通过命令“2183/zookeeper-3.4.10/bin/zkServer.sh status”分别查看三个节点的状态,可以看出2182被选举为了主节点


2、kafka部分

2.1、目录结构

新建三个目录分别命名为kafka1、kafka2、kafka3,并分别创建dataLog子目录,目录结构如图所示


2.2、配置文件修改

修改配置文件“kafka_2.11-1.0.0/config/server.properties”,由于配置文件内容太长,仅列出需要修改的项:

kafka1节点

broker.id=1
listeners=PLAINTEXT://192.168.213.4:9092
port=9092
host.name=192.168.213.4
log.dirs=/home/tmp/kafka1/dataLog
zookeeper.connect=192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183

kafka2节点

broker.id=2
listeners=PLAINTEXT://192.168.213.4:9093
port=9093
host.name=192.168.213.4
log.dirs=/home/tmp/kafka2/dataLog
zookeeper.connect=192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183

kafka3节点

broker.id=3
listeners=PLAINTEXT://192.168.213.4:9094
port=9094
host.name=192.168.213.4
log.dirs=/home/tmp/kafka3/dataLog
zookeeper.connect=192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183


2.3、命令执行效果

启动三个kafka节点,创建主题test后分别在三个节点上发送消息,打开一个消费窗口接收消息。

--启动kafka命令(每个节点都要启动)
kafka1/kafka_2.11-1.0.0/bin/kafka-server-start.sh kafka1/kafka_2.11-1.0.0/config/server.properties
kafka2/kafka_2.11-1.0.0/bin/kafka-server-start.sh kafka2/kafka_2.11-1.0.0/config/server.properties
kafka3/kafka_2.11-1.0.0/bin/kafka-server-start.sh kafka3/kafka_2.11-1.0.0/config/server.properties
--创建主题、列出主题
kafka3/kafka_2.11-1.0.0/bin/kafka-topics.sh --create --zookeeper 192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183 --replication-factor 1 --partitions 1 --topic test
kafka3/kafka_2.11-1.0.0/bin/kafka-topics.sh --list --zookeeper 192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183

--根据主题发送消息
kafka1/kafka_2.11-1.0.0/bin/kafka-console-producer.sh --broker-list 192.168.213.4:9092 --topic test
kafka2/kafka_2.11-1.0.0/bin/kafka-console-producer.sh --broker-list 192.168.213.4:9093 --topic test
kafka3/kafka_2.11-1.0.0/bin/kafka-console-producer.sh --broker-list 192.168.213.4:9094 --topic test
--根据主题接收消息
kafka3/kafka_2.11-1.0.0/bin/kafka-console-consumer.sh --zookeeper 192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183 --topic test --from-beginning

发送消息



接收消息(三个节点发送的消息都已接收到)



本人小白一个,纯粹是练手,亲测通过,欢迎讨论指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值