Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32675
  • 博文数量: 14
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 151
  • 用 户 组: 普通用户
  • 注册时间: 2017-04-07 23:15
个人简介

一步一个脚印,扎扎实实投资自己。

文章分类

全部博文(14)

文章存档

2017年(14)

我的朋友

分类: 服务器与存储

2017-10-17 14:39:56

环境准备:
Ubuntu 16.04.1 LTS
    node0:192.168.0.240    #只装zkui-master用于管理
    node1:192.168.0.241
    node2:192.168.0.242
    node3:192.168.0.243
jdk-8u60-linux-x64.tar.gz
zookeeper-3.4.9.tar.gz
zkui-master.zip
kafka_2.12-0.10.2.0.tgz

备注:
1、所有软件在/tmp/目录解压,安装在/opt/目录下
2、所有软件使用ubuntu用户安装,启动。
3、如果对zkCli命令行管理很熟悉,zkui可以掠过不装。
4、虽然说zk+kafka安装很简单但是本人信奉好记性不如烂笔头,记下来有利于以后快速复现。 

其实zookeeper的作用其实就是提供kafka消息存储与高可用,大致关系嘛,看下图:



安装jdk1.8:
修改/etc/profile,在文件最后添加如下内容
  1. JAVA_HOME=/opt/jdk1.8
  2. JAVA_BIN=$JAVA_HOME/bin
  3. CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  4. PATH=$PATH:$JAVA_HOME:$JAVA_BIN:$CLASSPATH


node1-3安装zookeeper:
  1. tar -zxf /tmp/zookeeper-3.4.9.tar.gz -C /opt/
  2. mv /opt/zookeeper-3.4.9 /opt/zookeeper
  3. cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
修改配置文件:
  1. sudo vi /opt/zookeeper/conf/zoo.cfg
配置内容如下:
  1. tickTime=2000
  2. initLimit=10
  3. syncLimit=5
  4. dataDir=/data/zookeeper
  5. clientPort=2181
  6. server.1=192.168.0.241:2888:3888
  7. server.2=192.168.0.242:2888:3888
  8. server.3=192.168.0.243:2888:3888
设置节点ID文件myid:
  1. mkdir -p /data/zookeeper
  2. touch /data/zookeeper/myid
  3. echo "1" > /data/zookeeper/myid #node1=1,node2=2,node3=3
启动zookeeper
  1. /opt/zookeeper/bin/zkServer.sh start


node0安装zkui:
  1. unzip /tmp/zkui-master.zip && cd /tmp/zkui-master
  2. mvn clean install    #编译过程要下载依赖包,请耐心等待
  3. mkdir -p /opt/zkui-master
  4. cp -af /tmp/zkui-master/config.cfg /tmp/zkui-master/target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar /opt/zkui-master/
修改配置文件/opt/zkui-master/config.cfg以下选项
  1. zkServer=192.168.0.241:2181,192.168.0.242:2181,192.168.0.243:2181
新增启动文件/opt/zkui-master/startup.sh
  1. #!/bin/bash
  2. JAVA_HOME=/opt/jdk1.8
  3. JAVA_BIN=$JAVA_HOME/bin
  4. CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  5. PATH=$PATH:$JAVA_HOME:$JAVA_BIN:$CLASSPATH
  6. nohup java -jar /opt/zkui-master/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar 1>/opt/zkui-master/zkui.log 2>&1 &
启动zkui
  1. sh /opt/zkui-master/startup.sh
正常情况下可以通过登录zkui

用户名:admin
密码:manager

/brokers/ids路径可以看到zookeeper集群状态



node1-3安装kafka:
  1. tar -zxf /tmp/kafka_2.12-0.10.2.0.tgz -C /opt/
  2. mv /opt/kafka_2.12-0.10.2.0 /opt/kafka
  3. mkdir -p /logs/kafka-logs
设置配置文件/opt/kafka/conf/server.properties如下(红色部分作修改,其余默认):
  1. broker.id=1    #node1=1,node2=2,node3=3
  2. port=9092
  3. listeners=PLAINTEXT://:9092    #设置broker监听主机名及端口
  4. host.name=192.168.0.241    #根据设置为broker节点的IP地址,如果不设置会导致选举不出leader
  5. advertised.host.name=node1    #设置broker名,不设置会默认使用服务器名。如果服务器名有重名,就会导致leader无效连不上
  6. num.network.threads=3
  7. num.io.threads=8
  8. socket.send.buffer.bytes=102400
  9. socket.receive.buffer.bytes=102400
  10. socket.request.max.bytes=104857600
  11. log.dirs=/logs/kafka-logs
  12. num.partitions=3    #这个值建议设置成集群里broker数
  13. num.recovery.threads.per.data.dir=1
  14. log.retention.hours=168
  15. log.segment.bytes=1073741824
  16. log.retention.check.interval.ms=300000
  17. log.cleaner.enable=false
  18. zookeeper.connect=192.168.0.241:2181,192.168.0.242:2181,192.168.0.243:2181
  19. zookeeper.connection.timeout.ms=6000
  20. delete.topic.enable=true    #如果不设置这个会出现后面备注的大坑
启动kafka
  1. /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

测试kafka生产消费情况
创建topic
  1. /opt/kafka/bin/kafka-topics.sh \
  2. --zookeeper 192.168.0.241:2181,192.168.0.242:2181,192.168.0.243:2181 \
  3. --create --topic xixi \
  4. --partitions 3 \    #partitions建议设置程broker数或者broker*2,以提高吞吐量
  5. --replication-factor 2    #replication-factor建议设置成2,以提供分片高可用
查看所创建的topic
  1. /opt/kafka/bin/kafka-topics.sh \
  2. --zookeeper 192.168.0.241:2181,192.168.0.242:2181,192.168.0.243:2181 \
  3. --list
在node1创建生产者
  1. /opt/kafka/bin/kafka-console-producer.sh \
  2. --broker-list 192.168.0.241:9092,192.168.0.242:9092,192.168.0.243:9092 \
  3. --topic xixi
在node2创建消费者
  1. /opt/kafka/bin/kafka-console-consumer.sh \
  2. --zookeeper 192.168.0.241:2181,192.168.0.242:2181,192.168.0.243:2181 \
  3. --topic xixi
正常情况下在node1生产者端输入信息,即可在node2消费者端看到如下:
node1生产情况截图
node2消费情况截图

删除topic(使用zkCli或zkui-master)
  1. /opt/zookeeper/bin/zkCli.sh
  1. [zk: localhost:2181(CONNECTED) 5] rmr /brokers/topics/xixi


坑坑备注:
/opt/kafka/bin/kafka-topics.sh --zookeeper 192.168.0.241:2181,192.168.0.242:2181 --delete --topic xixi 
1、以上命令只是标记删除topic,并不是真正删除topic文件。
2、要解决此问题一定要在配置文件中加上delete.topic.enable=true
阅读(922) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~