下载kafka
网址:http://kafka.apache.org/
进入网址:http://kafka.apache.org/downloads
系统环境
1、操作系统:64位CentOS7
2、jdk版本:1.8.0_271
3、zookeeper版本:zookeeper-3.4.6
4、三台服务器部署成功:192.168.192.150; 192.168.192.152; 192.168.192.155;
前置设置:
1、设置时区和查看时区
[root@localhost /]# timedatectl set-timezone Asia/Shanghai
[root@localhost /]# timedatectl
同步时钟
[root@master /]# yum -y install ntp
ntp1到ntp7都可以
[root@master /]# ntpdate ntp1.aliyun.com
13 Jan 21:50:10 ntpdate[15275]: step time server 120.25.115.20 offset -1.294833 sec
2、设置主机名,分别在150、152和155机器上设置
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
3、设置本机的hosts , 三台机器都设置
vi /etc/hosts
192.168.192.150 master
192.168.192.152 node1
192.168.192.155 node2
在windows10下C:\Windows\System32\drivers\etc加入如下信息:
127.0.0.1 localhost
::1 localhost
192.168.93.150 master
192.168.93.152 node1
192.168.93.155 node2
说明:修改windows10 中的hosts可以把这个文件复制到桌面上之后加入上面的内容后再替换掉C:\Windows\System32\drivers\etc下的hosts文件
要不修改hosts文件会提示没权限。
这样代码就可直接写主机名了,就是windows和centos下创建了双向的主机与IP的映射
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"node1:9092,node2:9092");
----------------------------------------------------------安装部份---------------------------------------------------------------------------------------
1、解压kafka
tar -zxvf /usr/local/soft/kafka_2.11-2.2.0.tgz -C /usr/local/
2、配置kafka
[root@localhost]# vi /usr/local/kafka_2.11-2.2.0/config/server.properties
Kafka的配置信息就是在server.properties里面配置的
找到下面两行代码并分别注释
#broker.id=0
#zookeeper.connect=localhost:2181
修改存放日志的目录
log.dirs=/kafka_2.11-2.2.0/kafka-logs
在文件底部添加如下三个配置:
broker.id=1
zookeeper.connect=192.168.192.150:2181,192.168.192.152:2181,192.168.192.155:2181
下面必须是主机名,master,master是自己起的名
listeners = PLAINTEXT://master:9092
3、创建修改后的日志目录
[root@localhost local]# cd kafka_2.11-2.2.0/
[root@localhost kafka_2.11-2.2.0]# mkdir kafka-logs
说明:如果是单机版的话,默认即可,我们什么都不需要改动。现在我们是要配置集群,所以需要配置一些参数
1)、broker.id:每台机器不能一样
2)、zookeeper.connect:因为我有3台zookeeper服务器,所以在这里zookeeper.connect设置为3台,必须全部加进去
3)、listeners:在配置集群的时候,必须设置,不然以后的操作会报找不到leader的错误
WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 40 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
4)、看好这一点,另外两台服务器,zookeeper.connect的配置跟这里的一样,但是broker.id和listeners不能一样
5、拷贝kafka到另外两台服务器
[root@localhost config]# scp -r /usr/local/kafka_2.11-2.2.0 root@192.168.192.152:/usr/local/
[root@localhost config]# scp -r /usr/local/kafka_2.11-2.2.0 root@192.168.192.155:/usr/local/
中间会要求输入目标机器的密码,按提示操作就行了,然后修改这两台服务器的broker.id和listeners,如下:
6、192.168.192.152
[root@localhost]# vi /usr/local/kafka_2.11-2.2.0/config/server.properties
然后修改一下broker.id=2和listeners = PLAINTEXT://192.168.192.152:9092,zookeeper.connect不需要改都一样
broker.id=2
zookeeper.connect=192.168.192.150:2181,192.168.192.152:2181,192.168.192.155:2181
listeners = PLAINTEXT://node1:9092
7、192.168.192.155
[root@localhost]# vi /usr/local/kafka_2.11-2.2.0/config/server.properties
然后修改一下broker.id=3和listeners = PLAINTEXT://192.168.192.155:9092,zookeeper.connect不需要改都一样
broker.id=3
zookeeper.connect=192.168.192.150:2181,192.168.192.152:2181,192.168.192.155:2181
listeners = PLAINTEXT://node2:9092
8、开启相关端口如果防火墙已经关才的话此部可以忽略
三台机器都要开启,kafka通信默认是通过9092端口,也就是我们上面配的listeners
[root@localhost config]# firewall-cmd --zone=public --add-port=9092/tcp --permanent
[root@localhost config]# firewall-cmd --reload
9、启动zookeeper
三台都要启动
[root@localhost /]# /usr/local/zookeeper-3.4.6/bin/zkServer.sh start
10、启动kafka,
三台都要启动
[root@localhost /]# /usr/local/kafka_2.11-2.2.0/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.11-2.2.0/config/server.properties
11、jps命令检查是否启动成功
[root@localhost /]# jps
9287 Jps
9224 Kafka
8329 QuorumPeerMain
12、创建topic
[root@localhost /]# cd /usr/local/kafka_2.11-2.2.0/
[root@localhost kafka_2.11-2.2.0]# bin/kafka-topics.sh --create --zookeeper 192.168.192.150:2181 --replication-factor 1 --partitions 1 --topic test
Created topic test.
如果成功的话,会输出:Created topic "test".
13、查看topic
虽然在192.168.192.150上创建的topic,但是另外两台机器上也能看到,到192.168.192.152客户端
[root@localhost /]# cd /usr/local/kafka_2.11-2.2.0/
[root@localhost kafka_2.11-2.2.0]# bin/kafka-topics.sh --list --zookeeper 192.168.192.152:2181
test
备注:这里的IP可以是192.168.192.150、192.168.192.152、192.168.192.155中的任何一个,在三台服务器中的任何一台都可以看到主题
14、创建发布
在192.168.192.150上创建
[root@localhost kafka_2.11-2.2.0]# bin/kafka-console-producer.sh --broker-list 192.168.192.150:9092 --topic test
>a
>b
>c
15、创建消费
在192.168.192.152上消费
[root@localhost kafka_2.11-2.2.0]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.192.152:9092 --topic test --from-beginning
a
b
c