Kafka集群部署
一、安装JDK
二、安装Zookeeper集群
三、安装Kafka集群
官方下载地址:http://kafka.apache.org/downloads.html
1、解压一份 kafka 安装包
tar -zxvf kafka_2.12-3.7.0.tgz -C /opt/module/ mv kafka_2.12-3.7.0/ kafka |
2、修改server.properties
vi server.properties |
配置内容参考如下:
broker.id=1 #kafka节点标识 需要对应节点改变 port=9092 listeners=PLAINTEXT://此节点IP:9092 advertised.listeners=PLAINTEXT://此节点IP: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=/data/kafka/data/log #数据日志文件路径 num.partitions=5 #默认partition数量,如果topic在创建时没有指定partition数量,默认使用此值。要注意,我们可以增加主题分区的个数,但不能减少分区的个数。所以,如果要让一个主题的分区个数少于num.partitions指定的值,需要手动创建该主题。 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=3 #偏移量提交主题的复制因子。表示kafka的内部topic consumer_offsets副本数。当该副本所在的broker宕机,consumer_offsets只有一份副本,该分区宕机。使用该分区存储消费分组offset位置的消费者均会收到影响,offset无法提交,从而导致生产者可以发送消息但消费者不可用。所以需要设置该字段的值大于1。 transaction.state.log.replication.factor=2 transaction.state.log.min.isr=2 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 #zk集群地址 zookeeper.connect=zkip1:2181,zkip2:2181,zkip3:2181 zookeeper.connection.timeout.ms=6000 delete.topic.enable=true confluent.support.customer.id=anonymous group.initial.rebalance.delay.ms=0 |
3、启动命令
(1)zk启动命令(如用kafka自带的zk,如果单独部署的zk请忽略)
nohup bin/zookeeper-server-start.sh config/zookeeper.properties >log/zookeeper/zookeeper.log 2>1 & /usr/local/zookeeper/bin/zkServer.sh start |
(2)kafka启动命令
nohup bin/kafka-server-start.sh config/server.properties >log/kafka/kafka.log 2>1 & /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties |
集群安装(Kraft模式)
官方下载地址:http://kafka.apache.org/downloads.html
1、解压一份 kafka 安装包
tar -zxvf kafka_2.12-3.7.0.tgz -C /opt/module/ mv kafka_2.12-3.7.0/ kafka |
2、修改config/kraft/下的server.properties 配置文件
vim server.properties |
参考配置如下:
#kafka 的角色controller (相当于zk)、broker process.roles=broker, controller node.id=1 #controller 服务协议别名 controller.listener.names=CONTROLLER #全 Controller 列表 controller.quorum.voters=1@hostnameA:9093,2@hostnameB:9093,3@hostnameC:9093 #不同服务器绑定的端口 listeners=PLAINTEXT://:9092,CONTROLLER://:9093 #broker 服务协议别名 inter.broker.listener.name=PLAINTEXT #broker 对外暴露的地址 advertised.Listeners=PLAINTEXT://hostnameA:9092 #协议别名到安全协议的映射 listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLA INTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
#其他配置可参考上文配置文件 |
如果对于性能要求较高,可将controller 与broker分开部署,如3个IP为controller 集群,7个IP为broker集群,config/kraft/下有分开部署的文件broker.properties与controller.properties,配置大同小异。
3、集群元数据配置 集群id
生成集群id:
./kafka-storage.sh random-uuid |
在每个集群节点下配置:
bin/kafka-storage.sh format -t 上述命令生成的id -c config/kraft/server.properties |
4、启动命令
bin/kafka-server-start.sh -daemon config/kraft/server.properties |