• 对于注定会优秀的人来说,他所需要的,只是时间----博主
  • 手懒得,必受贫穷,手勤的,必得富足----《圣经》
  • 帮助别人,成就自己。愿君在本站能真正有所收获!
  • 如果你在本站中发现任何问题,欢迎留言指正!
  • 宝剑锋从磨砺出,梅花香自苦寒来!
  • 本站开启了防爆破关小黑屋机制,如果您是正常登录但被关进小黑屋,请联系站长解除!

<二>Kafka学习笔记–kafka-2.11集群部署

kafka eryajf 3周前 (07-05) 94°C 已收录 0个评论
本文预计阅读时间 13 分钟

1,准备工作

1,主机准备。

准备三台主机,都是CentOS-7,IP如下:

  • 192.168.106.7
  • 192.168.106.8
  • 192.168.106.9

为了方便后续操作,先配置一下主机免密码登陆。

[root@localhost ~]$ssh-keygen
[root@localhost ~]$ssh-copy-id root@192.168.106.7
[root@localhost ~]$ssh-copy-id root@192.168.106.8
[root@localhost ~]$ssh-copy-id root@192.168.106.9

更改三节点的主机名。

[root@localhost ~]$hostnamectl set-hostname node1
[root@localhost ~]$hostnamectl set-hostname node2
[root@localhost ~]$hostnamectl set-hostname node3

配置hosts。

[root@localhost ~]$ cat >> /etc/hosts << EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.106.7 node1
192.168.106.8 node2
192.168.106.9 node3
EOF

2,依赖准备。

只需准备jdk环境即可,通过如下命令安装:curl 192.168.1.1/a | sh

此种安装方式可以参考这里

3,安装包。

下载kafka。

wget https://mirrors.cnnic.cn/apache/kafka/0.11.0.2/kafka_2.11-0.11.0.2.tgz

2,配置集群。

1,解压分发。

首先将kafka解压,然后分发给集群中各个node。

[root@localhost opt]$tar xf kafka_2.11-0.11.0.2.tgz
[root@localhost opt]$mv kafka_2.11-0.11.0.2 kafka

使用如下脚本进行分发。

NODE_IPS=(192.168.106.7 192.168.106.8 192.168.106.9)

for node_ip in ${NODE_IPS[@]}
do
    echo ">>> ${node_ip}"
    scp -r /opt/kafka root@${node_ip}:/usr/local
done

2,配置zookeeper集群。

要搭建kafka集群,首先要部署zookeeper集群,这里直接使用kafka内置的zookeeper进行部署。

[root@localhost config]$egrep -v '^#|^$' zookeeper.properties
dataDir=/usr/local/kafka/zookeeper
clientPort=2181
maxClientCnxns=0
initLimit=10
syncLimit=5
server.1=node1:2888:3888
server.2=node2:2889:3889
server.3=node3:2890:3890
  • dataDir:zookeeper的快照存储地址
  • clientPort:zookeeper端口
  • maxClientCnxns:单个客户端与单台服务器之间的连接数的限制
  • initLimit:默认值是10,即tickTime属性值的10倍。它用于配置允许Followers连接并同步到Leader的最大时间。如果ZooKeeper管理的数据量很大的话可以增加这个值
  • syncLimit:默认值是5,即tickTime属性值的5倍。它用于配置Leader和Followers间进行心跳检测的最大延迟时间。如果在设置的时间内Followers无法与Leader进行通信,那么Followers将会被丢弃
  • server.1:server.x中的x要与myid中的数字一致,node1为集群IP,当然前边配置了hosts可以这么写,2888用于follower与leader之间的数据同步与其他通信;3888用于leader选举时的通信

配置完成之后,将文件分发出去。

NODE_IPS=(192.168.106.7 192.168.106.8 192.168.106.9)

for node_ip in ${NODE_IPS[@]}
do
    echo ">>> ${node_ip}"
    scp /opt/kafka/config/zookeeper.properties root@${node_ip}:/usr/local/kafka/config
done

创建对应的myid,用于区分不同节点的身份。

NODE_IPS=(192.168.106.7 192.168.106.8 192.168.106.9)
for ((i=1;i<4;i++))
do
   echo ">>> ${node_ip}"
   ssh root@${node_ip} 'mkdir /usr/local/kafka/zookeeper'
   ssh root@${node_ip} 'echo $i > /usr/local/kafka/zookeeper/myid'
done

启动zookeeper服务。

NODE_IPS=(192.168.106.7 192.168.106.8 192.168.106.9)

for node_ip in ${NODE_IPS[@]}
do
    echo ">>> ${node_ip}"
    ssh root@${node_ip} '/usr/local/kafka/bin/zookeeper-server-start.sh -daemon /usr/local/kafka/config/zookeeper.properties'
done

查看服务状态:

[root@localhost opt]$jps -m
2818 QuorumPeerMain config/zookeeper.properties
8901 Jps -m

观察一下日志,查看是否有日常。

3,配置kafka集群。

同样是先调整kafka的配置。

[root@localhost config]$egrep -v '^#|^$' server.properties
broker.id=1     #三个节点不能一样
listeners=PLAINTEXT://:9092
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=/usr/local/kafka/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.106.7:2181,192.168.106.8:2181,192.168.106.9:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

分发配置文件。

NODE_IPS=(192.168.106.7 192.168.106.8 192.168.106.9)

for node_ip in ${NODE_IPS[@]}
do
    echo ">>> ${node_ip}"
    scp /opt/kafka/config/server.properties root@${node_ip}:/usr/local/kafka/config
done

分发之后记得更改一下每个配置文件的 broker.id

启动kafka。

NODE_IPS=(192.168.106.7 192.168.106.8 192.168.106.9)

for node_ip in ${NODE_IPS[@]}
do
    echo ">>> ${node_ip}"
    ssh root@${node_ip} '/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties'
done

这样整个集群就搭建完成了。

3,验证集群。

1,创建一个topic。

[root@localhost opt]$/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.106.7:2181,192.168.106.8:2181,192.168.106.9:2181 --replication-factor 3 --partitions 1 --topictest-topic

Created topic "test-topic".

2,查看topic。

[root@localhost opt]$/usr/local/kafka/bin/kafka-topics.sh --list --zookeeper 192.168.106.7:2181,192.168.106.8:2181,192.168.106.9:2181

test-topic

3,生产消息。

[root@localhost opt]$/usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.106.7:9092,192.168.106.8:9092,192.168.106.9:9092 --topic test-topic
>this is test

4,消费消息。

[root@localhost opt]$/usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper 192.168.106.7:2181,192.168.106.8:2181,192.168.106.9:2181 --topic test-topic --from-beginning
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].

this is test

如此,一个完整的集群就配置完成了。


weinxin
扫码订阅本站,第一时间获得更新
微信扫描二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明<二>Kafka学习笔记–kafka-2.11集群部署
喜欢 (0)
[如果想支持本站,可支付宝赞助]
分享 (0)
eryajf
关于作者:
学无止境,我愿意无止境学。书山有路,我愿意举身投火,淬炼成金!

您必须 登录 才能发表评论!