操做系统 : ubuntu-16.04.2
jdk : jdk1.8.0_144
zookeeper : zookeeper3.4.6
kafka : kafka_2.12-0.11.0.0
搭建过程当中,用三台虚拟机来实现环境的配置,3台虚拟机的ip以下:apache
一、确保已经安装并配置了jdk环境
二、开始搭建zookeeper集群
3台虚拟机均进行如下操做:bootstrap
// 解压下载好的zookeeper压缩包并重命名 cd /usr/local tar -zxvf /home/jwing/Downloads/zookeeper-3.4.6.tar.gz mv zookeeper-3.4.6 zookeeper // 建立日志文件的存放位置 mkdir ./zookeeper/logs // 修改配置文件 cd zookeeper/conf // 若本来文件不存在,执行cp zoo_sample.cfg zoo.cfg vi zoo.cfg
// 修改 dataDir=/usr/local/zookeeper/data // 添加 dataLogDir=/usr/local/zookeeper/logs server.1=192.168.131.130:2888:3888 server.2=192.168.131.131:2888:3888 server.3=192.168.131.132:2888:3888
// 建立myid,内容与上方server.*中的*对应,如192.168.131.130以下 cd ../data echo "1" > myid
// 在系统环境中配置zookeeper的路径 vi /etc/profile
// 在文件最下方添加zookeeper路径 export ZOOKEEPER_HOME=/usr/local/zookeeper // 多路径PATH写法为PATH=${ZOOKEEPER_HOME}/bin:${KAFKA_HOME}/bin:$PATH PATH=${ZOOKEEPER_HOME}/bin:$PATH export PATH
// 使修改完的环境变量生效 source /etc/profile
// 开启zookeeper /usr/local/zookeeper/bin/zkServer.sh start // 查看zookeeper集群的状态,出现Mode:follower或是Mode:leader则表明成功 /usr/local/zookeeper/bin/zkServer.sh status
3台虚拟机均进行如下操做:ubuntu
// 解压下载好的kafka压缩包并重命名 cd /usr/local tar -zxvf /home/jwing/Downloads/kafka_2.12-0.11.0.0.tgz mv kafka_2.12-0.11.0.0 kafka // 修改配置文件 vi ./kafka/config/server.properties
须要修改的内容以下(192.168.131.130):测试
broker.id=0 listeners=PLAINTEXT://192.168.131.130:9092 zookeeper.connect=192.168.131.130:2181,192.168.131.131:2181,192.168.131.132:2181
须要修改的内容以下(192.168.131.131):ui
broker.id=1 listeners=PLAINTEXT://192.168.131.131:9092 zookeeper.connect=192.168.131.130:2181,192.168.131.131:2181,192.168.131.132:2181
须要修改的内容以下(192.168.131.132):spa
broker.id=2 listeners=PLAINTEXT://192.168.131.132:9092 zookeeper.connect=192.168.131.130:2181,192.168.131.131:2181,192.168.131.132:2181
// 在系统环境中配置kafka的路径 vi /etc/profile
// 在文件最下方添加kafka路径 export KAFKA_HOME=/usr/local/kafka // 多路径PATH写法为PATH=${ZOOKEEPER_HOME}/bin:${KAFKA_HOME}/bin:$PATH PATH=${KAFKA_HOME}/bin:$PATH export PATH
// 使修改完的环境变量生效 source /etc/profile
一、开启3台虚拟机的zookeeper程序
/usr/local/zookeeper/bin/zkServer.sh start
开启成功后查看zookeeper集群的状态
/usr/local/zookeeper/bin/zkServer.sh status
出现Mode:follower或是Mode:leader则表明成功
二、在后台开启3台虚拟机的kafka程序(cd /usr/local/kafka)
./bin/kafka-server-start.sh -daemon config/server.properties
三、在其中一台虚拟机(192.168.131.130)建立topic
/usr/local/kafka/bin/kafka-topics.sh –create –zookeeper 192.168.131.130:2181 –replication-factor 3 –partitions 1 –topic my-replicated-topic
// 查看建立的topic信息
/usr/local/kafka/bin/kafka-topics.sh –describe –zookeeper 192.168.131.130:2181 –topic my-replicated-topic 操作系统
四、将192.168.131.130做为生产者,将192.168.131.131做为消费者
在192.168.131.130中运行
/usr/local/kafka/bin/kafka-console-producer.sh –broker-list 192.168.131.130:9092 –topic my-replicated-topic
在192.168.131.131中运行
/usr/local/kafka/bin/kafka-console-consumer.sh –bootstrap-server 192.168.131.131:9092 –from-beginning –topic my-replicated-topic
(在老版本的kafka中使用/usr/local/kafka/bin/kafka-console-consumer.sh –zookeeper 192.168.131.131:2181 –from-beginning –topic my-replicated-topic命令)
五、在192.168.131.130主机中输入消息,192.168.131.131主机中将会接收
(更多测试能够在kafka官网中查看)日志
注意事项:
一、确保/etc/profile中环境配置是正确的,并在更新后启用(source /etc/profile)
二、开启kafka前必须先开启全部zookeeper
三、server.properties中broker.id不能重复
四、server.properties中listeners参数后面的ip地址最好写上
五、若server.properties中listeners,zookeeper.connect参数后填写的是ip地址(192.168.131.130等),则在运行命令时也应该使用ip地址代替localhost(如/usr/local/kafka/bin/kafka-console-producer.sh –broker-list 192.168.131.130:9092 –topic my-replicated-topic避免写为/usr/local/kafka/bin/kafka-console-producer.sh –broker-list localhost:9092 –topic my-replicated-topic)
六、出现内存不足的错误时,尝试关闭多余的程序,仍是不行就重启了。code