如何利用vagrant搭建kafka集群

vagrant环境搭建

安装vagrant与virtualBox基本软件

下载地址vagrant:https://www.vagrantup.com/downloads.html virtualBox:https://www.virtualbox.org/wiki/Downloads。自行下载os系统版本并next安装完毕,验证,终端运行vagrant -v显示出版本号则安装正确

利用vagrant安装unix系统

具体安装教程详见:vagrant入门
创建三个系统目录分别为:

1
$ mkdir -p ~/bigdata/centos-1 ~/bigdata/centos-2 ~/bigdata/centos-3

进到centos-1目录并执行以下命令

1
2
$ vagrant init centos/7
$ vagrant up

运行vagrant up后,则程序会自行下载一个boxes,可将下载url复制出来到迅雷下载并中断程序(如下载慢),如图:
kafka安装程序图片
boxex下载列表详见:https://app.vagrantup.com/boxes/search
如是迅雷下载执行以下命令添加本地boxes

1
2
$ vagrant box add centos-1 ~/data/download/xxx.box
#注解 vagrant box add [box名称] [box本地路径]

进入安装新系统中则运行如下命令:

1
$ vagrant ssh

NOTE:执行以下步骤安装剩下两台虚拟机器centos-2、centos-3即可

unix虚拟机配置

编辑根目录下Vagrantfile文件

1
$ subl Vagrantfile

subl别名配置教程终端命令启动subline text
替换文件全部如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
#以下不同系统IP请不要一样。每个系统换成192.168.10.12、192.168.10.13这样子
config.vm.network "private_network", ip: "192.168.10.11"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
end

执行以下命令生效配置并逐一centos-2、centos-3目录的Vagrantfile内容

1
$ vagrant provision

安装kafka数据流与zookeeper

预先工作

三台机子同时创建数据目录:

1
2
3
4
$ sudo -i
$ mkdir -p /apps/kafka
$ mkdir -p /apps/zk_data
$ cat [number] > /apps/zk_data/myid #[number]代表数字。每台确保唯一不同

编辑/etc/hosts文件,添加如下内容在集群机

1
2
3
192.168.10.11 centos71
192.168.10.12 centos72
192.168.10.13 centos73

下载kafka、zookeeper

1
2
3
4
$ wget http://mirror.bit.edu.cn/apache/kafka/1.0.0/kafka_2.11-1.0.0.tgz
$ wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
$ tar -zxf kafka_2.11-1.0.0.tgz && mv kafka_2.11-1.0.0 /apps/kafka
$ tar -zxf zookeeper-3.4.11.tgz && mv zookeeper-3.4.11 /apps/zookeeper

配置并启动kfka、zookeeper

进入zookeeper目录,添加如下基本运行配置

1
2
3
4
5
6
7
8
9
10
11
12
$ cp conf/zoo_sample.cfg conf/zoo.cfg
$ cat > conf/zoo.cfg << EOF
> dataDir=/apps/zk_data #zk的数据目录并会读取该目录下myid
> clientPort=2181
> tickTime=2000
> initLimit=5
> syncLimit=2
> server.1=centos71:5168:5166
> server.2=centos72:5168:5166
> server.3=centos73:5168:5166
> EOF
$ zookeeper/bin/zkServer.sh start

进入kafka目录,添加如下基本运行配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ cat > config/server.properties << EOF
> broker.id=1
> listeners=PLAINTEXT://centos71:9092
> num.network.threads=3
> num.io.threads=8
> socket.send.buffer.bytes=102400
> socket.receive.buffer.bytes=102400
> socket.request.max.bytes=104857600
> log.dirs=/data/kafka-logs
> num.partitions=3
> offsets.topic.replication.factor=1
> transaction.state.log.replication.factor=1
> transaction.state.log.min.isr=1
> log.retention.hours=168
> log.segment.bytes=1073741824
> log.retention.check.interval.ms=300000
> zookeeper.connect=centos71:2181,centos72:2181,centos73:2181
> zookeeper.connection.timeout.ms=1000000
> group.initial.rebalance.delay.ms=0
> EOF
$ bin/kafka-server-start.sh -daemon config/server.properties

依次对集群对以上进行相同步骤就可。具体配置详细请参考官网文档(本人菜鸟一粒)

执行如下命令进行验证成功与否

1
$ bin/kafka-topics.sh --create --zookeeper centos71:2181 --replication-factor 1 --partitions 1 --topic test66

出现Created topic “test66”.字眼恭喜成功了。

总结

还是很菜,学习还要继续!下一章将进行如何操作利用php、py、java进行操作kafka!