kafka 自带zk怎么配置_CentOS下正确安装Kafka Broker的方式

本文提供了一步一步的指南,教你如何在Linux CentOS系统中安装Kafka,前提是你已配置好Java环境。首先下载并安装Zookeeper,接着详细介绍了单机服务和Zookeeper群组(Ensemble)的配置方法,确保Kafka能够正常运行。
摘要由CSDN通过智能技术生成

本文将重点介绍如何在Linux CentOS下安装Kafka,前提假设你已经安装好了Java开发并配置好了环境变量。本文所使用的Java版本为:1.8.0_231-b11。

准备工作:1、安装并搭建好开发环境2、下载最新的zookeeper3、下载最新的Kafka

安装Zookeeper

Kafka使用Zookeeper保存集群的元数据信息和消费者信息。Kafka发行版自带了Zookeeper,可以直接从脚本中启动,当然要安装一个Zookeeper也不是什么难事。话不多说,接下来就开始Zookeeper的安装之旅吧!

Kafka和Zookeeper关系图

到官网下载Zookeeper,这里我选用wget命令来下载,当前的最新版本是:3.5.6,下载方式如下图:

wget下载Zookeeper

我们创建如下两个目录:~/environment/zookeeper/local,~/environment/zookeeper/data。

~/environment/zookeeper/local:zookeeper安装目录

~/environment/zookeeper/data:保存zookeeper数据目录

1、单机服务

下面将演示如何使用基本的配置来安装zookeeper。

# tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz

# cat > zoo.cfg << EOF

> tickTime=2000

> dataDir=/home/xiongyan/environment/zookeeper/data

> clientPort=2181

> EOF

# ./zkServer.sh start

ZooKeeper JMX enabled by default

Using config: /home/xiongyan/environment/zookeeper/local/bin/../conf/zoo.cfg

Starting zookeeper …… STARTED

提示:此处必须使用root用户启动zookeeper,否则会因为权限不够而导致如下异常:

通过执行zookeeper启动命令“./zkServer.sh start”,成功启动了zk服务器。现在就可以使用telnet工具连接到zookeeper端口上,然后通过发送srvr命令来验证zookeeper是否正确安装。

提示:如果暂未安装上telnet工具,可以使用“yum install telnet”命令来安装

下面的实例演示了如何连接上zk并验证zk是否正确安装。

# telnet localhost 2181

Trying ::1...

Connected to localhost.

Escape character is '^]'.

srvr

Zookeeper version: 3.5.6-c11b7e26bc554b8523dc929761dd28808913f091, built on 10/08/2019 20:18 GMT

Latency min/avg/max: 0/0/0

Received: 1

Sent: 0

Connections: 1

Outstanding: 0

Zxid: 0x0

Mode: standalone

Node count: 5

Connection closed by foreign host.

2、Zookeeper群组(Ensemble)

群组即为Zookeeper集群。Zookeeper使用了一致性协议,因此推辞每个群组里应该包含基数个节点(比如3,5,7,9个等),因为只有当群组里的大多数节点都是处于可用的状态的时候才能处理外部请求。也就是说,如果你的群里里面包含5个节点,那么它将允许最多2个节点失效。

群组节点个数的选择假设有一个包含5个节点的群组,如果要对群组做一些包括更换节点在内的配置更改,需要一次重启每一个节点。如果你的集群无法容忍多个节点失效,那么进行群组维护时就会存在风险。不过,也不建议一个群组包含超过7个节点,因为zookeeper使用了一致性协议,节点过多会降低整个群组的性能。

群组需要有一些公共配置,上面列出了所有服务器的清单,并且每个服务器还要在数据目录中创建一个myid文件,用于指明自己的ID。如果群组里服务器的机器名是zoo1.demo.com、zoo2.demo.com、zoo3.demo.com,那么配置文件可能是这样的:

tickTime=2000

dataDir=~/environment/zookeeper/data

clientPort=2181

initLimit=20

syncLimit=5

server.1=zoo1.demo.com:2888:3888

server.2=zoo2.demo.com:2888:3888

server.3=zoo3.demo.com:2888:3888

在这个配置中,initLimit表示用于在从节点与主节点之间建立初始化连接的时间上限,syncLimit表示允许从节点与主节点处于不同步状态的时间上限。这两个值都是tickTime的倍数,所以initLimit是20*2000ms,也就是40s。配置还列出了群组里所有服务器的地址。服务器地址遵循server.X=hostname:peerPort:leaderPort格式,各个参数说明如下:

X:服务器的ID,它必须是一个整数,当然不一定就要从0开始,也不要求必须是连续的;

hostname:服务器的机器名或者IP地址;

peerPort:用于节点间通信的TCP端口;

leaderPort:用于首领选举的TCP端口。

客户端只需要通过clientPort就能连接到群组,而群组节点间的通信则需要同时用到这3个端口(clientPort、peerPort、leaderPort)。

除了公共的配置文件外,每个服务器都必须在data Dir目录中创建一个叫做myid的文件,文件必须要包含服务器ID,这个ID要与配置文件里配置的ID保持一致。完成了这一系列的步骤就可以尝试启动服务器,让它们彼此间进行通信了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值