什么是Kafka?

Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。最新官方给Kafka的定义是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。

Kafka集群的搭建

部署服务器发行版本为CentOS7 ✖️ 三台(已安装好Java环境),三台服务器的IP为:

  • 192.168.182.4
  • 192.168.182.5
  • 192.168.182.6

部署Kafka版本为kafka_2.12-3.1.0

下载安装包、上传服务器

https://kafka.apache.org/downloads

将下载好的安装包上传至每台服务器的/opt/module/目录下后解压重命名为kafka

修改server.properties

分别进入三台服务器kafka的配置文件目录config,修改服务配置文件server.properties

  1. 将broker.id分别修改为0、1、2(不可重复)
  2. 添加listeners=PLAINTEXT://192.168.182.4:9092配置,对应好每个服务器的IP地址
  3. 修改log.dirs=/opt/module/kafka/datas
  4. 修改zookeeper.connect=192.168.182.4:2181,192.168.182.5:2181,192.168.182.6:2181

主要修改部分

...
broker.id=0
listeners=PLAINTEXT://192.168.182.4:9092
log.dirs=/opt/module/kafka/datas
zookeeper.connect=192.168.182.4:2181,192.168.182.5:2181,192.168.182.6:2181
...
...
broker.id=1
listeners=PLAINTEXT://192.168.182.5:9092
log.dirs=/opt/module/kafka/datas
zookeeper.connect=192.168.182.4:2181,192.168.182.5:2181,192.168.182.6:2181
...
...
broker.id=2
listeners=PLAINTEXT://192.168.182.6:9092
log.dirs=/opt/module/kafka/datas
zookeeper.connect=192.168.182.4:2181,192.168.182.5:2181,192.168.182.6:2181
...

修改zookeeper.properties

分别进入三台服务器kafka的配置文件目录config,修改服务配置文件修改zookeeper.properties

  1. 修改dataDir=/opt/module/kafka/zk-datas,后需要手动创建该目录,并创建myid文件,三台服务器的myid不可重复,分别为0,1,2
  2. 添加节点的配置:
    server.0=192.168.182.4:2888:3888
    server.1=192.168.182.5:2888:3888
    server.2=192.168.182.6:2888:3888
    
  3. 添加配置:
    initLimit=10
    syncLimit=5
    tickTime=2000
    

三台服务器保持一致,像下面这样

dataDir=/opt/module/kafka/zk-datas
# 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
initLimit=10
syncLimit=5
tickTime=2000
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
server.0=192.168.182.4:2888:3888
server.1=192.168.182.5:2888:3888
server.2=192.168.182.6:2888:3888

修改bin/kafka-server-stop.sh

官方的停止服务的脚本不太好用,将三台服务器的kafka-server-stop修改成下面的内容

#!/bin/shPIDS=$(jps -lm | grep -i "kafka.Kafka" | awk '{print $1}')if [ -z "$PIDS" ]; thenecho "No kafka server to stop"exit 1
elsekill -s TERM $PIDS
fi

注意:当使用ssh来远程执行此脚本的时候,可能会报jps命令找不到,但是在服务器本身上执行是没有问题,原因是你服务器的jps命令不在Path中,加上去就行,或者使用jps的绝对路径。

启动测试

一定要先启动zk再启动kafka,关闭的时候先关闭kafka,再关闭zk。

启动Zookerper

三台服务器上分别执行下面语句启动Zookerper

# 前台启动
/opt/module/kafka/bin/zookeeper-server-start.sh /opt/module/kafka/config/zookeeper.properties
# 后台启动
/opt/module/kafka/bin/zookeeper-server-start.sh -daemon /opt/module/kafka/config/zookeeper.properties

jps -lm可以看到zk已经启动成功。

启动Kafka

三台服务器上分别执行下面语句启动Kafka

# 前台启动
/opt/module/kafka/bin/kafka-server-start.sh /opt/module/kafka/config/server.properties
# 后台启动
/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties

jps -lm可以看到kafka已经启动成功。

关闭Kafka

三台服务器上分别执行下面语句关闭Kafka

/opt/module/kafka/bin/kafka-server-stop.sh

jps -lm可以看到kafka已经关闭成功。

关闭Zookerper

三台服务器上分别执行下面语句关闭Zookerper

/opt/module/kafka/bin/kafka-server-stop.sh

jps -lm可以看到zookerper已经关闭成功。

编写集群启停脚本

刚才我们是分别在每台服务器上执行启动、停止的命令,这种方式不够方便。所以我们可以通过ssh远程命令来远程在集群中的一台服务器上远程执行另外两台服务器的命令,前提是需要配置好ssh免密登陆,前面的文章与有介绍。

Zookerper的集群启停脚本

创建zk.sh文件,输入以下内容:

#!/bin/bash# description: zk集群启动脚本
# author: 薛伟case $1 in
"start"){for i in 192.168.182.4 192.168.182.5 192.168.182.6do echo " --------启动 $i Kafka-------"ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"done
};;
"stop"){for i in 192.168.182.4 192.168.182.5 192.168.182.6do echo " --------停止 $i Kafka-------"ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh"done
};;
esac

赋予运行权限chmod +x zk.sh

  • 启动集群:./zk.sh start
  • 关闭集群:./zk.sh stop

Kafka的集群启停脚本

创建kafka.sh文件,输入以下内容:

#!/bin/bash# description: zk集群启动脚本
# author: 薛伟case $1 in
"start"){for i in 192.168.182.4 192.168.182.5 192.168.182.6do echo " --------启动 $i Kafka-------"ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"done
};;
"stop"){for i in 192.168.182.4 192.168.182.5 192.168.182.6do echo " --------停止 $i Kafka-------"ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh"done
};;
esac

赋予运行权限chmod +x kafka.sh

  • 启动集群:./kafka.sh start
  • 关闭集群:./kafka.sh stop

Kafka集群的搭建与批量启停相关推荐

  1. kafka集群的搭建

    本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...

  2. 高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper)

    高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper) 一.集群搭建要求 1.搭建设计 2.分配六台Linux,用于安装拥有三个节点的Kafka集群和三个节点的Zookeep ...

  3. 大数据 -- zookeeper和kafka集群环境搭建

    一 运行环境 从阿里云申请三台云服务器,这里我使用了两个不同的阿里云账号去申请云服务器.我们配置三台主机名分别为zy1,zy2,zy3. 我们通过阿里云可以获取主机的公网ip地址,如下: 通过secu ...

  4. Kafka集群部署搭建完美标准版

    Kafka集群部署并启动 在本文中将从演示如何搭建一个Kafka集群开始,然后简要介绍一下关于Kafka集群的一些基础知识点.但本文仅针对集群做介绍,对于Kafka的基本概念不做过多说明,这里假设读者 ...

  5. 融云发送自定义消息_数据源管理 | Kafka集群环境搭建,消息存储机制详解

    一.Kafka集群环境 1.环境版本 版本:kafka2.11,zookeeper3.4 注意:这里zookeeper3.4也是基于集群模式部署. 2.解压重命名 tar -zxvf kafka_2. ...

  6. 数据源管理 | Kafka集群环境搭建,消息存储机制详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.Kafka集群环境 1.环境版本 版本:kafka2.11,zookeeper3.4 注意:这里zookeeper3.4也是基于集群模式部 ...

  7. Kafka集群环境搭建

    首先准备至少三台虚拟机. 每台虚拟机解压下载好的kafka压缩包并重命名 cd /usr/local wget http://mirror.bit.edu.cn/apache/kafka/1.0.0/ ...

  8. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  9. 单机 搭建kafka集群 本地_单机快速搭建多节点kafka集群

    有时候为了更好地了解kafka集群的运行机制,需要自己搭建kafka集群.本文的目的就是让大家在单机上快速搭建kafka集群(仅作为单机测试使用). 环境及工具版本 mac OS 10.15.5 ka ...

最新文章

  1. Nginx——location配置
  2. jdbc连接mysql的语法_JDBC连接MySQL
  3. python中解决死锁的方法
  4. Docker系列教程20-安装Docker Compose
  5. tp3获取所有post_TP为什么后台接收不到POST的数据?
  6. python去除视频马赛克_十行python代码教你如何去除万恶的,如s一样的马赛克
  7. 胡昊—第6次作业—static关键字、对象
  8. Eigen aligned_allocator
  9. 制作在线单词测试的软件,Test Your Vocabulary:号称是最准的英语词汇量测试网站...
  10. 同个网络计算机之间怎么共享,在局域网环境下的多台电脑之间如何实现文件共享需求呢?...
  11. dz手机版空白显示index.php,discuz x3.3安装插件时页面出现空白有两种解决方法
  12. 无法启动此程序,因为计算机中丢失vcruntime140.dll”的解决方法
  13. Elasticsearch压测工具esrally使用笔记
  14. 【C++Primer笔记】第一章 开始
  15. matlab实验八,matlab实验八
  16. 关于POS接口配置的几个注意事项
  17. Linux下开启openmp编译,OpenMP程序的编译和运行
  18. vivoiqooz1鸿蒙系统,vivoiqooz1x参数配置详情_iqoo z1x详细参数跑分
  19. 判断输入是否为回车键
  20. 野火电机+CUBEMX——直流有刷电机的实现

热门文章

  1. 微信小程序 阻止事件冒泡
  2. 读“人生有一种牛逼,叫我能背下来”
  3. wxpy 建群 err_code: 1 err_msg:
  4. 虚拟机中的linux系统无法识别SD卡
  5. 单独的html怎么实现微信分享,html静态页面实现微信分享思路
  6. A001-186-2629-赖海洲
  7. 解密:LL与LR解析 1(译)
  8. macbook air 重置mysql密码
  9. Godaddy无缝切换SSL,无需续费可省12美元
  10. 算法练习-个人所得税