单台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

相关文章

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用