博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单台centos7主机做zookeeper和kafka集群
阅读量:4118 次
发布时间:2019-05-25

本文共 3468 字,大约阅读时间需要 11 分钟。

    集群环境越来越普遍了,本教程练习在单台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=1listeners=PLAINTEXT://192.168.213.4:9092port=9092host.name=192.168.213.4log.dirs=/home/tmp/kafka1/dataLogzookeeper.connect=192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183

kafka2节点

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

kafka3节点

broker.id=3listeners=PLAINTEXT://192.168.213.4:9094port=9094host.name=192.168.213.4log.dirs=/home/tmp/kafka3/dataLogzookeeper.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.propertieskafka2/kafka_2.11-1.0.0/bin/kafka-server-start.sh kafka2/kafka_2.11-1.0.0/config/server.propertieskafka3/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 testkafka3/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 testkafka2/kafka_2.11-1.0.0/bin/kafka-console-producer.sh --broker-list 192.168.213.4:9093 --topic testkafka3/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

发送消息

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

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

你可能感兴趣的文章
leetcode-192 Word Frequency
查看>>
腾讯一面二面题目
查看>>
2014腾讯面试题整理
查看>>
腾讯面试题总结,似乎是面试C++方向的(小巫总结)
查看>>
腾讯后台开发三面面试题
查看>>
腾讯科技(北京)有限公司--面试题
查看>>
腾讯一面二面终面真题
查看>>
2013腾讯面经(技术类-后台开发)
查看>>
leetcode-202 Happy Number
查看>>
leetcode-148 Sort List
查看>>
字符串匹配那些事(一)
查看>>
C语言中比较重要的几个库函数strcpy strncpy memcpy等等
查看>>
C语言结构体里的成员数组(长度为0)和指针---from coolshell
查看>>
malloc、calloc、realloc、alloca的区别
查看>>
线程的分离状态
查看>>
leetcode-205 Isomorphic Strings
查看>>
C++中int和string的转换
查看>>
linux coredump
查看>>
一致性hash算法 - consistent hashing
查看>>
leetcode-152 Maximum Product Subarray
查看>>