一、安装前的准备
1 ip分配
192.168.19.101 jdk zk kafka
192.168.19.102 jdk zk kafka
192.168.19.103 jdk zk kafka
2 修改hosts文件
# cat /etc/hosts |tail -3
192.168.19.101 server1
192.168.19.102 server2
192.168.19.103 server3
二、jdk安装
安装链接:https://blog.csdn.net/sun_xuegang/article/details/86539449
三、zk安装
1.软件下载 解压
# mkdir -p /data/utils; cd /data/utils
# wget https://apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
# tar zxvf zookeeper-3.4.14.tar.gz
2.配置文件(当前机器为192.168.19.101)
# cd /data/utils/zookeeper-3.4.14
# cp conf/zoo_sample.cfg conf/zoo.cfg
# cat conf/zoo.cfg |grep -v ^#
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/utils/zkdata #数据目录
dataLogDir=/data/utils/zkdatalog #日志目录
clientPort=2181
server.1=server1:2888:3888 #server. 后面那个数字要记住 并写在myid里面去
server.2=server2:2888:3888
server.3=server3:2888:3888
# 将上面的标识 写到myid里面去,myid目录为配置文件中的dataDir, 注意 !!!!
# echo 1 > /data/utils/zkdata/myid
3 添加环境变量
# cat /etc/profile.d/zk.sh
#!/bin/bash
ZK_HOME=/data/utils/zookeeper-3.4.14
PATH=$PATH:$ZK_HOME/bin
export ZK_HOME PATH
# . /etc/profile.d/zk.sh #使配置文件生效
4 启动
# ./bin/zkServer.sh start # start
# ./bin/zkServer.sh status #status
# ./bin/zkServer.sh start-foreground #log
# ./bin/zkCli.sh -server 127.0.0.1:2181 #本机连接
5 官方文档:http://zookeeper.apache.org/doc/r3.4.14/zookeeperStarted.html
四、kafka安装
1 下载文件解压
# mkdir -p /data/utils; cd /data/utils
# wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz
# tar zxvf kafka_2.12-2.2.0.tgz
# cd kafka_2.12-2.2.0
2 配置文件
# cat config/server.properties |grep -v ^#
broker.id=1
delete.topic.enable=true #topic是否可以删除 默认为false
listeners=PLAINTEXT://192.168.19.101:9092 #对应各主机ip
num.network.threads=3 #broker 处理消息的最大线程数,一般情况下不需要去修改
num.io.threads=8 #broker处理磁盘IO 的线程数 ,数值应该大于你的硬盘数
socket.send.buffer.bytes=102400 #发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.receive.buffer.bytes=102400 #kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.request.max.bytes=104857600 #这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
log.dirs=/cust/kafka-logs #消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这个目录,如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个
num.partitions=2 #默认的分区数,一个topic默认1个分区数,生产环境数字大些,小于集群机器数
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168 #默认消息的最大持久化时间,168小时,7天
message.max.byte=5242880
replica.fetch.max.bytes=5242880
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
default.replication.factor=2
3 添加环境变量
# cat /etc/profile.d/kafka.sh
#!/bin/bash
KAFKA_HOME=/data/utils/kafka_2.12-2.2.0
PATH=$PATH:$KAFKA_HOME/bin
export KAFKA_HOME PATH
# . /etc/profile.d/kafka.sh # 使环境变量生效
4 启动 以及相关命令
## 启动kafka
# ./bin/kafka-server-start.sh -daemon ./config/server.properties
## 创建topic
# ./bin/kafka-topics.sh --create --zookeeper 192.168.19.51:2181 --replication-factor 2 --partitions 1 --topic mytest
## 查看topic 在任意一台机器执行 均可以
# ./bin/kafka-topics.sh --list --zookeeper localhost:2181
## 创建消息 在19.101上创建消息 topic 会自动创建
# ./bin/kafka-console-producer.sh --broker-list 192.168.19.101:9092 --topic mytest
## 消费消息 在19.102上消费消息
# ./bin/kafka-console-consumer.sh --bootstrap-server 192.168.19.102:9092 --topic mytest --from-beginning
## 杀死kafka进程
# kill -9 `ps aux| grep kafka | grep -v grep|awk '{print $2}'`
遇到的问题
1.防火墙没关
2./etc/hosts文件
五、设置为开机自启动
1.zookeeper
# cat /etc/systemd/system/zookeeper.service
[Unit]
Description=Zookeeper service
After=network.target
[Service]
Type=forking
User=wlsadmin
Group=wlsadmin
ExecStart=/cust/cig/utils/zookeeper-3.4.14/bin/zkServer.sh start
ExecStop=/cust/cig/utils/zookeeper-3.4.14/bin/zkServer.sh stop
ExecReload=/cust/cig/utils/zookeeper-3.4.14/bin/zkServer.sh restart
[Install]
WantedBy=multi-user.target
2.kakfa
# cat /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka server (broker)
After=network.target zookeeper.service
[Service]
Type=simple
User=wlsadmin
Group=wlsadmin
ExecStart=/cust/cig/utils/kafka_2.11-2.2.0/bin/kafka-server-start.sh /cust/cig/utils/kafka_2.11-2.2.0/config/server.properties
ExecStop=/cust/cig/utils/kafka_2.11-2.2.0/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
3.注意点
(1)zookeeper.service 名称 一定要和kafka.service 里面After后面的保持一致
(2)此处我们使用的用户是wlsadmin 可以改为其他用户
(3)修改zk的文件 将日志路径添加进去
# cat /cust/cig/utils/zookeeper-3.4.14/bin/zkEnv.sh
......
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/cust/cig/utils/zookeeper-3.4.14/logs"
fi
......