Kafka(三) 集群环境搭建

Kafka 集群环境搭建

最好参考之前的单机版本一起学习

准备三台虚拟机

1. 环境准备

先把单机版本的虚拟机克隆出三台 环境基本都是有的,下面就是修改软件里面的配置; 修改IP

第一台

[root@localhost package]# java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
[root@localhost package]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.141.131  netmask 255.255.255.0  broadcast 192.168.141.255
        inet6 fe80::9be5:3c62:732d:29cd  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::e063:9e44:5283:b012  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::e126:19f1:2090:3682  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:91:5a:19  txqueuelen 1000  (Ethernet)
        RX packets 653  bytes 143724 (140.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 208  bytes 21087 (20.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 68  bytes 5920 (5.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5920 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

第二台

[root@localhost ~]# java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.141.132  netmask 255.255.255.0  broadcast 192.168.141.255
        inet6 fe80::9be5:3c62:732d:29cd  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::e126:19f1:2090:3682  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:89:8d:46  txqueuelen 1000  (Ethernet)
        RX packets 933  bytes 226961 (221.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 188  bytes 18301 (17.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 68  bytes 5920 (5.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5920 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

第三台

[root@localhost ~]# 
[root@localhost ~]# java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.141.133  netmask 255.255.255.0  broadcast 192.168.141.255
        inet6 fe80::9be5:3c62:732d:29cd  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:57:64:6d  txqueuelen 1000  (Ethernet)
        RX packets 1854  bytes 400234 (390.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 501  bytes 80498 (78.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 68  bytes 5920 (5.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5920 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2. 配置hosts 文件

三台使用一个配置文件

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.141.131 CentOSA
192.168.141.132 CentOSB
192.168.141.133 CentOSC

##复制到其他两台
scp /etc/hosts  CentOSB:/etc/
scp /etc/hosts  CentOSC:/etc/

3.关闭防火墙

[root@localhost package]# systemctl stop firewalld
[root@localhost package]# systemctl disable firewalld

4.时钟同步

时钟的头部服务器地址:net[1-7].aliyun.com

[root@localhost ~]# yum install ntp -y
[root@localhost package]# ntpdate ntp1.aliyun.com
22 Sep 23:09:25 ntpdate[1975]: adjust time server 120.25.115.20 offset 0.000890 sec
[root@localhost package]# clock -w

5.安装zookeeper

修改zoo.cfg文件

##和单机版本一样  需要手动创建这个文件夹
dataDir=/package/zkdata
.......
# 集群配置  集群的每个电脑都这样配置
server.1=CentOSA:2888:3888
server.2=CentOSB:2888:3888
server.3=CentOSC:2888:3888

###
[root@CentOSA conf]# scp zoo.cfg CentOSB:/package/zookeeper/conf/
root@centosb's password: 
zoo.cfg                                                        100% 1019     1.1MB/s   00:00    
[root@CentOSA conf]# scp zoo.cfg CentOSC:/package/zookeeper/conf/
root@centosc's password: 
zoo.cfg  

根据zoo.cfgdataDir 对应的文件夹中创建文件 保存id

##第一台电脑
[root@CentOSA zkdata]# echo 1 > /package/zkdata/myid
##第二台电脑
[root@CentOSB conf]# echo 2 > /package/zkdata/myid
##第三台电脑
[root@CentOSC ~]# echo 3 > /package/zkdata/myid

6.启动zookeeper

第一台

[root@CentOSA zkdata]# /package/zookeeper/bin/zkServer.sh  start /package/zookeeper/conf/zoo.cfg JMX enabled by default
Using config: /package/zookeeper/conf/zoo.cfg
Starting zookeeper ... STARTED
##集群其他还没有开
[root@CentOSA zkdata]# /package/zookeeper/bin/zkServer.sh  status /package/zookeeper/conf/zoo.cfg 
JMX enabled by default
Using config: /package/zookeeper/conf/zoo.cfg
Error contacting service. It is probably not running.
##集群其他打开
[root@CentOSA zkdata]# /package/zookeeper/bin/zkServer.sh  status /package/zookeeper/conf/zoo.cfg 
JMX enabled by default
Using config: /package/zookeeper/conf/zoo.cfg
Mode: follower

第二台

[root@CentOSB conf]# /package/zookeeper/bin/zkServer.sh  start /package/zookeeper/conf/zoo.cfg
JMX enabled by default
Using config: /package/zookeeper/conf/zoo.cfg
Starting zookeeper ... STARTED
[root@CentOSB conf]# /package/zookeeper/bin/zkServer.sh  status /package/zookeeper/conf/zoo.cfg
JMX enabled by default
Using config: /package/zookeeper/conf/zoo.cfg
Mode: leader

第三台

[root@CentOSC ~]# /package/zookeeper/bin/zkServer.sh  start /package/zookeeper/conf/zoo.cfg
JMX enabled by default
Using config: /package/zookeeper/conf/zoo.cfg
Starting zookeeper ... STARTED
[root@CentOSC ~]# /package/zookeeper/bin/zkServer.sh  status /package/zookeeper/conf/zoo.cfg
JMX enabled by default
Using config: /package/zookeeper/conf/zoo.cfg
Mode: follower

7.安装Kafka

第一台

# see kafka.server.KafkaConfig for additional details and defaults  不需要修改  因为是第一个
broker.id=0

##修改配置文件 server.properties  CentOSC 是本机
listeners=PLAINTEXT://CentOSA:9092
## 同单机版
log.dirs=/package/kfkdata
############################# Zookeeper #############################
zookeeper.connect=CentOSA:2181,CentOSB:2181,CentOSC:2181

第二台

# see kafka.server.KafkaConfig for additional details and defaults  不需要修改  因为是第一个
broker.id=1

##修改配置文件 server.properties  CentOSC 是本机
listeners=PLAINTEXT://CentOSB:9092
## 同单机版
log.dirs=/package/kfkdata
############################# Zookeeper #############################
zookeeper.connect=CentOSA:2181,CentOSB:2181,CentOSC:2181

第三台

# see kafka.server.KafkaConfig for additional details and defaults  不需要修改  因为是第一个
broker.id=2

##修改配置文件 server.properties  CentOSC 是本机
listeners=PLAINTEXT://CentOSC:9092
## 同单机版
log.dirs=/package/kfkdata
############################# Zookeeper #############################
zookeeper.connect=CentOSA:2181,CentOSB:2181,CentOSC:2181

8.启动Kafka

./bin/kafka-server-start.sh -daemon config/server.properties

注意:中间由于把kafka单机的包直接拷贝过来,里面有原来单机版本跑过的数据,导致起不来

Kafka:Configured broker.id 2 doesn't match stored broker.id 0 in meta.properties.

解决方案 修改 server.properties 中的log.dirs文件夹下面的文件:meta.properties 中的 broker.id 的值为 server.properties 里面配置的broker.id 一样就可以了

9.创建topic

./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --create --topic topic02 --partitions 3 --replication-factor 2
###查看创建状态
[root@CentOSC kafka]# ./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list
__consumer_offsets
topic01
topic02

10.查看节点分区和备份

topic = topic02

可以看到有3个分区 每个分区保存了2份 ,查看分区日志 log.dirs 属性的目录

第一台

topic02-0
topic02-2

第二台

topic02-1
topic02-2

第三台

topic02-0
topic02-1

也可以使用命令直接查看

[root@CentOSC kafka]# ./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --describe --topic topic02
Topic:topic02	PartitionCount:3	ReplicationFactor:2	Configs:segment.bytes=1073741824
	Topic: topic02	Partition: 0	Leader: 0	Replicas: 0,2	Isr: 0,2
	Topic: topic02	Partition: 1	Leader: 2	Replicas: 2,1	Isr: 2,1
	Topic: topic02	Partition: 2	Leader: 1	Replicas: 1,0	Isr: 1,0

11.修改分区

注意:kafka 的分区修改只能添加不能减少

###新建测试分区
[root@CentOSC kafka]# ./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --create --topic topic03 --partitions 2 --replication-factor 2

###减少分区数直接保错
[root@CentOSC kafka]# ./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --alter --topic topic03 --partitions 1 
Error while executing topic command : org.apache.kafka.common.errors.InvalidPartitionsException: Topic currently has 2 partitions, which is higher than the requested 1.
[2021-09-26 22:01:32,110] ERROR java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.InvalidPartitionsException: Topic currently has 2 partitions, which is higher than the requested 1.
	at org.apache.kafka.common.internals.KafkaFutureImpl.wrapAndThrow(KafkaFutureImpl.java:45)
	at org.apache.kafka.common.internals.KafkaFutureImpl.access$000(KafkaFutureImpl.java:32)
	at org.apache.kafka.common.internals.KafkaFutureImpl$SingleWaiter.await(KafkaFutureImpl.java:89)
	at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:260)
	at kafka.admin.TopicCommand$AdminClientTopicService.alterTopic(TopicCommand.scala:200)
	at kafka.admin.TopicCommand$.main(TopicCommand.scala:62)
	at kafka.admin.TopicCommand.main(TopicCommand.scala)
Caused by: org.apache.kafka.common.errors.InvalidPartitionsException: Topic currently has 2 partitions, which is higher than the requested 1.
##增加成功
[root@CentOSC kafka]# ./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --alter --topic topic03 --partitions 3 

###删除分区
[root@CentOSC kafka]# ./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --delete --topic topic01
[root@CentOSC kafka]# ./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list
__consumer_offsets
topic02
topic03
[root@CentOSC kafka]# ./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --delete --topic topic03
[root@CentOSC kafka]# ./bin/kafka-topics.sh  --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list
__consumer_offsets
topic02
[root@CentOSC kafka]# 
###查看日志  日志标记-deleted 被删除的记录
topic03-1.4cf1e9b30311405798b8697b0fcb838a-delete
topic03-2.d7ed36451e8849e0958cdb9dcb811c1e-delete

12.开始消费

##生产者
[root@CentOSB kafka]# ./bin/kafka-console-producer.sh  --broker-list CentOSA:9092,CentOSB:9092,CentOSC:9092 --topic topic02
>nihapo^H^H^H
>nihao
>11111
>22222
>33333
>4444
>2
>2
>
##消费者
[root@CentOSA kafka]# ./bin/kafka-console-consumer.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --topic topic02 
null,nihapo
null,nihao
null,11111
null,22222
null,33333
null,4444
null,2
null,2



13.查看分组信息

##查看所有分组
[root@CentOSC kafka]# ./bin/kafka-consumer-groups.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list
g2

##查看指定分组的信息
[root@CentOSC kafka]# ./bin/kafka-consumer-groups.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --describe --group g2

TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                     HOST             CLIENT-ID
topic02         0          3               3               0               consumer-1-9a0b8a26-e792-4e77-9a85-77a8bc3efc60 /192.168.141.131 consumer-1
topic02         1          3               3               0               consumer-1-9a0b8a26-e792-4e77-9a85-77a8bc3efc60 /192.168.141.131 consumer-1
topic02         2          2               2               0               consumer-1-9a0b8a26-e792-4e77-9a85-77a8bc3efc60 /192.168.141.131 consumer-1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值