安装配置Zookeeper和Kafka集群
2017-09-07 本文已影响1218人
幽篁处山鬼
环境配置参考 ELK环境配置
安装配置zookeeper
部署在zk集群节点机器上(最少需要三台)
-
安装zookeeper
tar zxf zookeeper-3.4.9.tar.gz mv /opt/elk/zookeeper-3.4.9 /usr/local/zookeeper mkdir /home/zk_data #创建zk数据存放目录 echo 101 > /home/zk_data/myid # 创建myid文件,三台机器上不可相同
-
配置zookeeper
cd /usr/local/zookeeper/conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/zk_data clientPort=2181 server.101=10.8.189.101:2888:3888 server.102=10.8.189.102:2888:3888 server.103=10.8.189.103:2888:3888 Zookeeper默认会将控制台信息输出到启动路径下的zookeeper.out中 显然在生产环境中我们不能允许Zookeeper这样做,通过如下方法,可以让Zookeeper输出按尺寸切分的日志文件: 修改conf/log4j.properties zookeeper.root.logger=INFO, CONSOLE改为zookeeper.root.logger=INFO, ROLLINGFILE 修改bin/zkEnv.sh文件 ZOO_LOG4J_PROP="INFO,CONSOLE"改为ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
-
zk相关命令
/usr/local/zookeeper/bin/zkServer.sh start #启动zk /usr/local/zookeeper/bin/zkServer.sh status #查看zk启动状态 正常三台节点,应有两台follower和一台leader
安装配置kafka
Kafka 是一个高吞吐量的分布式发布订阅日志服务,具有高可用、高性能、分布式、高扩展、持久性等特性。目前已经在各大公司中广泛使用。和之前采用 Redis 做轻量级消息队列不同,Kafka 利用磁盘作队列,所以也就无所谓消息缓冲时的磁盘问题。此外,如果公司内部已有 Kafka 服务在运行,logstash 也可以快速接入,免去重复建设的麻烦
在10.8.189.101
和10.8.189.102
两台机器上部署kafka做集群
tar zxf kafka_2.12-0.10.2.1.tgz
mv /opt/elk/kafka_2.12-0.10.2.1 /usr/local/kafka
cd /usr/local/kafka
mkdir /home/data # 创建消息文件存储的路径
编辑kafka配置文件
vim /usr/local/kafka/config/server.properties
broker.id=101 # brokerid 每台机器不同
delete.topic.enable=true
num.network.threads=3
num.io.threads=8
post=9092
hostname=10.8.189.101
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/home/data
num.partitions=6
num.recovery.threads.per.data.dir=1
log.retention.hours=72
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
kafka默认启动以hostname识别
# vim /etc/hosts
10.8.189.101 elk1
10.8.189.102 elk2
10.8.189.103 elk3
kafka启动
cd /usr/local/kafka/
nohup /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
测试zk和kafka之间的连通性
#在10.8.189.101上创建一个topics主题
/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper 10.8.189.101:2181 --replication-factor 2 --partitions 1 --topic kafka_es
--replication-factor 2 #复制两份
--partitions 1 #创建1个分区
--topic #主题为shuaige
#在10.8.189.101上创建一个发布者
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list 10.8.189.101:9092 --topic kafka_es
#在10.8.189.102上创建一个订阅者
/usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper 10.8.189.102:2181 --topic kafka_es --from-beginning
# 删除一个topic
# bin/kafka-topics.sh --delete --zookeeper 10.8.189.101:2181 --topic topics_name
# 如果还不能删除, 可以到zookeeper中去干掉它
# cd /usr/local/zookeeper-3.4.10/
# bin/zkCli.sh
# ls /brokers/topics # 查看topic
# rmr /brokers/topics/topics_name # 删除topic
在发布者的终端中输入字符信息,可以在订阅者上看到输出。这个时候kafka就可以用作消息队列的收发了