精选文章 Linux配置Kafka集群(我的是在一台主机上配的)

Linux配置Kafka集群(我的是在一台主机上配的)

作者:强哥带你飞 时间: 2020-08-04 09:45:11
强哥带你飞 2020-08-04 09:45:11

转载:https://www.cnblogs.com/fzdsy/p/11482583.html  

linux下安装kafka,首先确保zookeeper已经安装成功,想要安装zookeeper,必须先在linux中安装好jdk。

下面我们依次开始安装jdk,zookeeper,kafka。

一:安装jdk:

  1.检查linux环境是否安装了jdk可以用java -version或者rpm -qa|grep jdk 。

  2.下载jdk-8u221-linux-x64.tar.gz。可以在官网上下载,也可以从百度云盘中下载,百度云盘中有jdk,zookeeper,kafka安装包

    https://pan.baidu.com/s/1JjAS4VXRVzPkwuxylJnk4w 提取码:79i1 。

  3.下载到本地后用rz命令把安装包传到linux服务器的usr/local/java目录下。

  4.然后用解压缩命令解压缩tar -zxvf jdk-8u221-linux-x64.tar.gz。

  5.配置jdk环境变量:编辑/etc/下的profile文件: vi /etc/profile

   在文件末尾添加如下配置:  

export JAVA_HOME=/usr/local/java/jdk1.8.0_221

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

   标红色路径为jdk解压路径,根据实际情况配置,保存配置文件退出。

  6.使/etc/profile生效  :source /etc/profile

  7.测试jdk安装是否成功: java -version

二:安装zookeeper:

  1.可以wget下载zookeeper-3.4.13.tar.gz,也可以下载到本机安装包,然后用rz命令传到服务器/usr/local/zookeeper路径下。

  2.解压缩,用解压缩命令,tar -zxvf zookeeper-3.4.13.tar.gz解压。

  3.编辑配置文件前看一下本机ip,及端口号占用。netstat -tunlp ,用于显示tcp,udp的端口和进程等相关情况。netstat -tunlp|grep 端口号,用于查看指定端口号的进程情况。

  hostname命令可以看本服务器ip地址。

       查看

/tmp/zookeeper1/data,/tmp/zookeeper1/log

/tmp/zookeeper2/data,/tmp/zookeeper2/log

/tmp/zookeeper3/data,/tmp/zookeeper3/log

     目录,如果没有用mkdir命令创建。

#192.168.110.100服务器:创建myid文件:server ID和myid对应(三个服务器分别写入1,2,3)
  echo 1 >> /tmp/zookeeper1/data/myid
#192.168.110.100服务器:创建myid文件:server ID和myid对应(三个服务器分别写入1,2,3)
  echo 2 >> /tmp/zookeeper2/data/myid
#192.168.110.100服务器:创建myid文件:server ID和myid对应(三个服务器分别写入1,2,3)
  echo 3 >> /tmp/zookeeper3/data/myid


  4.编辑配置文件:进入conf目录:cd zookeeper-3.4.13/conf,
  将zoo_sample.cfg这个文件复制为zoo.cfg (必须是这个文件名):cp zoo_sample.cfg zoo.cfg,
  进入zoo.cfg文件进行编辑:vim zoo.cfg,
  按 i 进入编辑模式,修改以下内容(修改之前看端口号是否被占用):

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/tmp/zookeeper/data
    dataLogDir=/tmp/zookeeper/log
    clientPort=2181                               -----这个分别配的2181,2182,2183
    server.1=10.0.66.50:28888:38888
    server.2=10.0.47.32:28888:38888
    server.3=10.0.66.65:28888:38888


  参数说明

    tickTime:指 zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔。
    initLimit:用来指定zookeeper 集群中leader接受follower初始化连接时最长能忍受的心跳时间间隔数。若超过 指定个心跳的时间间隔leader还没有收到follower的响应,表明follower连接失败。
    syncLimit:指定 leader与follower之间请求和应答时间最长不能超过多少个 tickTime 。
    dataDir:快照日志的存储路径。
    dataLogDir:事物日志的存储路径,如果不配置该路径,当zk吞吐量较大的时,会严重影响zk的性能。
    clientPort:客户端连接 zookeeper 服务器的端口,默认为2181。
    server.1 这个1是服务器的标识也可以是其他的数字,这个标识要写到dataDir目录下面myid文件里。
    server.1=hostname:2888:3888,hostname后面的第一个端口2888主要用于leader和follower之间的通信,第二个端口3888主要用于选主。
  5.配置zookeeper环境变量,首先打开profile文件,vim /etc/profile 按i进入编辑模式,在文件末尾添加zookeeper环境变量

(环境变量配置不配置都可以的。配置zk环境变量是为了可以在任何目录下都可以敲zk的bin下的脚本)
    #set zookeeper environment
    export ZK_HOME=/usr/local/zookeeper1/zookeeper-3.4.13/
    export PATH=$ZK_HOME/bin:$PATH
  保存文件后,让该环境变量生效 source /etc/profile
  6.另外两台也一样安装
  7.启动zookeeper    

/usr/local/zookeeper1/zookeeper-3.4.13/bin/zkServer.sh start

  8.查看zookeeper状态

/usr/local/zookeeper1/zookeeper-3.4.13/bin/zkServer.sh status

  9.停止zookeeper

/usr/local/zookeeper1/zookeeper-3.4.13/bin/zkServer.sh stop

注意:只起一个zookeeper会报错,选举要过半,三个节点至少要启动俩个

Linux配置Kafka集群(我的是在一台主机上配的)1

把剩下那俩起了之后:   就正常了!

Linux配置Kafka集群(我的是在一台主机上配的)2

三.安装kafka:
  1.可以wget下载kafka_2.11-2.1.1.tgz,也可以下载到本机安装包,然后用rz命令传到服务器/usr/local/kafka1   kafka2   kafka3 路径下。
  2.解压缩,用解压缩命令,tar -zxvf kafka_2.11-2.1.1.tgz解压。
  3.配置kafka环境变量,vim /etc/profile,按i进入编辑模式,在文件末尾添加kafka环境变量
    #set kafka environment
    export KAFKA_HOME=/usr/local/kafka/kafka_2.11-2.1.1
    PATH=${KAFKA_HOME}/bin:$PATH
  保存文件后,让该环境变量生效
    source /etc/profile

  4.192.168.110.100服务器,修改kafka1 配置文件config下面的server.properties

broker.id=1
listeners=PLAINTEXT://192.168.110.100:9092
log.dirs=/tmp/kafka1/log
zookeeper.connect=192.168.110.100:2181,192.168.110.100:2182,192.168.110.100:2183

      192.168.110.100服务器,修改kafka2 配置文件server.properties

broker.id=2
listeners=PLAINTEXT://192.168.110.100:9093
log.dirs=/tmp/kafka2/log
zookeeper.connect=192.168.110.100:2181,192.168.110.100:2182,192.168.110.100:2183

  192.168.110.100服务器,修改kafka3 配置文件server.properties

broker.id=3
listeners=PLAINTEXT://192.168.110.100:9094
log.dirs=/tmp/kafka3/log
zookeeper.connect=192.168.110.100:2181,192.168.110.100:2182,192.168.110.100:2183

  主要修改一下四个地方:

1) broker.id 需要保证每一台kafka都有一个独立的broker
2) listeners = PLAINTEXT://当前虚拟机ip地址:9092
3) log.dirs 数据存放的目录
4) zookeeper.connect zookeeper的连接地址信息

  5.启动kafka(要确保zookeeper已启动),每台主机上分别启动kafka。

#常规模式启动,可以查看控制台输出
/usr/local/kafka1/kafka_2.11-2.1.1/bin/kafka-server-start.sh /usr/local/kafka/kafka_2.11-2.1.1/config/server.properties

#后台启动
/usr/local/kafka1/kafka_2.11-2.1.1/bin/kafka-server-start.sh -daemon /usr/local/kafka/kafka_2.11-2.1.1/config/server.properties

    6.创建一个名称为test-topic-7的Topic,7个分区,并且复制因子为3,执行如下命令:

/usr/local/kafka1/kafka_2.11-1.1.1/bin/kafka-topics.sh --create --zookeeper 192.168.110.100:2181,192.168.110.100:2182,192.168.110.100:2183 --replication-factor 3 --partitions 7 --topic test-topic1-7

Linux配置Kafka集群(我的是在一台主机上配的)3
  7.查看创建的topic信息,进入kafka的bin目录下,执行如下命令:

/usr/local/kafka1/kafka_2.11-1.1.1/bin/kafka-topics.sh --describe --zookeeper 192.168.110.100:2181,192.168.110.100:2182,192.168.110.100:2183 --topic test-topic1-7

Linux配置Kafka集群(我的是在一台主机上配的)4
  8.在其中一台服务器 kafka1 启动生产者(producer)

/usr/local/kafka1/kafka_2.11-1.1.1/bin/kafka-console-producer.sh --broker-list 192.168.110.100:9092,192.168.110.100:9093,192.168.110.100:9094 --topic test-topic1-7

  9.在任意议一台服务器启动消费者(consumer),接受消息

/usr/local/kafka2/kafka_2.11-1.1.1/bin/kafka-console-consumer.sh --bootstrap-server 192.168.110.100:9092,192.168.110.100:9093,192.168.110.100:9094 --topic test-topic1-7 --from-beginning

  10.如果consumer服务器接收到producer服务器输入的内容,则启动集群成功。

 

  执行生产者命令,在生产者命令窗口输入消息。Linux配置Kafka集群(我的是在一台主机上配的)5

  执行消费者命令,在消费者命令窗口显示消息。

Linux配置Kafka集群(我的是在一台主机上配的)6

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:程序员小伙子在外包公司工作两年,月薪10000+,每天5:30准时下班

下一篇:手写框架 一 之 spring-ioc

您可能感兴趣

  • HDFS的功能和架构原理详解

    目录 一、分布式文件系统的理解 二、HDFS的架构详细剖析 1. 文件分块存储&3副本 2. 抽象成数据块的好处 3. HDFS架构 4. 扩展 三、HDFS的shell命令操作 四、HDFS安全模式 一、分布式文件系统的理解 最直观的理解便是三个臭皮匠,顶个诸葛亮。 很多的磁盘加一起就可以装下天下所有的avi 类似于你出五毛,我出五毛,我们一起凑一块的效果 如下图: 二、HDFS的架构详细...

  • kubernetes使用组件具体介绍

    1. kubernetes介绍 1.1. kubernetes介绍 kubernetes是一种开源的容器编排工具,通过调度系统维持用户预期数量和状态的容器正常运行。kubernetes提供的功能: 服务发现和负载均衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果到容器的流量很大,Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。 存储编排 K...

  • 美团数据库运维自动化系统构建之路

    本文整理自美团点评技术沙龙第10期:数据库技术架构与实践。 美团点评技术沙龙由美团点评技术团队主办,每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 目前沙龙会分别在北京、上海和厦门等地举行,要参加下一次最新沙龙活动?赶快关注微信公众号“美团点评技术团队”。 本次沙龙主要围绕数据库相关的主题,内容包括美团数据库自动化运维系统构建、点评侧My...

  • K8s CNI网络最强对比:Flannel、Calico、Canal和W

    介 绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。因此,业界已有不少不同的网络方案,来满足特定的环境和要求。 CNI意为容器网络接口,它是一种标准的设计,为了让用户在容器创建或销毁时都能够更容易地配置容器网络。在本文中,我们将集中探索与对比目前最流行的CNI插件:Flan...

  • 历时两周,将我司的Hadoop2升级到Hadoop3,踩了几个大坑...

    文末有赠书福利 继一次超万亿规模的Hadoop NameNode性能故障排查过程之后,虽然解决了Hadoop2.6.0版本在项目中的问题,但客户依然比较担心,一是担心版本过老,还存在其他未发现的问题;二是按目前每天近千亿条的数据增长,终究会遇到NameNode的第二次瓶颈。 基于上述原因,我们决定将当前集群由Hadoop2.6.0版本升级到Hadoop3.2.1版本,且启用联邦模式。历时2周...

  • python学习001

    前言: 1、运维/网络为什么要学习编程? (1)运维/网络中所有已学的命令其实都是已经编制好的程序,创造命令就是编写程序; (2)在云计算领域中,繁琐的命令配置已经不能满足日常需求,深入发展是需要贴近业务/研发的,因此就要能够创造命令/编写程序/开发; (3)网络安全领域中,可以深入理解渗透、攻防等细节,Kali-Linux ,SDN(命令对应网络)夯实技术; (4)对于校招而言,大型互联网...

  • 芯片破壁者(十.上):风起樱花之地

    在不断升级的中美科技战中,每个人都很容易发现,在芯片上受制于人似乎是一个最难解的谜题。面对这种情况,很多国人可能都在思考:我们到底有没有可能打破“芯片枷锁”? 而从历史里寻找答案是文明的天性,在审视国家间的半导体博弈时,有一个无法绕开的话题,就是上世纪60年到到90年代,横跨数十年、关系错综复杂的美日半导体纠葛。这段历史中最为人津津乐道的有两点。一是日本在80年代一跃超过美国成为全球半导体产...

  • 测试工程师苦逼时刻,Android 谈谈自动化测试

    前言 最近,手头上的项目基本开发完成,优化也做的差不多了,本以为可以安心准备上线。然而老板却反映说测试人员发现 App 总会出现一些莫名的 bug. 目录 前言 一、概述 二、自动化测试框架 三、云测试平台 bug 来了,那就解决呗。但是这 bug 又贼迷,偶尔出来一个调戏一下你,就问你服不服。所以为了让 App 中的 bug 尽可能的减少,只能暂时苦逼地转行测试。这几天花了不少时间和精力,...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。