Kafka 2.11-0.2 部署文档


磁盘初始化:
pvcreate /dev/vdb
vgcreate VG0 /dev/vdb
#创建一个占全部卷组大小的lv
lvcreate -l +100%FREE -n LV0 VG0
mkfs.ext4 /dev/VG0/LV0

echo "/dev/VG0/LV0  /data ext4 defaults              0 0" >>/etc/fstab
#重新挂在磁盘
mount -a
+++++++++++++++++
安装zookeeper集群:

1.1 安装java环境
yum install java-1.8.0-openjdk-devel.x86_64 java-1.8.0-openjdk.x86_64 -y

1.2 安装zk
mkdir /data/app
wget http://10.69.36.241/soft/zookeeper-3.4.9.tar.gz
tar zxvf zookeeper-3.4.9.tar.gz -C /data/app

1.3 设置环境变量
echo 'export ZOOKEEPER_HOME=/data/app/zookeeper-3.4.9' >>/etc/profile
echo 'export PATH=$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf' >>/etc/profile
source /etc/profile

1.4 修改配置文件
cd /data/app/zookeeper-3.4.9/conf/
cp /data/app/zookeeper-3.4.9/conf/zoo_sample.cfg /data/app/zookeeper-3.4.9/conf/zoo.cfg
vim zoo.cfg

#心跳时间间隔,也是时间单元
tickTime=2000

#集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)
initLimit=10

#leader 与 follower 之间发送消息,请求和应答 时间长度。如果 follower 在设置的时间内不能与leader 进行通信,那么此 follower 将被丢弃。
syncLimit=5

dataDir=/data/app/zookeeper-3.4.9/var/data
dataLogDir=/data/app/zookeeper-3.4.9/var/datalog

clientPort=2181


server.1=10.69.40.17:2888:3888
server.2=10.69.40.12:2888:3888
server.3=10.69.40.7:2888:3888
server.4=10.69.40.11:2888:3888
server.5=10.69.40.16:2888:3888

# 配置zk日志自动清理,否则很快会占满磁盘
# The number of snapshots to retain in dataDir
autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
autopurge.purgeInterval=1




设置日志目录
默认是在启动时的目录下生成zookeeper.out文件
vim /data/app/zookeeper-3.4.9/conf/zookeeper-env.sh 

#!/bin/bash	
JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
ZOO_LOG_DIR=/data/app/zookeeper-3.4.9/logs
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"




创建配置文件中dataDir,dataLogDir中的路径目录
mkdir -p /data/app/zookeeper-3.4.9/var/data
mkdir -p /data/app/zookeeper-3.4.9/var/datalog

cd /data/app/zookeeper-3.4.9/var/data
vim myid
向其中输入数字1(对应zoo.cfg文件server后的数字)


1.5
拷贝zk目录到其他节点,根据zoo.cfg中对应的值进行更改myid文件


1.6 启动zk,需要在每台机器上运行
zkServer.sh start

启动后的进程为QuorumPeerMain
可通过zkServer.sh status 命令来查看zk的状态,正常是机器中只有一个leader,其他都是follower。


1.7 设置开机启动zk(未做)
/data/app/zookeeper-3.4.9/bin/zkServer.sh start








++++++++++++++
2 安装kafka集群:


2.1 安装java环境
yum install java-1.8.0-openjdk-devel.x86_64 java-1.8.0-openjdk.x86_64 -y

2.2 安装kafka:
mkdir /data/app
wget http://10.69.36.241/soft/kafka_2.11-0.11.0.2.tgz
tar zxvf kafka_2.11-0.11.0.2.tgz -C /data/app/

mkdir -p /data/app/kafka_2.11-0.11.0.2/kafka-logs
#创建kafka消息目录,主要存放kafka消息,和logs目录不一样,logs目录主要存放程序启动之类的日志。

2.3 设置环境变量
echo 'export KAFKA_HOME=/data/app/kafka_2.11-0.11.0.2' >>/etc/profile
echo 'export PATH=$KAFKA_HOME/bin:$KAFKA_HOME/config:$PATH' >>/etc/profile
source /etc/profile

2.4 修改配置文件
vim /data/app/kafka_2.11-0.11.0.2/config/server.properties
# 当前机器在集群中的唯一标识,和zk中的myid性质一样,每台机器不同
broker.id=0

listeners=PLAINTEXT://:9092
port=9092

# broker绑定的接口,默认绑定所有interfaces
host.name=10.69.40.14

# 不设置,kafka向zk注册的时候使用主机名,而不是IP
advertised.host.name=10.69.40.14

# broker进行网络处理的线程数。默认3
num.network.threads=3

# broker进行IO处理的线程数 ,默认8
num.io.threads=8

# 发送缓冲区大小,数据在缓冲区到了一定大小后在发送,能提高性能
socket.send.buffer.bytes=102400

# 接受缓冲区大小,数据到了一定大小后在序列化到磁盘
socket.receive.buffer.bytes=102400

# 向kafka发送消息或者向kafka请求消息时的请求的最大数,不能超过java堆栈大小
socket.request.max.bytes=104857600

# kafka消息的存放目录,可以配置多个目录,以逗号分隔
log.dirs=/data/app/kafka_2.11-0.11.0.2/kafka-logs

# 分区数量,尽量是主机数的倍数关系
num.partitions=36

num.recovery.threads.per.data.dir=6

# 默认消息的最大持久化时间,7天
log.retention.hours=48

# kafka消息追加到文件,超过这个值,另新起一个文件
log.segment.bytes=1073741824

#每隔多少时间检查log持久化时间
log.retention.check.interval.ms=300000

# 是否启用log压缩,(启用用于清理offset主题)
log.cleaner.enable=true

# 消息保存的副本数
default.replication.factor=3
delete.topic.enable=true
auto.create.topics.enable=true
#zk连接
zookeeper.connect=10.69.40.17:2181,10.69.40.12:2181,10.69.40.7:2181,10.69.40.11:2181,10.69.40.16:2181
zookeeper.connection.timeout.ms=6000





kafka启动脚本kafka-server-start.sh中指定了kafka启动时需要的最小内存,默认为1G

export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G"


2.5 启动kafka
kafka-server-start.sh -daemon /data/app/kafka_2.11-0.11.0.2/config/server.properties
启动后会有一个kafka的进程

添加开机启动
echo '/data/app/kafka_2.11-0.11.0.2/bin/kafka-server-start.sh -daemon /data/app/kafka_2.11-0.11.0.2/config/server.properties'>>/etc/rc.local

-----3.测试---------------------------------------------------------------------------------------------------
kafka-topics.sh --zookeeper localhost:2181 --create --topic test --partitions 9 --replication-factor 3

①在一台机器上:
kafka-console-producer.sh --broker-list 10.69.69.206:9092,10.69.69.121:9092,10.69.69.142:9092 --sync --topic test
随意输入内容
②在另一台机器上:
kafka-console-consumer.sh --zookeeper 10.69.69.206:2181,10.69.69.121:2181,10.69.69.142:2181 --topic ACCESS_TOPIC_1 --from-beginning

③kafka-topics.sh --zookeeper 10.69.69.206:2181,10.69.69.121:2181,10.69.69.142:2181 --describe

④kafka-topics.sh --zookeeper localhost:2181 --delete  --topic test

⑤kafka-consumer-offset-checker.sh --zookeeper localhost:2181 --topic test --broker-info --group group1

kafka-consumer-offset-checker.sh --zookeeper node1:2181 node2:2181 node3:2181 --topic mytopic --broker-info --group group1

(09之后的新版本)
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server 10.69.40.13:9092 --group lx_test --describe
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server 10.69.40.13:9092 --list

猜你喜欢

转载自blog.csdn.net/Alex_Sheng_Sea/article/details/84648826