kafka权威指南(一):安装kafka

一、安装zooleeper(linux,CentOS7)

1.去apache官网下载zookeeper压缩包

地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

切记不管下载什么版本,一定要下载带bin的压缩包,如图:

下载完成后,放到服务器中(目录自己指定),解压该文件

2.进行简单的配置

打开conf目录,如果没有zoo.cfg就新建一个,进行如下配置:(注意配置项6

配置项4中的文件夹目录我们需要手动创建,例如:

mkdir -p /var/lib/zookeeper
#1.tickTime:Client-Server通信心跳时间
#Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,tickTime以毫秒为单位
tickTime=2000

#2.initLimit:Leader-Follower初始通信时限
#集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
#initLimit=5

#3.syncLimit:Leader-Follower同步通信时限
#集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)
#syncLimit=2

#4.dataDir:数据文件目录
#Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/var/lib/zookeeper

#5.clientPort:客户端连接端口
#客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181

#6.admin.serverPort:zookeeper 3.5.0版本以上指定此参数,不指定则默认为8080.
#建议指定,因为亲测8080容易被占用,导致启动失败。
admin.serverPort=12222

#7.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
#这个配置项的书写格式比较特殊,规则如下:
#server.N=YYY:A:B

#7.maxClientCnxns:对于一个客户端的连接数限制,默认是60,这在大部分时候是足够了。
#但实际使用中发现,在测试环境经常超过这个数,
#经过调查发现有的团队将几十个应用全部部署到一台机器上,以方便测试,于是这个数字就超过了。
#maxClientCnxns=

#8.autopurge.snapRetainCount、autopurge.purgeInterval
#客户端与zookeeper交互过程中产生的日志,zookeeper会将内存中的数据作为snapshot保存下来
#这些数据不会自动删除,这样磁盘中这样的数据就会越来越多。
#autopurge.purgeInterval就是设置多少小时清理一次
#autopurge.snapRetainCount是设置保留多少个snapshot,之前的则删除。
#autopurge.purgeInterval=
#autopurge.snapRetainCount=

3.启动zookeeper

到bin目录下执行:

sh zkServer.sh start

4.测试启动是否成功

看到   Starting zookeeper ... STARTED   不一定代表启动成功,可以使用telnet测试。

未安装telnet的解决方案

telnet localhost 2181

telnet连接上,通过 srvr来验证是否安装正确

未连接上,代表启动失败。

5.启动失败错误排查

具体报错原因千变万化,在此不一一列举,建议大家养成启动后查看日志的习惯。

到/logs目录下可以查勘zookeeper从启动开始所有的运行时日志。

6.Zookeeper集群

Zookeeper集群被称为群组(不建议超过七个节点,节点过多会降低整个群组的性能),Zookeeper使用的是一致性协议,所以建议每个群组里应该包含奇数个节点(3,5,7,9)。因为只有大多数节点(法定人数)处于可用状态,Zookeeper才可以处理外部请求

也就是说,如果你有一个包含 3 个节点的群组,那么它允许1个节点失效。如果群组包含 5 个节点,那么它允许 2 个节点失效。

群组需要有一些公共配置,上面列出了所有服务器的清单,并且每个服务器还要在数据目录中创建一个 myid 文件,用于指明自己的 ID。如果群组里服务器的机器名是 zoo1.example.com、zoo2.example.com、zoo3.example.com,那么配置文件可能是这样的,

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=20
syncLimit=5
server.1=zoo1.example.com:2888:3888
server.2=zoo2.example.com:2888:3888
server.3=zoo3.example.com:2888:3888

服务器地址遵循 server.X=hostname:peerPort:leaderPort 格式:

  • X:服务器的 ID,它必须是一个整数,不过不一定要从 0 开始,也不要求是连续的;
  • hostname:服务器的机器名或 IP 地址;
  • peerPort:用于节点间通信的 TCP 端口;
  • leaderPort:用于首领选举的 TCP 端口

除了公共的配置文件外,每个服务器都必须在 data Dir 目录中创建一个叫作 myid 的文件,文件里要包含服务器 ID,这个 ID 要与配置文件里配置的 ID 保持一致。完成这些步骤后,就可以启动服务器,让它们彼此间进行通信了。

二、安装kafka

1.下载kafka安装包(解压即可)

官网:

百度云(简):https://www.jianshu.com/p/0da47d19ad3a

2.验证安装是否正确

创建并验证主题:

/bin/kafka-topics.sh --create --zookeeper localhost:2181

往测试主题上发布消息:

/bin/kafka-console-producer.sh --broker-list

从测试主题上读取消息:

/bin/kafka-console-consumer.sh --zookeeper

三、broker配置

1.常规配置

  • broker.id:每个 broker 需要有一个标识符,使用 broker.id 表示,默认是0,可设置任意整数。这个值在整个集群中必须是唯一的。建议设置为与机器名具有相关性的整数。
  • port:默认情况下监听9092端口。(使用1024以下的端口,需要使用root权限启动kafka,不推荐
  • zookeeper.connect:用于保存broker元数据的Zookeeper地址。localhost:2181 表示这个 Zookeeper 是运行在本地的 2181 端口上。该配置参数是用冒号分隔的一组 hostname:port/path 列表,每一部分的含义如下
    • hostname 是 Zookeeper 服务器的机器名或 IP 地址
    • port 是 Zookeeper 的客户端连接端口
    • /path 是可选的(不存在自动创建) Zookeeper 路径,作为 Kafka 集群的 chroot 环境。如果不指定,默认使用根路径
  • log.dirs(一组用逗号分隔的本地文件系统路径):kafka把消息保存在磁盘存放日志片段的目录
    • 如果指定了多个路径,那么 broker 会根据“最少使用”原则,把同一个分区的日志片段保存到同一个路径下。要注意broker 会往拥有最少数目分区的路径新增分区,而不是往拥有最小磁盘空间的路径新增分区
  • num.recovery.threads.per.data.dir:对于如下 3 种情况,Kafka 会使用可配置的线程池来处理日志片段:
    •  服务器正常启动,用于打开每个分区的日志片段;
    •  服务器崩溃后重启,用于检查和截短每个分区的日志片段;
    •  服务器正常关闭,用于关闭日志片段。
  • auto.create.topics.enable:默认情况下,Kafka 会在如下几种情形下自动创建主题
    • 当一个生产者开始往主题写入消息时
    • 当一个消费者开始从主题读取消息时
    • 当任意一个客户端向主题发送元数据请求时
    • 显式地创建主题把 auto.create.topics.enable 设为 false

2.默认配置

  • num.partitions(默认为1):指定新创建的主题包含几个分区,默认启用。
  •  log.retention.ms(默认168 小时,也就是一周):根据此时间决定数据保存多久
  • log.retention.bytes():通过最多可以保留的消息字节数来判断消息是否过期
  • log.segment.bytes(默认是 1GB):当日志片段大小达到 log.segment.bytes 指定的上限时,当前日志片段就会被关闭,一个新的日志片段被打开。
  • message.max.bytes(默认是 1M):限制单个消息的大小,这个值对性能有显著的影响

3.硬件选择

  • 磁盘吞吐量
  • 容量
  • 内存
  • 网络
  • CPU

4.Kafka集群

  • 最大的好处是可以跨服务器进行负载均衡。
  • 再则就是可以使用复制功能来避免因单点故障造成的数据丢失。
  • 在维护 Kafka 或底层系统时,使用集群可以确保为客户端提供高可用性。

需要多少个broker

  1. 需要多少磁盘空间来保留数据,以及单个 broker 有多少空间可用 例如:10/2
  2. 考虑集群处理请求的能力

broker配置

  1. 所有broker都必须配置相同的zookeeper.connect
  2. 每个broker都必须设置唯一的broker.id

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值