部署一个3节点的Kafka集群

前提条件:

  • 已经安装了 Java 环境(Kafka 是基于 Java 开发的)。
  • 已经有三台独立的服务器(节点),每台服务器相互做地址解析。

一 Java环境部署:

  1.1 官网下载jdk

Java下载官网icon-default.png?t=N7T8https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html

  1.12 解压jdk到/usr/local/下
tar -xzvf jdk-8u381-linux-x64.tar.gz -C /usr/local
  1.13 配置环境变量
vim /etc/profile进入编辑模式后,在末尾加入这段(JAVA_HOME为安装路径,:为分隔作用)

export JAVA_HOME=/usr/local/jdk1.8.0_381
export PATH=$PATH:$JAVA_HOME/bin           #将java中bin目录追加到原PATH变量中
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  #配置类文件路径
export JRE_HOME=$JAVA_HOME/jre     #某些程序需要使用JAVA运行环境
  1.14 重新加载配置并测试
  • source /etc/profile
  • java -version  #出现版本即为成功
  1.2 三台节点相互做主机名解析
vim /etc/hosts
192.168.10.110 kafka-110        ##这里映射的主机名可与/etc/hostname中的不同
192.168.10.119 kafka-119
192.168.10.120 kafka-120
###这个文件的作用是进行本地解析:将ip映射到域名或者主机名
当系统需要解析主机名时先访问该文件,主要在局域网且没有可用DNS服务器时使用

二 部署kafka集群步骤:每台节点都进行以下操作

  2.1 下载 Kafka:

kafka下载官网icon-default.png?t=N7T8https://kafka.apache.org/downloads

  下载需要的 Kafka 版本,命名规则:kafka_Scala版本-kafka版本

  2.2 解压 Kafka:
  • 将下载的 Kafka 压缩包解压到每一台服务器上,得到 Kafka 的安装目录。
tar -xvf kafka_2.11-0.10.0.1.tgz -C /opt/
  2.3 配置 ZooKeeper:Kafka 集群依赖 ZooKeeper,因此需要配置 ZooKeeper。
   2.31 下载 zookeeper-3.5.4-beta.tar.gz,并解压到/opt/

   0.1.1前版本必带参数--zookeeper,之后的新版本必带参数--bootstrp-server

zookeeper下载icon-default.png?t=N7T8https://archive.apache.org/dist/zookeeper/

 tar -zxvf zookeeper-3.5.4-beta.tar.gz -C /opt/

 tips:工作环境中一般解压到/usr/local(/usl/local为标准安装目录,是全局目录所有用户都可访问)

   2.32 编辑配置文件
cd /opt/zookeeper-3.5.4-beta/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
tickTime=2000                #定义zk使用基本时间单位(以毫秒为单位)
initLimit=10                 #定义leader和follower启动过程中时间限制
syncLimit=5                  #定义leader和follower之间的通信时限,规定响应时间
dataDir=/opt/zoo/data        #定义zk的数据存储目录
clientPort=2181              #定义zk用于接收客户端连接的端口
maxClientCnxns=500           #定义每个客户端 IP 地址允许建立的最大连接数

server.0=192.168.10.110:2888:3888
server.1=192.168.10.119:2888:3888
server.2=192.168.10.120:2888:3888   

#格式:server.=::
#hostname:可为/etc/hosts中的ip或主机名 peerPort:服务器之间通信端口 leaderPort:选举leader端口

mkdir -p /opt/zoo/{data,logs}
vim /opt/zoo/data/myid                   #定义zk节点唯一标识(ID),和配置文件对应
三台机器的myid分别写入0,1,2
    2.33 启动zookeeper
 cd /opt/zookeeper-3.5.4-beta/bin/
 ./zkServer.sh start
# 查看启动状态
sh zkServer.sh status
#关闭
 ./zkServer.sh stop

  2.4 配置 Kafka:

   2.41修改配置文件
vim /opt/kafka_2.11-0.10.0.1/config/zookeeper.properties 

dataDir=/opt/zoo/data
#该目录是zookeeper配置的数据存放目录
vim /opt/kafka_2.11-0.10.0.1/config/server.properties

broker.id=0
#分别为0,1,2
#本机IP(kafka的监听地址和外界连接地址,)
listeners=PLAINTEXT://192.168.10.110:9092
advertised.listeners=PLAINTEXT://192.168.10.110:9092
#listeners提供Broker监听地址和端口,PLAINTEXT:明文协议(无加密)
#端口:这里主要是用于接收来自生产者和消费者的连接请求,和与客户端能建立连接
#zookeeper配置:定义了Kafka Broker用于连接到ZK集群的地址,2181为zk的连接端口
zookeeper.connect=192.168.10.110:2181,192.168.10.119:2181,192.168.10.120:2181

  2.5 启动 Kafka: 
cd  /opt/kafka_2.11-0.10.0.1/bin/

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

#关闭
./kafka-server-stop.sh

  2.6  创建 Topic:

使用 Kafka 提供的 kafka-topics.sh 脚本创建一个 Topic。例如:

/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 6 --topic test

--topic:在消息传递系统中,主题是用于组织和发布消息的逻辑通道,类似微信聊天的窗口

--replication-factor :定义每个分区的副本数(副本可理解为实时数据备份),大于broker一半

--partitions :分区,数据被划分为多个片段,一个片段为一个分区,设置为broker的倍数6.9..

如果显示下面指令,代表创建topic成功

Created topic "test".
  2.7 删除 Topic:
#kafka删除
./kafka-topics.sh --delete --topic student --zookeeper 192.168.10.119,192.168.10.110,192.168.10.120
#zk删除
进入zk后:deleteall /brokers/topics/想要删除的主题

  2.8 验证集群状态:

使用 Kafka 提供的 kafka-topics.shkafka-consumer-groups.sh 等脚本查看 Topic 和 Consumer Group 的状态,确保集群正常运行。

#kafka列出创建主题
./kafka-topics.sh --list --zookeeper localhost:2181
#zk列出创建主题
登录到zk:./zkCli.sh -server
ls /brokers/topics   ls /brokers/ids
#查分区
./kafka-topics.sh --describe --zookeeper localhost:2181 --topic example_topic

  2.9  发送和消费消息:    使用 Kafka 提供的 kafka-console-producer.shkafka-console-consumer.sh 等脚本测试消息的发送和消费,确保消息在集群中正常流通。

#生产者:命令行要在一行可使用“\”
./kafka-console-producer.sh --broker-list 192.168.10.119:9092,192.168.10.110:9092,192.168.10.120:9092  --topic test
#消费者:
./kafka-console-consumer.sh --bootstrap-server 192.168.10.119:9092,192.168.10.110:9092,192.168.10.120:9092 --topic test --from-beginning
  • 请注意,以上步骤和理解仅供参考,实际部署可能需要根据具体环境和需求进行调整。在生产环境中,还需要考虑安全性、性能调优等方面的配置。在部署前建议仔细阅读 kafka官网文档,并根据需要进行适当的修改和优化。

三 kafka可视化

参考优秀文档kafka可视化

这里注意要在windows上做本地解析:C:\Windows\System32\drivers\etc\hosts

四 遇到问题

  • 其中一台zk起不来:发现是防火墙没关

你可能感兴趣的:(kafka,分布式)