Kafka集群搭建(以及zookeeper集群搭建)

这里是在一台虚拟机,使用伪集群搭建Kafka及zookeeper,多台虚拟机同理,注意ip和端口号即可

一.搭建zookeeper集群,虚拟机要有Java环境

1.创建zookeeper文件夹,下载并解压zookeeper

#创建文件夹
mkdir zookeeper
cd zookeeper

#下载并解压zookeeper
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -zxvf zookeeper-3.4.14.tar.gz

2.重命名zookeeper1文件夹,创建zkdata和zkdatalog文件夹

#重命名
mv zookeeper-3.4.14 zookeeper1

#存放快照日志
mkdir zkdata
#存放事物日志
mkdir zkdatalog

3.修改配置文件制作zoo.cfg

cd zookeeper1/conf
// 复制zoo.cfg文件
cp zoo_sample.cfg zoo.cfg


#zoo.cfg的配置信息
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/work/zookeeper/zookeeper1/zkdata  //设置zkdata路径
dataLogDir=/opt/work/zookeeper/zookeeper1/zkdatalog  //设置zkdatalog路径
clientPort=12181  //默认是2181
//第一个端口是master和slave之间的通信端口,默认是2888,
第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888
//因为是伪集群尽量端口号不重复
server.1=192.168.254.68:12888:13888
server.2=192.168.254.68:14888:15888
server.3=192.168.254.68:16888:17888
//处理zookeeper日志,表示24小时清理一次
autopurge.purgeInterval=24  
//日志文件个数
autopurge.snapRetainCount=3

4.重复2、3步骤,同样方式创建zookeeper2、zookeeper3,注意zoo.cfg配置文件路径,端口号修改

5.创建myid文件

以现在所在的第一台虚拟机192.168.254.68为例,对应server.1,通过上边的配置信息可以查到。创建myid文件的目的是为了让zookeeper知道自己在哪台服务器上,例如现在所在的虚拟机是192.168.254.68,它对应的id是1,那么就在myid文件中写入1.

echo "1" > /opt/zookeeper/zookeeper1/zkdata/myid
echo "2" > /opt/zookeeper/zookeeper2/zkdata/myid
echo "3" > /opt/zookeeper/zookeeper3/zkdata/myid

5.启动zookeeper,其他两个同样启动

cd zookeeper1/bin
#启动
./zkServer.sh start
#查看状态
./zkServer.sh status

可以使用jps查看,三个启动是否成功

二.搭建Kafka集群

1.创建kafka文件夹

mkdir kafka

2.从官网下载kafka,这里使用版本:kafka_2.11-2.2.0.tgz,上传到kafka文件夹下,解压并重命名

tar -zxvf kafka_2.11-2.2.0.tgz

mv kafka_2.11-2.2.0.tgz kafka1

3.修改配置文件server.properties

cd kafka1/config

//配置文件信息
#这是这台虚拟机上的值,在另外两台虚拟机上应该是2或者3,这个值是唯一的,每台虚拟机或者叫服务器不能相同
broker.id=1

#设置本机IP和端口,设置的是listeners,也可以直接设置host.name=192.168.254.68,port=19292,这个IP地址也是与本机相关的,每台服务器上设置为自己的IP地址。(伪集群端口号不要重复)
host.name=192.168.254.68,port=19092
listeners=PLAINTEXT://192.168.254.68:19092  //端口默认是9092,为了加深理解,没有设置为默认值

//在og.retention.hours=168下面新增下面三项
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880

#设置zookeeper的连接端口,新版本的kafka不再使用zookeeper而是通过brokerlist的配置让producer直接连接broker,这个brokerlist可以配置多个,只要有一个能连接上,就可以让producer获取道集群中的其他broker的信息,绕过了zookeeper。因此这个zookeeper.connect可以设置多个值
(注意自己zookeeper的端口号)
zookeeper.connect=192.168.254.68:12181,192.168.254.68:12182,192.168.254.68:12183

4.同样方式创建kafka2、kafka3,修改server.properties配置文件,注意端口号、ip;

5.启动三个kafka,可使用jps查看是否启动成功(如果启动不成功,看文章末)

cd kafka1/bin
#-daemon 后台启动,日志可在logs日志文件中查看
./kafka-server-start.sh -daemon ../config/server.properties

#其他两个同样方式启动

三.启动成功后,测试kafka集群

1.创建topic,这里定义的topic叫my-topic

#replication-factor 2 // 复制两份
#partitions 1 // 创建1个分区
#topic // 主题为my-topic
#--zookeeper // 此处为为zookeeper监听的地址
./kafka-topics.sh --create --zookeeper 192.168.254.68:12181 --replication-factor 2 --partitions 1 --topic my-topic

2.创建生产者,可在控制台输入数据

./kafka-console-producer.sh --broker-list 192.168.254.68:19092 --topic my-topic

3.创建消费者(再另外连接虚拟机,在bin下创建,创建生产者的虚拟机不要断)

./kafka-console-consumer.sh --zookeeper 192.168.254.68:12181 --topic my-topic --from-beginning

此时,可能会报错:consumer zookeeper is not a recognized option

这是因为kafka版本问题,高版本要使用下面命令:

./kafka-console-consumer.sh --bootstrap-server 192.168.254.68:19092 --topic my-topic --from-beginning

效果图:

四.kafka启动报错问题

1.检查三个kafka配置文件里broker.id是否重复,检测zookeeper和kafka的端口号

2.伪集群启动报错:Configured broker.id 2 doesn't match stored broker.id 0 in meta.properties.

参考:https://www.cnblogs.com/gudi/p/7847100.html

log.dirs目录下的meta.properties中配置的broker.id和配置目录下的server.properties中的broker.id不一致了,解决问题的方法是将两者修改一致后再重启。

伪集群下解决:在/tmp下复制kafka-logs文件夹,分别重命名kafka1-logs、kafka2-logs、kafka3-logs,将目录下的meta.properties中配置的broker.id改成对应的值;

然后在kafka的server.properties配置文件里,修改  log.dirs=/tmp/kafka-logs,改成相应的路径;

最后将kafka重启就能启动成功。

伪集群搭建注意配置文件的信息,端口号,broker.id的值,基本上都能搭建成功。同理多台服务器搭建kafka集群。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值