一、单机版Kafka安装
在学习Kafka之前,我们需要先安装单机版的Kafka。
1、下载Kafka包
在Kafka的官网上可以下载到Kafka的安装包,下载完成后解压到指定目录。
2、修改配置文件
Kafka的配置文件在config/server.properties目录下,需要修改broker.id、log.dirs、zookeeper.connect三个属性。
broker.id=0
log.dirs=/tmp/kafka-logs
zookeeper.connect=localhost:2181
3、启动Zookeeper
Kafka依赖于Zookeeper,需要先启动Zookeeper。
bin/zookeeper-server-start.sh config/zookeeper.properties
4、启动Kafka
在Kafka的解压目录下执行以下命令。
bin/kafka-server-start.sh config/server.properties
5、测试Kafka
使用命令行创建topic并进行消息传输测试。
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
二、Kafka集群安装
在单机版Kafka安装成功之后,我们可以开始安装Kafka集群。
1、准备工作
首先需要准备多台服务器,假设我们有3台服务器,分别是192.168.1.100、192.168.1.101、192.168.1.102。
分别在三台服务器上安装JDK。
在每台服务器上分别创建Kafka的安装目录,我们可将其放在/opt/kafka。
2、配置Zookeeper
由于Kafka集群依赖于Zookeeper,需要先配置Zookeeper。
在三台服务器上分别修改Zookeeper的配置文件,将其中的dataDir和clientPort属性修改为以下内容。
dataDir=/opt/kafka/zookeeper
clientPort=2181
在192.168.1.100上启动Zookeeper。
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
在192.168.1.101和192.168.1.102上启动Zookeeper。
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
在三台服务器上都启动Zookeeper之后,通过以下命令检测是否启动成功。
/opt/kafka/bin/zookeeper-shell.sh 192.168.1.100:2181
3、配置Kafka
在三台服务器上分别修改Kafka的配置文件。
broker.id=0
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://192.168.1.100:9092
zookeeper.connect=192.168.1.100:2181,192.168.1.101:2181,192.168.1.102:2181
log.dirs=/opt/kafka/logs
其中,192.168.1.100为Kafka集群中的主服务IP地址,zookeeper.connect则包含了所有Kafka管理的Zookeeper的地址,listener和advertised.listeners属性分别用于指定Kafka的监听地址和对外广告地址。
4、启动Kafka
在192.168.1.100上启动Kafka。
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
在192.168.1.101和192.168.1.102上启动Kafka。
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
5、测试Kafka
使用命令行创建topic并进行消息传输测试。
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.1.100:2181 --replication-factor 3 --partitions 3 --topic test
/opt/kafka/bin/kafka-console-producer.sh --broker-list 192.168.1.100:9092 --topic test
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic test --from-beginning
三、Kafka集群故障处理
Kafka集群安装成功后,我们需要时刻注意集群的健康状态,及时处理可能出现的故障。
1、故障场景
以下是可能出现的故障场景:
1)Zookeeper宕机
集群中的每个Kafka服务都依赖于Zookeeper,一旦Zookeeper宕机,会影响整个Kafka集群的正常运行。
2)部分Kafka服务宕机
即使集群中的某个Kafka服务宕机,对整个Kafka集群也会产生影响,因为这个服务可能正好承担了某些关键任务。
2、处理方法
以下是处理可能出现的故障的方法:
1)Zookeeper宕机
在集群中选取一台服务器,在该服务器上启动临时Zookeeper。
/opt/kafka/bin/zookeeper-server-start.sh config/zookeeper.properties
/opt/kafka/bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'unclean.leader.election.enable=true' --entity-type brokers --entity-name 0
2)部分Kafka服务宕机
重新分配partitions。
/opt/kafka/bin/kafka-preferred-replica-election.sh --zookeeper 192.168.1.100:2181
四、总结
通过本文的介绍,我们学习了如何安装单机版Kafka,以及如何安装Kafka集群,并对可能出现的故障进行了处理。将来在实际使用过程中,我们需要不断地学习和探索,以发掘Kafka更多的使用方法。