单台centos7主机做zookeeper和kafka集群

2024-01-17 17:18

本文主要是介绍单台centos7主机做zookeeper和kafka集群,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    集群环境越来越普遍了,本教程练习在单台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

发送消息



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



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

这篇关于单台centos7主机做zookeeper和kafka集群的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616717

相关文章

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

Nacos集群数据同步方式

《Nacos集群数据同步方式》文章主要介绍了Nacos集群中服务注册信息的同步机制,涉及到负责节点和非负责节点之间的数据同步过程,以及DistroProtocol协议在同步中的应用... 目录引言负责节点(发起同步)DistroProtocolDistroSyncChangeTask获取同步数据getDis

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我