Centos7进行kafka-2.11集群部署 |
| 发表者:admin分类:应用服务2021-01-11 15:58:50 阅读[1061] |
Centos7进行kafka-2.11集群部署
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 << EOF127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.106.7 node1192.168.106.8 node2192.168.106.9 node3EOF
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[@]}doecho ">>> ${node_ip}"scp -r /opt/kafka root@${node_ip}:/usr/localdone
2,配置zookeeper集群。
要搭建kafka集群,首先要部署zookeeper集群,这里直接使用kafka内置的zookeeper进行部署。
[root@localhost config]$egrep -v '^#|^$' zookeeper.propertiesdataDir=/usr/local/kafka/zookeeperclientPort=2181maxClientCnxns=0initLimit=10syncLimit=5server.1=node1:2888:3888server.2=node2:2889:3889server.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[@]}doecho ">>> ${node_ip}"scp /opt/kafka/config/zookeeper.properties root@${node_ip}:/usr/local/kafka/configdone
创建对应的myid,用于区分不同节点的身份。
NODE_IPS=(192.168.106.7 192.168.106.8 192.168.106.9)for ((i=1;i<4;i++))doecho ">>> ${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[@]}doecho ">>> ${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 -m2818 QuorumPeerMain config/zookeeper.properties8901 Jps -m
观察一下日志,查看是否有日常。

3,配置kafka集群。
同样是先调整kafka的配置。
[root@localhost config]$egrep -v '^#|^$' server.propertiesbroker.id=1 #三个节点不能一样listeners=PLAINTEXT://:9092num.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600log.dirs=/usr/local/kafka/kafka-logsnum.partitions=1num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1log.retention.hours=168log.segment.bytes=1073741824log.retention.check.interval.ms=300000zookeeper.connect=192.168.106.7:2181,192.168.106.8:2181,192.168.106.9:2181zookeeper.connection.timeout.ms=6000group.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[@]}doecho ">>> ${node_ip}"scp /opt/kafka/config/server.properties root@${node_ip}:/usr/local/kafka/configdone
分发之后记得更改一下每个配置文件的 broker.id。
启动kafka。
NODE_IPS=(192.168.106.7 192.168.106.8 192.168.106.9)for node_ip in ${NODE_IPS[@]}doecho ">>> ${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-topicCreated 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:2181test-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-beginningUsing 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
如此,一个完整的集群就配置完成了。
转载请标明出处【Centos7进行kafka-2.11集群部署】。
《www.micoder.cc》
虚拟化云计算,系统运维,安全技术服务.
| Tags: | [阅读全文...] |
最新评论