一.准备工作
1.下载好zookeeper,
我用的是3.6.2,进去后就下载他们推荐就可以了
https://zookeeper.apache.org/releases.html
版本最好和kafka对应,因为不同版本的对应关系不一样
2.下载kafka
http://kafka.apache.org/downloads
下面两个任意一个都可以,如果想看有啥区别看文档介绍
二.部署zookeeper
1.解压文件到zookeeper3.6.2文件中
2.在zookeeper3.6.2\apache-zookeeper-3.6.2-bin 目录下增加数据存放位置和日志位置
2.1 新建文件夹 data-file
2.2 在data-file下新建文件夹 data1 log1 data2 log2 data3 log3
2.3 分别在data1 data2 data3 分别新建文件myid没有后缀,内容按照顺序依次是 1 、2、3, 这个三个数字分别是zookeeper的服务server的id 1 、2 、3
2.复制conf下的zoo_sample.cfg配置文件三份,分别命令为zoo-1.cfg zoo-2.cfg zoo-3.cfg
配置中注意:路径的分隔符要么用 “/” 要么用 “\\”,不然启动的时候会报myid文件缺失,因为服务是自通过dataDir配置的路径下找myid文件
zoo-1.cfg配置如下
# 存放数据
dataDir=D:\\soft\\zookeeper3.6.2\\apache-zookeeper-3.6.2-bin\\data-file\\data1
#存放日志
dataLogDir=D:\\soft\\zookeeper3.6.2\\apache-zookeeper-3.6.2-bin\\data-file\\log1
# the port at which the clients will connect
# 监听端口
clientPort=2181
# 配置集群服务,这里每个文件都一样
server.1=192.168.31.53:2881:3881
server.2=192.168.31.53:2882:3882
server.3=192.168.31.53:2883:3883
zoo-2.cfg配置如下
# 存放数据
dataDir=D:\\soft\\zookeeper3.6.2\\apache-zookeeper-3.6.2-bin\\data-file\\data2
#存放日志
dataLogDir=D:\\soft\\zookeeper3.6.2\\apache-zookeeper-3.6.2-bin\\data-file\\log2
# the port at which the clients will connect
# 监听端口
clientPort=2182
# 配置集群服务,这里每个文件都一样
server.1=192.168.31.53:2881:3881
server.2=192.168.31.53:2882:3882
server.3=192.168.31.53:2883:3883
zoo-3.cfg配置如下
# 存放数据
dataDir=D:\\soft\\zookeeper3.6.2\\apache-zookeeper-3.6.2-bin\\data-file\\data3
#存放日志
dataLogDir=D:\\soft\\zookeeper3.6.2\\apache-zookeeper-3.6.2-bin\\data-file\\log3
# the port at which the clients will connect
# 监听端口
clientPort=2183
# 配置集群服务,这里每个文件都一样
server.1=192.168.31.53:2881:3881
server.2=192.168.31.53:2882:3882
server.3=192.168.31.53:2883:3883
3.启动文件的配置:复制zkServer.cmd文件三份
zkServer1.cmd 增加配置文件设置
set ZOOCFG=D:\\soft\\zookeeper3.6.2\\apache-zookeeper-3.6.2-bin\\conf\\zoo-1.cfg
注意这个一定要放在ZOOMAIN下面,上面是主函数,放上面就无法加载到了
zkServer2.cmd
set ZOOCFG=D:\\soft\\zookeeper3.6.2\\apache-zookeeper-3.6.2-bin\\conf\\zoo-2.cfg
zkServer3.cmd
set ZOOCFG=D:\\soft\\zookeeper3.6.2\\apache-zookeeper-3.6.2-bin\\conf\\zoo-3.cfg
4.启动zookeeper,直接点击zkServer1.cmd zkServer2.cmd zkServer3.cmd 这几个文件就可以了
如果看到端口被绑定了 或者 集群某个服务Cannot open channel to 3 at election address /192.168.31.53:3883 这样的错误不用管,把其他几个启动好就可以了
三.部署kafka
1.讲文件解压到 kafka-cluster文件夹中
2.复制kafka加压文件两份,分别重新命名为kafka-1,kafka-2,kafka-3
3.分别配置config下的server.properties文件
配置如下
#唯一标识
broker.id=0
#监听端口
port=9092
host.name=192.168.31.53
#消息最大大小
message.max.bytes=50485760
#配置副本数量
default.replication.factor=2
#获取的最大大小
replica.fetch.max.bytes=50485760
#队列中消息持久化存放的位置,可以多个目录,用逗号分开
log.dirs=/tmp/kafka-logs
#默认的分区数
num.partitions=2
#对应着刚刚配置的zookeeper的三个ip与端口地址
zookeeper.connect=192.168.31.53:2181,192.168.31.53:2182,192.168.31.53:2183
kafka-1,kafka-2,kafka-3三个配置不同的地方是
broker.id=0
broker.id=1
broker.id=2
端口
port=9092
port=9093
port=9094
4.启动kafka服务
4.1开启三个dos窗口
4.2 cd 到kafka的安装目录
4.3 命令启动:kafka的命令启动需要指定配置文件,三个的启动命令都是这个
.\bin\windows\kafka-server-start.bat .\config\server.properties
四.测试集群是否可用
5.1 创建一个topic: 标红的部分一定不能省略,后面的ip如果想用localhost或者127.0.0.1请自行设置下,不然不识别
.\bin\windows\kafka-topics.bat --create --zookeeper 192.168.31.53:2181 --replication-factor 1 --partitions 1 --topic test
5.2 查看是否创建成功
.\bin\windows\kafka-topics.bat --list --zookeeper 192.168.31.53:2181
5.3 发送消息:新开窗口执行命令
.\bin\windows\kafka-console-producer.bat --broker-list 192.168.31.53:9092 --topic test
5.4 接收消息
下面这个命令高版本不支持会报错
.\bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic test --from-beginning
报错如下:第二个红框提示需要连接某台服务而且是必须的参数
按照提示再次执行命令:
.\bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.31.53:9094 --topic test
控制台显示:只要生产者发出消息,这里就会自动接收到
注意:执行消费者命令时,host不要用localhost否则会不识别,报错如下