linux 源码搭建Kafka集群,100%有效
kafka源码编译安装
准备三台服务器
192.168.xxx.xxx
192.168.xxx.xxx
192.168.xxx.xxx
安装kafka前需先安装JDK和zookeeper如下步骤:
JDK配置安装
官网地址(https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html)
下载文件到本地,通过远程工具上载文件到服务器自定义目录
解压文件到指定目录(所有节点机器都做,也可忽略后面做节点复制)
tar -zxvf jdk-8u291-linux-x64.tar.gz -C /usr/local/ #解压文件到指定目录
mv jdk1.8.0_291/ java #修改文件名
cd java
配置环境变量
vi etc/profile
末尾添加如下内容:
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
使配置文件生效
source /etc/profile
检查验证
java -version
zookeeper 配置安装
官网下载地址(https://zookeeper.apache.org/releases.html)
下载源码包文件到本地通过远程连接工具上载文件到服务器
解压文件
推荐下载编译后的bin源码包
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local/
mv apache-zookeeper-3.7.0-bin/ zookeeper
创建文件目录用于存放数据
cd /usr/local/zookeeper
mkdir data #存放数据
mkdir logs #存放日志文件
进入conf文件夹,将zoo_sample.cfg改为zoo.cfg
cd /usr/local/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
修改配置文件参数
vi zoo.cfg
#The number of milliseconds of each tick
tickTime=2000 #服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳。
#The number of ticks that the initial
#synchronization phase can take
initLimit=10 #配置 Zookeeper 接受客户端(此客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已超过initLimit个tickTime长度后 Zookeeper 服务器还没有收到客户端的返回信息,则表明客户端连接失败。总的时间长度就是 initLimit * tickTime 秒。
#The number of ticks that can pass between
#sending a request and getting an acknowledgement
syncLimit=5 #配置 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 syncLimit * tickTime 秒。
#the directory where the snapshot is stored.
#do not use /tmp for storage, /tmp here is just
#example sakes.
dataDir=/usr/local/zookeeper/data #Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
dataLogDir=/usr/local/zookeeper/logs #dataLogDir:若没提供的话则用dataDir。zookeeper的持久化都存储在这两个目录里。dataLogDir里是放到的顺序日志(WAL)。而dataDir里放的是内存数据结构的snapshot,便于快速恢复。为了达到性能最大化,一般建议把dataDir和dataLogDir分到不同的磁盘上,以充分利用磁盘顺序写的特性。
#the port at which the clients will connect
clientPort=2181 #Zookeeper服务器监听的端口,以接受客户端的访问请求。
#the maximum number of client connections.
#increase this if you need to handle more clients
#maxClientCnxns=60
#Be sure to read the maintenance section of the
administrator guide before turning on autopurge.
#http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
Purge task interval in hours
Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
Metrics Providers
#https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
#zookeeper集群配置信息
server.1=192.168.xxx.xxx:2888:3888 ###注:192.168.xxx.xxx:2888:3888后面一定不要有空格,否则会报错
server.2=192.168.xxx.xxx:2888:3888
server.3=192.168.xxx.xxx:2888:3888
#server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,此端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。2888端口是zookeeper服务相互通信使用的,3888端口是zookeeper服务选举使用的
默认端口说明:
添加myid文件
说明:除了修改 zoo.cfg 配置文件,集群模式下还要新增一个名叫myid的文件,这个文件放在上述dataDir指定的目录下,这个文件里面就只有一个数据,就是上图配置中server.x的这个x(1,2,3)值,zookeeper启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个server(节点)。
cd /usr/local/zookeeper/data
vi myid
将配置好的zookeeper 复制到其他集群节点上
scp -r /usr/local/zookeeper/ root@192.168.xxx.xxx:/usr/local/zookeeper
scp -r /usr/local/zookeeper/ root@192.168.xxx.xxx:/usr/local/zookeeper
scp -r /usr/local/zookeeper/ root@192.168.xxx.xxx:/usr/local/zookeeper
##复制安装完成的java 到其它集群节点(如已完成JDK安装请忽略)
scp -r /usr/local/java/ root@192.168.xxx.xxx:/usr/local/java
scp -r /usr/local/java/ root@192.168.xxx.xxx:/usr/local/java
scp -r /usr/local/java/ root@192.168.xxx.xxx:/usr/local/java
## 配置其它集群节点java环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
注:分别修改服务节点的myid 值(与上述server所对应服务器一致如:server.1=192.168.238.128则对应服务器的myid为1以次类推)
vi /usr/local/zookeeper/data/myid ## 所有机器
启动节点(所有机器执行下述操作)
cd /usr/local/zookeeper/bin
./zkServer.sh start #启动命令
./zkServer.sh status # 查看运行状态
启动完成显示如上
查看各节点状态
192.168.xxx.xxx
192.168.xxx.xxx
192.168.xxx.xxx
kafka配置安装
官网地址下载(http://kafka.apache.org/downloads)
上载文件到服务器指定目录
cd /usr/local/src/tool/
解压文件
tar -zxvf kafka_2.13-2.8.0.tgz -C /usr/local/
mv kafka_2.13-2.8.0/ kafka
cd kafka/
mkdir kafka-logs //保存日志文件目录 非必须创建
解压后文件目录
cd /usr/local/kafka
修改配置文件
cd /usr/local/kafka/config
修改server.properties配置文件
在server.properties中主要修改如下配置:
broker.id=1 //每个kafka服务器的唯一识别id 默认为0
listeners=PLAINTEXT://192.168.xxx.xxx:9092 //去掉注释配置为本机ip
listeners=PLAINTEXT://:9092 //kafka对外提供服务的默认端口
log.dirs=/usr/local/kafka/kafka-logs //非必须可选择修改 如需要改需手动创建对应文件目录
zookeeper.connect=192.168.xxx.xxx:2181,192.168.xx.xxx:2181,192.168.xx.xx:2181 //zookeeper集群用逗号隔开
将kafka目录分发到各节点
scp -r kafka/ root@192.168.xxx.xxx:/usr/local/kafka/
scp -r kafka/ root@192.168.xxx.xxx:/usr/local/kafka/
按上述修改如上配置
启动kafka(所有节点)
进入bin目录
cd /usr/local/kafka/bin
./kafka-server-start.sh -daemon ../config/server.properties
jps //验证
检查端口
netstat -tlnp
测试
1.查看topic 列表
bin/kafka-topics.sh --list --zookeeper 192.168.xx.xx:2181
//这里的ip对应server.properties 配置所在服务器端口 /新安装配置的kafka下无数据
2.创建topic
bin/kafka-topics.sh --describe --zookeeper 192.168.xxx.xxx:2181 --topic test //创建topic 取名test
3.在其中一台服务器上创建生产者
bin/kafka-console-producer.sh --broker-list 192.168.xx.xx:9092,192.168.xxx.xxx:9092,192.168.xxx.xxx:9092 --topic test
4.在另外两台服务器创建消费者
./kafka-console-consumer.sh --bootstrap-server 192.168.xxx.xxx:9092,192.168.xxx.xxx:9092,192.168.xxx.xxx:9092 --topic test --from-beginning
测试通过!
linux 源码搭建Kafka集群,100%有效的更多相关文章
- Kafka学习之(六)搭建kafka集群
想要搭建kafka集群,必须具备zookeeper集群,关于zookeeper集群的搭建,在Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建博客有说明.需要具备两台以上装有zook ...
- dubbo源码解析五 --- 集群容错架构设计与原理分析
欢迎来我的 Star Followers 后期后继续更新Dubbo别的文章 Dubbo 源码分析系列之一环境搭建 博客园 Dubbo 入门之二 --- 项目结构解析 博客园 Dubbo 源码分析系列之 ...
- centos7搭建kafka集群-第二篇
好了,本篇开始部署kafka集群 Zookeeper集群搭建 注:Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群(也可以用kafka自带的ZK,但不推荐) 1.软 ...
- 大数据平台搭建-kafka集群的搭建
本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...
- 什么是kafka以及如何搭建kafka集群?
一.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. Kafka场景比喻 接下来我大概比喻下Kafka的使用场景 消息中间件:生产者和消费者 妈妈:生产 ...
- 利用新版本自带的Zookeeper搭建kafka集群
安装简要说明新版本的kafka自带有zookeeper,其实自带的zookeeper完全够用,本篇文章以记录使用自带zookeeper搭建kafka集群.1.关于kafka下载kafka下载页面:ht ...
- docker-compose 搭建kafka集群
docker-compose搭建kafka集群 下载镜像 1.wurstmeister/zookeeper 2.wurstmeister/kafka 3.sheepkiller/kafka-manag ...
- docker容器中搭建kafka集群环境
Kafka集群管理.状态保存是通过zookeeper实现,所以先要搭建zookeeper集群 zookeeper集群搭建 一.软件环境: zookeeper集群需要超过半数的的node存活才能对外服务 ...
- 用 Docker 快速搭建 Kafka 集群
开源Linux 一个执着于技术的公众号 版本 •JDK 14•Zookeeper•Kafka 安装 Zookeeper 和 Kafka Kafka 依赖 Zookeeper,所以我们需要在安装 Kaf ...
随机推荐
- java:替换List集合中的某个任意值(对象)
定义replaceAll方法,将传入的新值替换集合中的老值(list,old,new) private static <E> void replaceAll(List<E> l ...
- logback学习与配置使用
Logback介绍 Logback 分为三个模块:Core.Classic 和 Access.Core模块是其他两个模块的基础. Classic模块扩展了core模块. Classic模块相当于log ...
- Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题
LocalDate.LocalTime.LocalDateTime是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作.然而,我们在使用Spring Boot或使 ...
- Redisson 分布式锁源码 11:Semaphore 和 CountDownLatch
前言 Redisson 除了提供了分布式锁之外,还额外提供了同步组件,Semaphore 和 CountDownLatch. Semaphore 意思就是在分布式场景下,只有 3 个凭证,也就意味着同 ...
- QT. 学习之路 二
Qt 的信号槽机制并不仅仅是使用系统提供的那部分,还会允许我们自己设计自己的信号和槽. 举报纸和订阅者的例子:有一个报纸类 Newspaper,有一个订阅者类 Subscriber.Subscribe ...
- Python使用笔记20--网络操作小练习
1 ''' 2 2.自己抓取qq群的接口,传入一个群号,然后把群成员的头像下载到本地,头像用群备注来命名,如果没有 3 群备注,那么取昵称. 4 ''' 5 import requests 6 imp ...
- shell脚本编写规范和相关变量类型
shell编程规范与变量 一.shell脚本概述 ① 什么是shell? Linux中有哪些shell? ② shell的作用 ③ 用户的登录shell ④ shell脚本 ...
- Cobbler自动部署装机 轻松解决装机烦恼
Cobbler自动部署装机一.实验准备二.搭建步骤1.导入epel源2.安装Cobbler以及其相关服务软件包3.修改Cobbler 主配置文件4.启动相关服务并关闭防火墙和selinux5.使用co ...
- c语言:DEV-C++5.10调试设置
DEV-C++调试设置方法:默认不能调试,打开调试的方法: 1.点击"工具"菜单--编译选项--"代码生成/优化"--连接器--"产生调试信息&quo ...
- [刘阳Java]_酷炫视频播放器制作_界面篇
今天开始分享一篇酷炫播放器制作,包括界面+JS.整个案例非常类似腾讯视频,优酷视频,爱奇艺视频.我们先看一下效果图,然后这篇文章主要界面篇 是不是效果比较酷炫,那么我接着来给大家说一下这个界面设计思路 ...