kafka搭建二、集群搭建
系列导航
五、kafka集群__consumer_offsets副本数修改
kafka集群搭建
本章讲解如何安装一个由三台机器组成的kafka集群,搭建完成该集群就可以在生产环境上使用了
三台服务器的ip 192.168.0.104,192.168.0.105,192.168.0.106
需要的软件包:
1、jdk1.8安装包 jdk-8u211-linux-x64.tar
2、zookeeper的安装包 zookeeper-3.4.14.tar
3、kafka的安装包 kafka_2.11-2.1.1.tgz
(一)zookeeper 搭建(三台机器都要操作)
1、软件环境
192.168.0.104 server1
192.168.0.105 server2
192.168.0.106 server3
相关的安装包拷入/opt/kafka下
cd /opt
mkdir kafka
2、安装jdk1.8
(1)解压安装包
tar -xvf jdk-8u211-linux-x64.tar
(2)移动到安装目录
mv jdk1.8.0_211 /usr/local
(3)设置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile //让配置生效
(4)测试是否安装成功
cd /
echo $JAVA_HOME
echo $PATH
echo $CLASSPATH
java -version 查看版本
3、创建目录
mkdir /opt/zookeeper #项目目录
mkdir /opt/zookeeper/zkdata #存放快照日志
mkdir /opt/zookeeper/zkdatalog #存放事物日志
将zookeeper-3.4.14.tar放到/opt/zookeeper/目录下
cp zookeeper-3.4.14.tar /opt/zookeeper/
tar -xvf zookeeper-3.4.14.tar
4、修改配置信息
cd /opt/zookeeper/zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
#添加如下内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/zkdata
dataLogDir=/opt/zookeeper/zkdatalog
clientPort=12181
server.1=192.168.0.104:12888:13888
server.2=192.168.0.105:12888:13888
server.3=192.168.0.106:12888:13888
5、创建myid文件
#server1
echo "1" > /opt/zookeeper/zkdata/myid
#server2
echo "2" > /opt/zookeeper/zkdata/myid
#server3
echo "3" > /opt/zookeeper/zkdata/myid
6、主要的shell
/opt/zookeeper/zookeeper-3.4.14/bin
zkServer.sh 主的管理程序文件
zkEnv.sh 是主要配置,zookeeper集群启动时配置环境变量的文件
7、启动服务并查看
cd /opt/zookeeper/zookeeper-3.4.14/bin
#启动服务(3台都需要操作)
./zkServer.sh start
#检查服务器状态
./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower #他是否为领导
可以用“jps”查看zk的进程,这个是zk的整个工程的main
#执行命令jps
[root@zhu bin]# jps
27813 QuorumPeerMain
27909 Jps
8、安装scala 2.11
tar -xvf scala-2.11.12.tar
vi /etc/profile 添加如下内容:
export SCALA_HOME=/opt/kafka/scala-2.11.12
export PATH=$SCALA_HOME/bin:$PATH
source /etc/profile //让配置生效
-------------------------------kafka集群安装-------------------------------------------------------------
kafka的日志位置:/opt/kafka/kafka_2.11-2.1.1/logs
(二)kafka集群 搭建(三台机器)
1、创建目录
mkdir -p /opt/kafka/kafkalogs
2、解压安装包
cd /opt/kafka
tar -zxvf kafka_2.11-2.1.1.tgz
3、修改配置文件
cd /opt/kafka/kafka_2.11-2.1.1/config
vi server.properties #根据正式库的配置修改该文件
#添加如下内容 注意不同机器的ip不同
#192.168.0.104主机
broker.id=104
listeners=PLAINTEXT://192.168.0.104:9092
port=9092
advertised.listeners=PLAINTEXT://192.168.0.104:9092
advertised.port=9092
host.name=192.168.0.104
advertised.host.name=192.168.0.104
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=/opt/kafka/kafkalogs/
num.partitions=2
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.0.104:12181,192.168.0.105:12181,192.168.0.106:12181
zookeeper.connection.timeout.ms=60000
group.initial.rebalance.delay.ms=0
#inter.broker.protocol.version=0.9.0
#log.message.format.version=0.9.0
unclean.leader.election.enable=true
auto.create.topics.enable=true
default.replication.factor=3
#192.168.0.105主机
broker.id=105
listeners=PLAINTEXT://192.168.0.105:9092
port=9092
advertised.listeners=PLAINTEXT://192.168.0.105:9092
advertised.port=9092
host.name=192.168.0.105
advertised.host.name=192.168.0.105
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=/opt/kafka/kafkalogs/
num.partitions=2
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.0.104:12181,192.168.0.105:12181,192.168.0.106:12181
zookeeper.connection.timeout.ms=60000
group.initial.rebalance.delay.ms=0
#inter.broker.protocol.version=0.9.0
#log.message.format.version=0.9.0
unclean.leader.election.enable=true
auto.create.topics.enable=true
default.replication.factor=3
#192.168.0.106主机
broker.id=106
listeners=PLAINTEXT://192.168.0.106:9092
port=9092
advertised.listeners=PLAINTEXT://192.168.0.106:9092
advertised.port=9092
host.name=192.168.0.106
advertised.host.name=192.168.0.106
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=/opt/kafka/kafkalogs/
num.partitions=2
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.0.104:12181,192.168.0.105:12181,192.168.0.106:12181
zookeeper.connection.timeout.ms=60000
group.initial.rebalance.delay.ms=0
#inter.broker.protocol.version=0.9.0
#log.message.format.version=0.9.0
unclean.leader.election.enable=true
auto.create.topics.enable=true
default.replication.factor=3
4、启动服务并测试
设置环境变量
vi /etc/profile 添加如下内容:
export KAFKA_HOME=/opt/kafka/kafka_2.11-2.1.1
export PATH=$KAFKA_HOME/bin:$PATH
source /etc/profile //让配置生效
#启动
[root@zhu bin]# kafka-server-start.sh -daemon ../config/server.properties
[root@zhu bin]# jps
27813 QuorumPeerMain
28847 Kafka
28882 Jps
#关闭
[root@zhu bin]# jps
27813 QuorumPeerMain
28847 Kafka
-------------------------------常用操作-----------------------------------------------
5、 创建Topic来验证是否创建成功
#创建Topic
kafka-topics.sh --create --zookeeper 192.168.0.104:12181 --replication-factor 2 --partitions 2 --topic yc
#解释
--replication-factor 2 #复制两份
--partitions 1 #创建1个分区
--topic #主题为yc
删除 topic
kafka-topics.sh --delete --zookeeper 192.168.0.104:12181 --topic yc
6、相关命令
(1)查看topic
kafka-topics.sh --list --zookeeper localhost:12181或者 kafka-topics.sh --list --zookeeper 192.168.0.104:12181
#就会显示我们创建的所有topic
(2)查看topic状态
[root@zhu bin]# kafka-topics.sh --describe --zookeeper localhost:12181 --topic yc
Topic:yc PartitionCount:2 ReplicationFactor:2 Configs:
Topic: yc Partition: 0 Leader: 104 Replicas: 104,105 Isr: 104,105
Topic: yc Partition: 1 Leader: 105 Replicas: 105,106 Isr: 105,106
#分区为为2 复制因子为2 他的 yc的分区为0和1
#说明
partiton: partion id
leader:当前负责读写的lead broker id
replicas:当前partition的所有replication broker list
isr:relicas的子集,只包含出于活动状态的broker
(3)重新分配partition
bin/kafka-reassign-partitions.sh
--zookeeper <urls> 指定zookeeper的连接地址,格式host:port
--broker-list<brokerlist> 指定partition需要重新分配到哪些节点,格式为”0,1,2”
--topics-to-move-json-file <topics to reassign json file path> 指定JSON文件的地址,文件内容是需要重新分配的topic列表。这个选项和manual-assignment-json-file选项需要指定其中的一个。
文件内容的格式为 {"topics": [{"topic": "test"},{"topic": "test1"}], "version":1 }
--manual-assignment-json-file<manual assignment json file path> 指定JSON文件的地址,文件内容是手动分配的策略。这个选项和topics-to-move-json-file选项需要指定其中的一个。
文件内容的格式为{"partitions": [{"topic": "test", "partition": 1, "replicas": [1,2,3] }], "version":1 }
--status-check-json-file<partition reassignment json file path> 指定JSON文件的地址,文件内容是partition和partition需要分配到的新的replica的列表。这个JSON文件可以从模拟执行的结果得到。
--execute 如果使用这个选项,那么会执行真实的重新分配分区的操作。如果不指定这个选项,默认会进行模拟执行。
例子:
<1>将test和test1 topic迁移到新的编号为3,4的broker上
./kafka-reassign-partitions.sh --zookeeper 172.1.1.1:2181 --broder-list "3,4" --topics-to-move-json-filetopicMove.json -execute
topicMove.json 的内容是:{"topics":[{"topic":"test"},{"topic","test1"}],"version":1}
<2>将test topic的partition 1 迁移到 broker 1 2 4 上
./kafka-reassign-partitions.sh --zookeeper 172.1.1.1:2181 --broder-list "1,2,4" --manual-assignment-json-file manualAssignment.json --execute
manualAssignment.json的内容为:
{"partitions":[{"topic":"test","partition":1,"replicas":[1,2,4]}],"version":1}
(4)增加Topic的partition数量,命令为:
通过kafka-topics.sh 的alter选项 ,将topic1的partitions从1增加到6;
./kafka-topics.sh --alter --topic topic1 --zookeeper localhost:12181 --partitions 6
(5)手动均衡Topic,让partition选择preferred replica作为leader
./kafka-preferred-replica-election.sh
--zookeeper 指定zookeeper的连接地址,格式host:port
--path-to-json-file 指定需要重新进行leader选举的partition列表文件所在的地址,文件内容的格式为
{“partitions”: [{“topic”: “test”,“partitions”: 1},{“topic”: “test”, “partitions”: 2}]}
默认值为所有存在的partition
例如:
<1> ./kafka-preferred-replica-election.sh --zookeeper 172.1.1.1:2181
<2> ./kafka-preferred-replica-election.sh --zookeeper 172.1.1.1:2181 --path-to-json-file partitionList.json
partitionList.json 文件内容为{"partitions":[{"topic":"test","partition":1},{"topic":"test","partition":2}]}
(6) 查看Consumer的消费和积压信息
./kafka-consumer-groups.sh --bootstrap-server plaintext://192.168.0.104:9092,plaintext://192.168.0.105:9092,plaintext://192.168.0.106:9092 --describe --group group_test1
(7)动态增加topic副本
1、generate模式,给定需要重新分配的Topic,自动生成reassign plan(并不执行)
2、execute模式,根据指定的reassign plan重新分配Partition
3、verify模式,验证重新分配Partition是否成功
./bin/kafka-reassign-partitions.sh --zookeeper localhost:12181 --reassignment-json-file replication.json --verify
# replication.json内容为:(书写的时候写在一行要不会有问题)
{"partitions":[{"topic":"topic_test1","partition":0,"replicas":[104,105,106]},{"topic":"topic_test1","partition":1,"replicas":[104,105,106]},{"topic":"topic_test1","partition":2,"replicas":[104,105,106]},{"topic":"topic_test1","partition":3,"replicas":[104,105,106]}],"version":1}
kafka搭建二、集群搭建的更多相关文章
- 环境搭建-Hadoop集群搭建
环境搭建-Hadoop集群搭建 写在前面,前面我们快速搭建好了centos的集群环境,接下来,我们就来开始hadoop的集群的搭建工作 实验环境 Hadoop版本:CDH 5.7.0 这里,我想说一下 ...
- 环境搭建-CentOS集群搭建
环境搭建-CentOS集群搭建 写在前面 最近有许多小伙伴问我,大数据的hadoop分布式集群该如何去搭建.所以,想着,就写一篇博客,帮助到更多刚入门大数据的人.本博客会一步一步带你实现一个Hadoo ...
- centos6搭建redis集群搭建(单机多节点)
一.安装redis 1.安装gcc环境 yum install gcc-c++ 2.下载源码包并解压 wget http://download.redis.io/releases/redis-3.2. ...
- druid.io本地集群搭建 / 扩展集群搭建
druid.io 是一个比较重型的数据库查询系统,分为5种节点 . 在此就不对数据库进行介绍了,如果有疑问请参考白皮书: http://pan.baidu.com/s/1eSFlIJS 单台机器的集群 ...
- 基于Dokcer搭建Redis集群搭建(主从集群)
最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得之前写的这篇 <基于Docker的Redis集群搭建> 文章一定是有问题了,所以我花了几分钟浏览之前的文章总结了下面几 ...
- Kafka介绍及集群搭建
简介 Kafka是一个开源的,分布式的,高吞吐量的消息系统.随着Kafka的版本迭代,日趋成熟.大家对它的使用也逐步从日志系统衍生到其他关键业务领域.特别是其超高吞吐量的特性,在互联网领域,使用越来越 ...
- Zookeeper介绍 Zookeeper搭建 Zookeeper集群搭建
关键字:分布式 背景 随着互联网技术的高速发展,企业对计算机系统的技术.存储能力要求越来越高,最简单的证明就是出现了一些诸如:高并发.海量存储这样的词汇.在这样的背景 下,单纯依靠少量 ...
- 搭建Elk集群搭建 ES-filebeat-logstrash-kibana
一 .基础环境 软件 版本 作用 Linux/Win Server2012 CentOs/Win Server2012 服务器环境 JDK 1.8.0_151 运行环境依赖 Elasticsearch ...
- ElasticSearch 7.8.1集群搭建
通往集群的大门 集群由什么用? 高可用 高可用(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间.如果系统每运行100个时间 ...
- Kafka_2.12-2.5.1集群搭建与参数调优
Kafka是目前业界使用最广泛的消息队列.数据流转常见这样的业务场景,客户端把采集到的日志推送给Kafka,业务方可以消费Kafka的数据落地HDFS,用于离线分析,也可以使用Spark或Flink消 ...
随机推荐
- Git 安装与配置教程
一.下载Git 1.官网地址 下载地址 2.下载 二.安装 1.下载完成后,直接点击安装包安装,即可. 2.开始安装,然后下一步 3.可以在此处自定义地址,然后下一步 3.选择组件 此处默认即可,但我 ...
- 数据库是mysql,使用DBeaver的SQL编辑器执行sql脚本文件时,报错:No active connection 。
遇到这种问题,多半是因为没有与数据库关联 具体操作点击右键,选择与数据库关联 结果如下 出现这个就好了.
- C++ Qt开发:SpinBox数值微调框组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QSpinBo ...
- 使用汇编和反汇编引擎写一个x86任意地址hook
最简单的Hook 刚开始学的时候,用的hook都是最基础的5字节hook,也不会使用hook框架,hook流程如下: 构建一个jmp指令跳转到你的函数(函数需定义为裸函数) 保存被hook地址的至少5 ...
- 设计模式之设计模式概述-shejimoshigaishu
title: 设计模式之设计模式概述 date: 2022-12-04 00:21:18.469 updated: 2022-12-11 23:03:45.617 url: https://www.y ...
- 云MSP服务案例|互联网商城的上云改造之旅
简介: 在中国,经过十年的发展,云计算产业已走过概念普及的1.0时期,进入"上云"和落地的2. 0阶段,企业上云意识不断增强,越来越多的企业选择部署多云和混合IT. 如今,云计算生 ...
- JavaFx之使用指定字体样式(二十九)
JavaFx之使用指定字体样式(二十九) javafx use specified font 29 javafx默认的字体样式太丑,可能需要我们自定义字体样式. 之前说好放弃学习javafx,没想到越 ...
- 实时数据流无忧:用 SpringBoot 和 SSE 打造动态前端更新的终极指南
用 SpringBoot 和 SSE 打造动态前端更新的终极指南 你知道什么是开发者的梦魇吗?慢!慢!慢!在一个需要实时数据更新的应用中,如果数据像乌龟一样慢吞吞地爬行,那用户体验就会像坐过山车一样直 ...
- 3、Container容器组件
Container容器组件 代码 import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( hom ...
- vue 遍历的汉字显示不同的颜色
<template> <div> <div class="stars"> <span v-for="(star, index) ...