安装配置Zookeeper和Kafka集群

环境配置参考 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.10110.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就可以用作消息队列的收发了

    原文作者:幽篁处山鬼
    原文地址: https://www.jianshu.com/p/71fbc6131509
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞