搭建 Kafka 高可用集群(一)之 单台搭建(图文案例)

发布时间:2021-05-13作者:laosun阅读(979)

搭建

搭建 Kafka 高可用集群(一)之 单台搭建简单消息发送接收(图文案例),搭建 Kafka 高可用集群,3台机器,3分区测试高可用集群。

    本篇文章简单来讲解一下kafka的高可用集群搭建,准备三台机器,设置三个分区来进行测试。

    三台机器均是虚拟机。ip为:10.211.55.11、10.211.55.12、10.211.55.13


    下载安装

    首先我们去apache官网下载kafka。 http://kafka.apache.org/

    image.png

    下载目录我们选定为 /usr/local

    # 下载方式
    > cd /usr/local
    > wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.8.0/kafka_2.12-2.8.0.tgz
    
    # 然后我们分别在三台机器执行相同的操作进行下载,或者使用scp拷贝过去。
    # scp 拷贝语法
    > scp kafka_2.12-2.8.0.tgz root@10.211.55.12:/usr/local/kafka_2.12-2.8.0.tgz
    # 输入密码即可完成拷贝
     
    # 在三台机器分别执行解压操作
    > tar zxvf kafka_2.12-2.8.0.tgz

    image.png


    之后我们所有的操作都在 /usr/local/kafka_2.12-2.8.0 目录下


    先搭建一个简单的单台单分区的kafka的启动和消息发送接收测试


    配置文件修改

    我们现在kafka根目录创建2个文件,之后会修改配置文件作为消息和日志的存储之地。

    # kafka 消息和索引文件的存储目录
    > mkdir kafka-logs
    # zookeeper 数据目录
    > mkdir zookeeper

    我们编辑一下zookeeper的配置文件。

    我们使用 vim config/zookeeper.properties 来编辑一下zookeeper的配置文件,然后修改dataDir配置项。

    从下面的配置文件我们可以得知zookeeper的端口为2181

    # the directory where the snapshot is stored.
    dataDir=/usr/local/kafka_2.12-2.8.0/zookeeper
    # the port at which the clients will connect
    clientPort=2181
    # disable the per-ip limit on the number of connections since this is a non-production config
    maxClientCnxns=0
    # Disable the adminserver by default to avoid port conflicts.
    # Set the port to something non-conflicting if choosing to enable this
    admin.enableServer=false
    # admin.serverPort=8080

    然后我们编辑kafka server的配置文件 vim config/server.properties ,从下面的配置我们可以得知kafka服务的默认端口为9092

    修改以下几项:

    # 为了方便识别,我们修改成和ip对应的编号,此处我使用的10.211.55.11这台机器,那么修改成如下
    broker.id=11
    # 使listeners生效,配置如下(kafka服务端口为9092,记下来)
    listeners=PLAINTEXT://10.211.55.11:9092
    # 数据文件存储目录
    log.dirs=/usr/local/kafka_2.12-2.8.0/kafka-logs
    # 该配置项不做修改,使用默认值1
    num.partitions=1
    # 该配置项不做修改,使用默认值1
    offsets.topic.replication.factor=1
    # 修改zookeeper服务地址
    zookeeper.connect=10.211.55.11:2181

    配置文件我们都修改完毕。


    启动服务

    # 启动zookeeper服务,建议新手控制台启动先观察一下,如果能正常启动成功,再使用后台启动即可
    # 控制台启动(启动成功后没问题,按住ctrl+c退出)
    sh bin/zookeeper-server-start.sh config/zookeeper.properties
    # 后台启动
    > nohup sh bin/zookeeper-server-start.sh config/zookeeper.properties &
    
    
    # 启动kafka-server服务(后台启动)
    > nohup sh bin/kafka-server-start.sh config/server.properties &
    
    
    # 最后记得使用我们使用ps或者jps查看下进程,是否都启动成功


    创建topic主题

    # 创建topic主题
    # 方式1 创建test 主题(指定 kafka server 服务进行创建)
    > sh bin/kafka-topics.sh --create --bootstrap-server 10.211.55.11:9092 --replication-factor 1 --partitions 1 --topic test
    # 方式2 创建test2主题(指定 zookeeper 服务进行创建)
    > sh bin/kafka-topics.sh --create --zookeeper 10.211.55.11:2181 --replication-factor 1 --partitions 1 --topic test2
    
    # 查看主题(此处应该存在test和test2两个主题)
    > sh bin/kafka-topics.sh --list --zookeeper 10.211.55.11:2181
    
    # 查看是否创建了本地存储文件
    > ll kafka-logs/
    # 我们可以看到分别创建了两个文件夹 test-0 和 test2-0
    # 我们查看其中一个topic主题生成的目录文件
    > ll kafka-logs/test-0/
    -rw-r--r--. 1 root root 10485760 5月  13 23:00 00000000000000000000.index
    -rw-r--r--. 1 root root        0 5月  13 23:00 00000000000000000000.log
    -rw-r--r--. 1 root root 10485756 5月  13 23:00 00000000000000000000.timeindex
    -rw-r--r--. 1 root root        8 5月  13 23:00 leader-epoch-checkpoint
    
    # 其中index和timeindex从名字上我们可以得知这是索引文件;log是消息;leader-epoch-checkpoint则是保存了每一任leader开始写入消息时的offset


    启动生产者和消费者

    # 启动自带模拟生产者,准备向test主题发送消息,我们执行完后,窗口卡顿在了 > ,因为是等待输入消息,我们再先创建个消费者
    > sh bin/kafka-console-producer.sh --broker-list 10.211.55.11:9092 --topic test
    
    # 启动自带模拟消费者(新开shell窗口),我们执行完后,窗口同样处于等待输出的状态。 如果我们在命令行后增加 --from-beginning,则表示生产过的所有消息全部进行消费一遍
    > sh bin/kafka-console-consumer.sh --bootstrap-server 10.211.55.11:9092 --topic test
    
    # 此时我们在生产者处随便输入一些消息,消费者窗口则会相应的输出消息


    截止到此处简单的 kafka 消息测试完毕。


    高可用搭建请看下篇文章 : 搭建 Kafka 高可用集群(二),3台机器,3分区测试高可用集群


2 +1

版权声明

 开源  工具  kafka

 请文明留言

0 条评论