以3台机器为例,进行配置。现在有3台机器,ip地址分别为
· 192.168.1.50
· 192.168.1.51
· 192.168.1.52
1、配置zookeeper集群
首先下载zookeeper,并解压至每台机器的适当的目录中。过程百度:
地址:http://mirrors.hust.edu.cn/apache/zookeeper/
解压,进入conf目录下:
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
修改:
dataDir=/opt/zookeeper-3.4.10/data
dataLogDir=/opt/zookeeper-3.4.10/logs
加入:
#cluster config
server.1=192.168.1.50:2888:3888
server.2=192.168.1.51:2888:3888
server.3=192.168.1.52:2888:3888
解释:1,2,3是定义的机器编号
2888和3888是zookeeper之间通讯(选举leader等)时所使用的端口。
在每台机器的zookeeper所配置的data目录下,建立myid文件。使用myid为当前机器分配一个编号。 执行:
192.168.1.50服务器上:echo ‘1’ > myid
192.168.1.51服务器上:echo ‘2’ > myid
192.168.1.52服务器上:echo ‘3’ > myid
在.bash_profile文件中增加zookeeper配置:vi ~/.bash_profile
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.10
export PATH=$ZOOKEEPER_HOME/bin:$PATH
执行.bash_profile source .bash_profile
启动zookeeper :./zkServer.sh start
zkServer.sh start 启动zk
zkServer.sh stop 停止zk
zkServer.sh status 查看zk状态
tail -500f zookeeper.out 查看zk的输出文件
问题:
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg Error contacting service. It is probably not……
解决办法:
service iptables stop 关闭防火墙
再启动
查看zookeeper状态
/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
显示follower或者leader Ok
2、kafka集群配置
解压 tar -zxvf kafka_2.11-0.10.0.1.tgz -C /opt/
进入配置文件目录cd /opt/kafka_2..10.0.1/config/
修改kafka配置:server.properties
broker.id = 0集群中的编号和zk的myid一样
port = 9092 当前kafka对外的默认端口
host.name = 192.168.0.1 这个参数默认是关闭的,需要手动配置,服务器本地Ip
log.dirs = /opt/kafka_2.11-0.10.0.1/kafkalogs/ 目录存放位置,方便查看
zookeeper.connect = localhost:2181,localhost:2181.. 设置zookeeper集群连接端口
常用命令:
启动kafka服务:
./kafka-server-start.sh -daemon ../config/server.properties
查看当前Kafka集群中Topic的情况
bin/kafka-topics.sh –list –zookeeper127.0.0.1:2181
查看Topic的分区和副本情况
bin/kafka-topics.sh –describe –zookeeper 127.0.0.1:2181 –topic test0
创建Topic
bin/kafka-topics.sh –create –topic test0–zookeeper 127.0.0.1:2181 –config max.message.bytes=12800000 –config flush.messages=1 –partitions 5 –replication-factor 1
删除kafka的topic
bin/kafka-topics.sh –delete –zookeeper 127.0.0.1:2181 –topic test0
删除kafka中该topic相关的目录
在server.properties中找到配置log.dirs,把该目录下test0相关的目录删掉
查看topic消费到的offset
bin/kafka-run-class.sh kafka.tools.GetOffsetShell –broker-list 127.0.0.1:9092 –topic test0 –time -1
查看topic各个分区的消息的信息
bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker –group testgroup –topic test0 –zookeeper 127.0.0.1:2181
修改topic的partition数量(只能增加不能减少)
bin/kafka-topics.sh –alter –zookeeper 127.0.0.1:2183 –partitions 10 –topic test0
修改topic的副本数
自己写一个文件addReplicas.json,文件的内容是JSON格式的,比如:
{
“version”: 1,
“partitions”: [
{
“topic”: “test0”,
“partition”: 0,
“replicas”: [
1,2
]
},
{
“topic”: “test0”,
“partition”: 1,
“replicas”: [
1,2,3
]
},
{
“topic”: “test0”,
“partition”: 2,
“replicas”: [
1,2,3
]
}
]
}
运行:
bin/kafka-reassign-partitions.sh –zookeeper 127.0.0.1:9092 –reassignment-json-file addReplicas.json –execute