首页 > 其他分享 >利用kafka自带的zookeeper搭建kafka集群

利用kafka自带的zookeeper搭建kafka集群

时间:2022-10-20 17:15:52浏览次数:79  
标签:-- zookeeper kafka 集群 172.17 自带 目录

利用kafka自带的zookeeper搭建kafka集群 

 

搭建kafka集群是需要zookeeper的,可是kafka自身就已经带了一个zookeeper,所以不需要额外搭建zookeeper的集群,只需要将kafka自带的zookeeper配置成一个集群就可以。

目录
1、kafka的下载和安装
2、配置zookeeper
3、配置kafka
4、启动zookeeper集群
5、启动kafka集群

1、kafka的下载和安装

本次安装采用的kafka版本是2.3.0。

首先,下载安装包。
从kafka的官方网站上找到相应的下载链接之后,用wget下载(wget https://archive.apache.org/dist/kafka/2.3.0/kafka_2.12-2.3.0.tgz),之后得到一个安装包kafka_2.12-2.3.0.tgz。

其次,安装。
预计将kafka安装在/usr/local/目录下,所以将下载的安装包解压到/usr/local/目录下(tar -xzf kafka_2.12-2.3.0.tgz -C /usr/local),解压后得到一个名为kafka_2.12-2.3.0的文件夹,这就是kafka的安装目录了,为了进入方便给安装目录做一个软连接ln -s kafka_2.12-2.3.0 kafka,这样以后cd kafka的时候,实际上就是进入了kafka安装目录kafka_2.12-2.3.0中。

第三,安装集群规划。
预计安装一个3节点的集群,3个节点的ip如下:

172.17.2.136
172.17.2.138
172.17.2.139

2、配置zookeeper

kafka自带的zookeeper的配置文件是kafka安装目录下config/zookeeper.properties。

第一步,建数据目录和日志目录。
为了配置zookeeper,要提前为zookeeper建好数据目录和日志目录。

cd /usr/local/kafka
mkdir -p zookeeper/data zookeeper/log

第二步,在配置文件中写入配置项。
要配置哪些配置项是提前考虑好的,如下所示:

# the directory where the snapshot is stored.
dataDir=/usr/local/kafka/zookeeper/data

#修改为自定义的zookeeper日志目录
dataLogDir=/usr/local/kafka/zookeeper/log

# the port at which the clients will connect
clientPort=2181

#注释掉
#maxClientCnxns=0

#设置连接参数,添加如下配置
#为zk的基本时间单元,毫秒
tickTime=2000
#Leader-Follower初始通信时限 tickTime*10
initLimit=10
#Leader-Follower同步通信时限 tickTime*5
syncLimit=5

#设置broker Id的服务地址
server.0=172.17.2.136:2888:3888
server.1=172.17.2.138:2888:3888
server.2=172.17.2.139:2888:3888

第三步,建myid文件
在zookeeper的数据目录/usr/local/zookeeper/data下,建一个文本文件myid,内容为每个zookeeper节点的编号。因为是3个节点kafka集群,所以zookeeper集群也是3个节点,他们的编号分别是0、1、2.

经过以上3个步骤,一个节点的zookeeper就配置完成了。

3、配置kafka

kafka的配置文件是config/server.properties。

第一步,创建kafka数据日志目录。注意这里虽然叫日志目录,可不是真的kafka运行日志存放的目录,耳熟kafka中的消息数据存放的目录,因为kafka中消息是以write append log的形式存放的,所以这里的日志目录实际是数据目录,但是数据又的确是以日志的形式存放,所以就叫数据日志目录。

# 创建kafka的数据日志目录,命名为kfkwalog
mkdir -p /usr/local/kafka/kfkwalog  

第二步,写入配置项。
kafka的配置项很多,需要更改的配置项如下:

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0

# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://172.17.2.136:9092

# Hostname and port the broker will advertise to producers and consumers. If not set,
# it uses the value for "listeners" if configured.  Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
advertised.listeners=PLAINTEXT://172.17.2.136:9092

############################# Log Basics #############################

# A comma separated list of directories under which to store log files
log.dirs=/usr/local/kafka/kfkwalog



############################# Zookeeper #############################

# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=172.17.2.136:2181,172.17.2.138:2181,172.17.2.139:2181

经过以上3步骤,136一个kafka节点配置好了,然后将kafka安装目录打包,之后scp到138、139两个节点,同时在138和139两个节点做对应的修改,主要包括:
(1)是创建zookeeper的数据目录zookeeper/data和日志目录zookeeper/log
(2)创建zookeeper数据目录下的myid文件,138下myid内容是1,138下myid的内容是2。这样以后,136的myid是0,138的myid是2,139的myid是2。
(3)创建kafka的数据日志目录kfkwalog
(4)修改kafka配置文件中的broker.id,136的broker.id是0,138的broker.id是1,139的broker.id是2
(5)修改kafka配置文件中的listeners和advertised.listeners,将其中的ip修改为对应的节点ip。
就完成了kafka集群和zookeeper集群的配置工作了。

4、启动zookeeper集群

三个节点依次启动,首先启动136上的zookeeper,然后启动138、139的。

首先,启动采用如下的命令启动zookeeper。

nohup bin/zookeeper-server-start.sh config/zookeeper.properties > logs/zookeeper/zookeeper.log 2>1 &

然后,查看zookeeper是否启动成功。

[root@kfkby ~]# jps -l
130374 sun.tools.jps.Jps
111887 kafka.Kafka
47439 org.apache.zookeeper.server.quorum.QuorumPeerMain  #如果jps有这行输出,说明zookeeper已经正常启动起来了

5、启动kafka集群

启动kafka和查看kafka启动是否成功的命令如下:

nohup bin/kafka-server-start.sh config/server.properties > logs/kafka/kafka.log 2>1 &

[root@kfkby ~]# jps -l
130374 sun.tools.jps.Jps
111887 kafka.Kafka  # 如果jps有这一行输出,说明kafka已经正常启动起来了
47439 org.apache.zookeeper.server.quorum.QuorumPeerMain

用下面的命令测试kafka是否正常启动了:
[root@THQ-DEV-5 bin]# ./kafka-topics.sh --bootstrap-server 192.168.0.10:9092 --list
EDGE_QY_VEH_INFO
V2x_V1_Screen_Config_Down
__consumer_offsets
edge-qyobu-up
test
v2x_v1_obu_cmd_down
v2x_v1_obu_original_up
[root@THQ-DEV-5 bin]# 
 

四、测试Kafka集群
1、创建topic:test

/home/erp/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.100.11:2181,192.168.100.12:2181,192.168.100.13:2181 --replication-factor 1 --partitions 1 --topic test

2、列出已创建的topic列表

/home/erp/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181

3、模拟客户端去发送消息

/home/erp/kafka/bin/kafka-console-producer.sh --broker-list 192.168.100.11:9092,192.168.100.12:9092,192.168.100.13:9092 --topic test

4、模拟客户端去接受消息

/home/erp/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test

标签:--,zookeeper,kafka,集群,172.17,自带,目录
From: https://www.cnblogs.com/iancloud/p/16810510.html

相关文章

  • Zookeeper(一)——Zookeeper介绍
    Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。1、工作机制Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存......
  • Helm部署Zookeeper+Kafka集群
    三、Helm部署Zookeeper集群3.1、helm准备#Helm客户端安装文档https://helm.sh/docs/intro/install/#添加bitnami和官方helm仓库:helmrepoaddbitnamihttps://cha......
  • Mac 卸载Python3(非系统自带Python2)
    brew卸载Python3brewuninstallpython3brewcleanup1.删除Python3.x程序:在Mac的应用程序目录找到Python3.x的目录,右键-移到废纸篓。或使用Mac自带的终端执行:s......
  • Dubbo 04: zookeeper注册中心
    借助zookeeper注册中心进一步改正直连式+接口工程的不足,更好的管理服务者提供的功能以及消费者对服务的申请访问需要用到3个相互独立的maven工程,工程1为maven的jav......
  • kafka随记
    一、概述1.定义传统定义:kafka是一个分布式的基于发布/订阅模式的消息队列最新定义:kafka是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集......
  • 深入理解 ZooKeeper的ACL实现
    2020-02-08补充流程图如果对您有帮助,欢迎点赞支持,如果有不对的地方,欢迎指出批评什么是ACL(AccessControlList)zookeeper在分布式系统中承担中间件的作用,它管理的每......
  • 深入理解 ZooKeeper客户端与服务端的watcher回调
    2020-02-08补充本篇博文所描述的watcher回调的流程图watcher存在的必要性举个特容易懂的例子:假如我的项目是基于dubbo+zookeeper搭建的分布式项目,我有三个功能相同的服......
  • Linux安装Kafka(Docker方式)
    安装步骤(已亲测好使):#笔者版本ZOOKEEPER_VERSION=3.4.13//DockerVersion=18.03.1-ee-3#拉zookeeper镜像dockerpullwurstmeister/zookeeper#笔者版本KAFKA_VERSION......
  • kafka 按时间戳消费
    步骤获取当前topic的分区列表利用offsets_for_times()+时间戳查找给定分区的偏移量,如:找到开始时间的偏移量循环每个分区,设置偏移量根据end_offset或结束时间退......
  • 技术分享| 消息队列Kafka群集部署
    一、简介1、介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志......