目录
官方文档:http://kafka.apache.org/documentation/#basic_ops_mirror_maker
环境
三台机器
hostname | ip |
---|---|
kafka01 | 10.27.148.84 |
kafka02 | 10.27.148.85 |
kafka03 | 10.27.148.86 |
机器初始化
- 挂载磁盘
- 添加iptables白名单
- 修改hosts
安装java环境
yum install -y install jdk1.8.0_101.x86_64
安装zookeeper
kafka的安装包里默认带了一个zookeeper,因为kafka数据一致性包括集群borker信息、分区、消费者、生产者等一些关键性配置都存储在kafka中,所以生产环境最好是有一个单独的zookeeper集群。这里用三台kafka节点同时安装zookeeper。
mkdir -p /data/zookeeper/{zkdata,zkdatalog}
cd /data/zookeeper/
wget http://mirror.bit.edu.cn/apache/zookeeper/current/zookeeper-3.4.12.tar.gz
tar zxvf zookeeper-3.4.12.tar.gz
#复制一份zoo_sample.cfg 并命名为zoo.cfg zookeeper启动是读取zoo.cfg文件。
cp zookeeper-3.4.12/conf/zoo_sample.cfg zookeeper-3.4.12/conf/zoo.cfg
cd zookeeper-3.4.12/conf/
#vim zoo.cfg
tickTime=2000 #心跳时间间隔
initLimit=10 #初始化连接时最长能忍受多少个心跳时间间隔数,5*2000 = 10秒
syncLimit=5 #最长不能超过多少个 tickTime 的时间长度
dataDir=/data/zookeeper/zkdata #快照日志的存储路径
dataLogDir=/data/zookeeper/zkdatalog 事物日志的存储路径#
clientPort=2181
server.1 = 10.27.148.84:2888:3888 #第一个端口( port )是从( follower )机器连接到主( leader )机器的端口,第二个端口是用来进行 leader 选举的端口
server.2 = 10.27.148.85:2888:3888
server.3 = 10.27.148.86:2888:3888
#创建myid文件 每个server的id不一样
echo "1" > /opt/zookeeper/zkdata/myid
#server2
echo "2" > /opt/zookeeper/zkdata/myid
#server3
echo "3" > /opt/zookeeper/zkdata/myid
将三台机器的ip也加进每台机器的iptables白名单里边,同时zookeeper的三个端口也加进白名单
cd /data/zookeeper/zookeeper-3.4.12/bin/
./zkServer.sh start
./zkServer.sh status
安装kafka
mkdir -p /data/kafka/kafkalogs
cd /data/kafka
wget http://apache.01link.hk/kafka/1.1.0/kafka_2.11-1.1.0.tgz
tar zxvf kafka_2.11-1.1.0.tgz
cd kafka_2.11-1.1.0/config/
#vim server.properties
#每台服务器的broker.id都不能相同
broker.id=0
port = 9092
host.name= 10.27.148.84
#在log.retention.hours=168 下面新增下面三项
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880
log.dirs = /data/kafka/kafkalogs #消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,num.io.threads要大于这个目录的个数
#设置zookeeper的连接端口
zookeeper.connect=10.27.148.84:2181,10.27.148.85:2181,10.27.148.86:2181
iptables -A INPUT -p tcp --dport 9092 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9092 -j ACCEPT
service iptables restart
./kafka-server-start.sh -daemon ../config/server.properties #启动kafka
#创建一个topic并生产和消费测试一下
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 1 --topic test #创建topic
./kafka-console-producer.sh --broker-list localhost:9092 --topic test #在一台服务器上创建一个生产者
./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning #在一台服务器上创建消费者
kafka常用命令
- 查看topic的分区信息
./kafka-topics.sh --describe --zookeeper 127.0.0.1:2181
- 生产一条数据
./kafka-console-producer.sh --broker-list 127.0.0.1:9092--topic testtopic
- 消费数据
./kafka-console-consumer.sh --bootstrap-server 10.11.128.87:9092 --topic testtopic
- 修改分区数量(分区数量只可以增加,不能删除)
./kafka-topics.sh --zookeeper 127.0.0.1:2181 --alter --topic testtopic --partitions 60
- 查看消费者分组
./kafka-consumer-groups.sh --list --bootstrap-server 127.0.0.1:9092
- 分区消费情况和消费者信息
./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group test
- 查看队列堆积
./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper 127.0.0.1:2181 --group test --topic testtopic
- 创建topic
./kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic testtopic