cd /root
tar zxf jdk-8u181-linux-x64.tar.gz
mv jdk1.8.0_181 /usr/local/
echo ‘export JAVA_HOME=/usr/local/jdk1.8.0_181‘ >> /etc/profile
echo ‘export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar‘ >> /etc/profile
echo ‘export PATH=$PATH:$JAVA_HOME/bin‘ >> /etc/profile
keekeeper-3.7.0
zk01 192.168.31.165
zk02 192.168.31.166
zk03 192.168.31.167
ZooKeeper主要有领导者(Leader)、跟随者(Follower)和观察者(Observer)三种角色。
ZooKeeper集群需要是>1的奇数节点。例如3、5、7等等。
注意:三台机只能挂一台,至少有两台才可以正常工作,
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
创建ZooKeeper相关目录
#创建应用目录
mkdir /usr/zookeeper -p
#创建数据目录
mkdir /data/zookeeper -p
mkdir /data/zookeeper/data -p
mkdir /data/zookeeper/logs -p
解压到指定目录
tar -zvxf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/zookeeper
配置环境变量
#修改环境变量文件
cat >> /etc/profile <<EOF
export ZOOKEEPER_HOME=/usr/zookeeper/apache-zookeeper-3.7.0-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH
EOF
#使环境变量生效
source /etc/profile
echo $ZOOKEEPER_HOME
#进入ZooKeeper配置目录
cd $ZOOKEEPER_HOME/conf
#新建配置文件
cat > zoo.cfg << EOF
#zk之间心跳间隔2秒
tickTime=2000
#LF初始通信时限
initLimit=10
#LF同步通信时限
syncLimit=5
#Zookeeper保存数据的目录
dataDir=/data/zookeeper/data
#Zookeeper保存日志文件的目录
dataLogDir=/data/zookeeper/logs
#客户端连接 Zookeeper 服务器的端口
clientPort=2181
server.1=192.168.31.165:2888:3888
server.2=192.168.31.166:2888:3888
server.3=192.168.31.167:2888:3888
EOF
配置节点标识
zk01:
echo "1" > /data/zookeeper/data/myid
zk02:
echo "2" > /data/zookeeper/data/myid
zk03:
echo "3" > /data/zookeeper/data/myid
防火墙开放
2181、2888、3888端口
2.3启动ZooKeeper
sh $ZOOKEEPER_HOME/bin/zkServer.sh start
sh $ZOOKEEPER_HOME/bin/zkServer.sh status
2.4.2客户端连接测试
这里随机选其中一个节点作为客户端连接其他节点即可
sh $ZOOKEEPER_HOME/bin/zkCli.sh -server 192.168.31.165:2181
] ls /
3.1 Kafka介绍
Kafka是一个开源的分布式消息引擎/消息中间件
在Kafka集群(Cluster)中,一个Kafka节点就是一个Broker,消息由Topic来承载,
可以存储在1个或多个Partition中,Partition用于主题分片存储。
发布消息的应用为Producer、消费消息的应用为Consumer,多个Consumer可以促
成Consumer Group共同消费一个Topic中的消息。
kafka01 192.168.31.165
kafka02 192.168.31.166
kafka03 192.168.31.167
3.2应用&数据目录
#创建应用目录
mkdir /usr/kafka
#创建Kafka数据目录
mkdir /data/kafka -p
mkdir /data/kafka/logs-p
chmod 777 -R /data/kafka
3.3 下载安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.8.0/kafka_2.12-2.8.0.tgz
tar -zvxf kafka_2.12-2.8.0.tgz -C /usr/kafka
cp /usr/kafka/kafka_2.12-2.8.0/config/server.properties{,.bak}
3.6总体配置设置
cat > /usr/kafka/kafka_2.12-2.8.0/config/server.properties << EOF
broker.id=0
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
##修改
log.dirs=/data/kafka/logs
num.partitions=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
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
##修改
zookeeper.connect=192.168.31.165:2181,192.168.31.166:2181,192.168.31.167:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
listeners=PLAINTEXT://192.168.31.165:9092
EOF
3.7分节点配置
cat /usr/kafka/kafka_2.12-2.8.0/config/server.properties
#Kafka01
broker.id=0
listeners=PLAINTEXT://192.168.31.165:9092
#Kafka02
broker.id=1
listeners=PLAINTEXT://192.168.31.166:9092
#Kafka03
broker.id=2
listeners=PLAINTEXT://192.168.31.167:9092
3.8 防火墙开放
9092端口
cd /usr/kafka/kafka_2.12-2.8.0
nohup bin/kafka-server-start.sh config/server.properties >> /var/log/kafka-server.log 2>&1 &
bin/kafka-server-stop.sh
cd /usr/kafka/kafka_2.12-2.8.0
bin/kafka-topics.sh --create --bootstrap-server 192.168.31.165:9092 --replication-factor 3 --partitions 2 --topic test-ken-io
Topic在kafka01上创建后也会同步到集群中另外两个副本Broker:kafka02、kafka03
3.11.2、查看Topic
我们可以通过命令列出指定Broker的topic信息
cd /usr/kafka/kafka_2.12-2.8.0
bin/kafka-topics.sh --list --bootstrap-server 192.168.31.165:9092
bin/kafka-topics.sh --list --bootstrap-server 192.168.31.166:9092
bin/kafka-topics.sh --list --bootstrap-server 192.168.31.167:9092
3.11.3、发送消息
这里我们向Broker(id=0)的Topic=test-ken-io发送消息
cd /usr/kafka/kafka_2.12-2.8.0
bin/kafka-console-producer.sh --broker-list 192.168.31.165:9092 --topic test-ken-io
#消息内容
> hei body
> hei girl
3.11.4 消费者
从开始位置消费
cd /usr/kafka/kafka_2.12-2.8.0
bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.167:9092 --topic test-ken-io --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.166:9092 --topic test-ken-io --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.165:9092 --topic test-ken-io --from-beginning
然后均能收到消息
hei body
hei girl
从最新位置消费
bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.165:9092 --topic test-ken-io
3.11.5 消费者组
一个Consumer group,多个consumer进程,数量小于等于partition分区的数量
test-ken-io只有2个分区,只能有两个消费者consumer进程去轮询消费消息
bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.167:9092 --topic test-ken-io --group testgroup_ken
bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.167:9092 --topic test-ken-io --group testgroup_ken
[zk: 192.168.31.165:2181(CONNECTED) 73] ls /brokers/ids
[0, 1, 2]
[zk: 192.168.31.165:2181(CONNECTED) 73] ls /brokers/topics/test-ken-io/partitions
[0]
[zk: 192.168.31.165:2181(CONNECTED) 83] ls /brokers/topics/__consumer_offsets/partitions
[0, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 4, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 5, 6, 7, 8, 9]
原文:https://blog.51cto.com/u_13155846/2735797