首页 > 其他分享 >zk集群+kafka集群搭建

zk集群+kafka集群搭建

时间:2024-04-21 13:55:37浏览次数:25  
标签:bin zk zookeeper kafka 集群 usr local 目录

kafka集群搭建

本文环境:Java jdk 1.8 + zookeeper 3.6.1 + kafka 2.6.0 + CentOS 7.2

准备服务器:三台linux服务器分别是 11.10.135.198 、11.10.135.202 、11.10.135.207

前置说明:zookeeper 运行 需要依赖 jdk, kafka 运行需要依赖zokeeper, 所以需要先安装jdk, 然后安装zookeeper, 然后才能安装kafka

一. 安装jdk

1.从官网https://www.oracle.com/java/technologies/downloads/#java8下载jdk包上传至服务器,我下载的版本是jdk-8u162-linux-x64.tar.gz

2.新建目录 /usr/local/java ,将jdk-8u162-linux-x64.tar.gz包放至该目录下

3.解压jdk-8u162-linux-x64.tar.gz包

tar -zxvf jdk-8u162-linux-x64.tar.gz

4.配置环境变量

​ 4.1.打开环境变量文件

vi /etc/profile 

​ 4.2.将下面内容粘到该文件末端(注意自己jdk的路径)

export JAVA_HOME=/usr/local/java/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

​ 4.3.保存并退出,然后执行以下命令使配置内容生效

source /etc/profile

二.安装zookeeper

1.单机部署zookeeper

1.下载zookeeper包,网址:http://archive.apache.org/dist/zookeeper/

2.新建目录 /usr/local/zookeeper,将apache-zookeeper-3.6.1-bin.tar.gz上传到该目录。(注意:必须是带-bin的包才行)

3.执行以下命令解压

tar -zxf apache-zookeeper-3.6.1-bin.tar.gz

4.为zookeeper准备配置文件

# 进去zk的根目录
cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin
# zookeeper 根目录下创建data目录
mkdir data
# 进入conf目录
cd /home/zookeeper/zookeeper-3.4.10/conf
# 复制配置文件
cp zoo_sampe.cfg zoo.cfg
# 查看zoo.cfg,并编辑里面的dataDir属性
dataDir=/usr/local/zookeeper/apache-zookeeper-3.6.1-bin/data  #就是前两步新建的那个data路径,此路径用于存储zookeeper中数据的内存快照、及事务日志文件,虽然zookeeper是使用内存的,但是需要持久化一些数据来保证数据的安全,和redis一样

5.启动zookeeper

# 进入zookeeper的bin目录
cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin
# 启动zookeeper
./zkServer.sh start

# 启动: zkServer.sh start
# 停止: zkServer.sh stop
# 查看状态:zkServer.sh status

# 进入zookeeper 内部, 进入zk客户端可以进行命令操作
./zkCli.sh

2.集群搭建zookeeper

:搭建zk集群其实很简单,就是在单机部署的前提下做些配置文件的修改。需要注意的是,zookeeper集群数量必须满足2n+1(n>0),所以必须每个节点都启动之后再查看状态才行,否则只启动一台的时候,执行./zkServer.sh status命令查看状态会报错。

前提: 三台服务器都已经完成了zk的单机部署

1.修改服务器对应配置文件,每台服务器都需要修改

# 服务器对应端口号
clientPort=2181
# 数据快照文件所在路径
dataDir=/usr/local/zookeeper/apache-zookeeper-3.6.1-bin/data
# 集群配置信息
   # server:A=B:C:D
   # A:是一个数字,表示这个是服务器的编号
   # B:是这个服务器的ip地址
   # C:Zookeeper服务器之间通信的端口(数据互通,必须的)
   # D:Leader选举的端口
server.1=11.10.135.198:2288:3388 
server.2=11.10.135.202:2288:3388
server.3=11.10.135.207:2288:3388

2.在上一步 dataDir 指定的目录下,创建myid文件,然后在该文件添加上一步server配置的对应A数字

# 11.10.135.198对应的数字为1
# /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/data目录(即dataDir的目录下)下执行命令
echo "1" > myid
# 11.10.135.202对应的数字为2
# /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/data目录(即dataDir的目录下)下执行命令
echo "2" > myid
# 11.10.135.207对应的数字为3
# /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/data目录(即dataDir的目录下)下执行命令
echo "3" > myid

3.分别启动三台服务器,检验集群状态

#分别再三台服务器的目录下执行以下命令
cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin   #进入bin目录
./zkServer.sh start   # 启动zk

#查看启动状态,必须是全部都启动之后再查看状态
./zkServer.sh status

4.集群启动后每台服务器的状态如下:

# 在11.10.135.198服务器查看
[root@iZ3wi010xxh9e3v1ik5wnuZ bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
# 在11.10.135.202服务器查看
[root@iZ3wi010xxh9e3v1ik5wntZ bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
# 在11.10.135.207服务器查看
[root@iZ3wi010xxh9e3v1ik5wntZ bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

安装kafka

1.单机部署kafka

注: 以11.10.135.198服务器为例

1.下载kafka包kafka_2.13-2.6.0.tgz,网址:https://archive.apache.org/dist/kafka/2.6.0/

2.创建目录/usr/local/kafka,并将kafka_2.13-2.6.0.tgz上传到该目录

3.解压 kafka_2.13-2.6.0.tgz, 并创建logs目录

cd /usr/local/kafka
# 解压到当前目录
tar -zxvf kafka_2.13-2.6.0.tgz
# 查看解压结构
[root@iZ3wi010xxh9e3v1ik5wntZ kafka]# ls
kafka_2.13-2.6.0  kafka_2.13-2.6.0.tgz
# 进入kafka跟目录
[root@iZ3wi010xxh9e3v1ik5wntZ kafka]# cd kafka_2.13-2.6.0/
# 查看目录结构
[root@iZ3wi010xxh9e3v1ik5wntZ kafka_2.13-2.6.0]# ls
bin  config  libs  LICENSE  NOTICE  site-docs
# 新加logs目录(注意这个目录就是 kafka 的数据存放目录,kafka 以日志的形式存储数据)
[root@iZ3wi010xxh9e3v1ik5wntZ kafka_2.13-2.6.0]# mkdir logs
# 再次查看目录结构
[root@iZ3wi010xxh9e3v1ik5wntZ kafka_2.13-2.6.0]# ls
bin  config  libs  LICENSE  logs  NOTICE  site-docs

4.修改kafka 核心文件 server.properties (在目录/usr/local/kafka/kafka_2.13-2.6.0/config下)

# 主要是修改如下参数

#broker.id属性在kafka集群中必须要是唯一
broker.id=0 
#当前服务器的ip和提供服务的端口号
listeners=PLAINTEXT://11.10.135.198:9092
#kafka的消息存储文件(即前几步新建的那个logs目录)
log.dirs=/usr/local/kafka/kafka_2.13-2.6.0/logs
#kafka连接zookeeper的地址(zk是集群的话需要逗号隔开)
zookeeper.connect=11.10.135.198:2181,11.10.135.202:2181,11.10.135.207:2181

5.kafka的启动和停止(在kafka的bin目录下进行)

启动方式一: nohup ./kafka-server-start.sh ../config/server.properties &

启动方式一: kafka-server-start.sh -daemon ../config/server.properties

停止命令: ./kafka-server-stop.sh

6.查看kafka进程

# 使用命令 jps

[root@iZ3wi010xxh9e3v1ik5wntZ config]# jps
156288 QuorumPeerMain
172536 Kafka
173918 Jps

2.集群搭建kafka

前提:每台服务器已经完成kafka单机部署

  1. 集群很简单,只需要在单机部署的前提下保证每台服务器的kafka 核心文件 server.properties中的broker.id的值不一样就行 ,改完配置文件记得重启kafka服务。

  2. 可以在zookeeper中看下是否将kafka的节点注册进去了

    # 随便找台集群zk的服务器,进入zk的bin目录
    [root@iZ3wi010xxh9e3v1ik5wntZ bin]# cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin
    # 连接zk客户端
    [root@iZ3wi010xxh9e3v1ik5wntZ bin]# ./zkCli.sh
    # 查看根目录的子目录
    [zk: localhost:2181(CONNECTED) 0] ls /
    [admin, brokers, cluster, config, consumers, controller, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
    # 查看/brokers/ids已经存在0,1,2, 说明kafka集群的三个broker节点已经注册进去了
    [zk: localhost:2181(CONNECTED) 1] ls /brokers/ids
    [0, 1, 2]
    

标签:bin,zk,zookeeper,kafka,集群,usr,local,目录
From: https://www.cnblogs.com/lfh-blog/p/18148858

相关文章

  • Redis介绍、使用、数据结构和集群模式总结
    Redis(RemoteDictionaryServer)是一个开源的,基于内存的数据结构存储系统,它支持多种数据结构,如字符串(String)、列表(List)、集合(Set)、有序集合(SortedSet)、散列(Hash)等。Redis不仅可以用作数据库、缓存和消息代理,还可以通过复制、持久化、高可用性和分区提供强大的数据保障。以下是关于......
  • 中间件 ZK分布式专题与Dubbo微服务入门 8-6 使用tomcat启动dubbo服务
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12744 1重点关注1.1本节内容使用tomcat启动dubbo服务tomcat启动dubbo服务的弊端    2课程内容2.1tomcat启动dubbo服务的弊端tomcat本身也是软件,占用内存  ......
  • k8s集群部署
    Kubernetes-1.28.2集群介绍及搭建一、Kubernetes概述1、什么是Kubernetes?K8S的全称为Kubernetes。用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。1.23.10以前(包含)docker1.24.0containerd中间件k8s和dockerdockers-shim可以......
  • Redis Cluster 集群部署
    目录一、什么是redisCluster集群二、集群架构图三、redisCluster部署架构1、测试环境2、生产环境四、原生命令手动部署RedisCluster1、环境准备2、为所有节点启用redis集群支持3、执行meet操作实现互相通信在任意一节点上和其它所有节点进行meet通信,以m1为例4、为每个master节......
  • 使用Docker部署TDengine集群
    TDengine集群部署TDengine是一款高性能、分布式、支持SQL的时序数据库(Database)。1.集群管理TDengine支持集群,提供水平扩展的能力。如果需要获得更高的处理能力,只需要多增加节点即可。TDengine采用虚拟节点技术,将一个节点虚拟化为多个虚拟节点,以实现负载均衡。同时,TD......
  • 在副本集和分片集群上构建 MongoDB 索引
    1.限制留有足够的内存来容纳工作集是非常重要的。不一定所有索引都要放在内存中。在v4.0之前,索引键的限制应小于1024字节。从v4.2版开始,这一限制被取消。索引名也是如此,在使用fcv4.0及以下版本的数据库中,索引名的最大长度为127字节。在dbv4.2和fcv4.2中,这一......
  • kafka消息只能在一台服务器消费的问题解决过程
    场景:kafka消费端应用部署在两台机器上,其中一台能消费到生产端发出的kafka消息,另一台服务器接收不到任何消息。解决过程:一、从消费端启动日志中找出所有消费端线程2024-04-2320:04:44,726[xx_xxapp03-1556011171628-976bc2af_watcher_executor]INFOkafka.consumer.RangeA......
  • 一次 kafka 消费者的性能调优过程
    背景最近上线了一个kafka的消费者,数据规模大概是低峰期单机每分钟消费88W条,QPS14666。上线后看了下数据,进程CPU到了132%。 8核的机器,单进程CPU132倒也还好,但还是想看看,到底是咋回事。过程第一次排查&优化(协程池化->约为0优化)于是就开始采集pprof的数据。golangpprof的采......
  • Kafka 线上性能调优
    Kafka线上性能调优是一项综合工程,不仅仅是Kafka本身,还应该从硬件(存储、网络、CPU)以及操作系统方面来整体考量,首先我们要有一套生产部署方案,基于这套方案再进行调优,这样就有了可靠的底层保证,才能保证Kafka集群整体的稳定性。1.线上部署方案1.1操作系统我们知道Kafka是......
  • 云原生之在kubernetes集群下部署mysql应用
    一、Mysql介绍数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而加快了访问速度并提高了灵活性。MySQL使用了标准的SQL语言形式。支持大型的数据库,可以处理......