环境

  • CentOS 7.4
  • Zookeeper-3.6.1
  • Kafka_2.13-2.4.1
  • Kafka-manager-2.0.0.2

本次安装的软件全部在 /home/javateam 目录下。

Zookeeper 集群搭建

  1. 添加三台机器的 hosts,使用 vim /etc/hosts 命令添加以下内容:
  1. 192.168.30.78 node-78
  2. 192.168.30.79 node-79
  3. 192.168.30.80 node-80
  1. 首先解压缩:
  1. tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz

修改文件夹名称:

  1. mv apache-zookeeper-3.6.1-bin.tar.gz zookeeper
  1. /etc/profile 配置文件添加以下内容,并执行source /etc/profile命令使配置生效:
  1. export ZOOKEEPER_HOME=/home/javateam/zookeeper
  2. export PATH=$PATH:$ZOOKEEPER_HOME/bin
  1. 在上面配置文件中 dataDir 的目录下创建一个 myid 文件,并写入一个数值,比如0。myid 文件里存放的是服务器的编号。
  2. 修改zookeeper配置文件。首先进入 $ZOOKEEPER_HOME/conf 目录,复制一份 zoo_sample.cfg 并将名称修改为 zoo.cfg:
  1. # zookeeper服务器心跳时间,单位为ms
  2. tickTime=2000
  3. # 投票选举新leader的初始化时间
  4. initLimit=10
  5. # leader与follower心跳检测最大容忍时间,响应超过 syncLimit * tickTime,leader认为follower死掉,从服务器列表删除follower
  6. syncLimit=5
  7. # 数据目录
  8. dataDir=/home/javateam/zookeeper/data/
  9. # 日志目录
  10. dataLogDir=/home/javateam/zookeeper/logs/
  11. # 对外服务的端口
  12. clientPort=2181
  13. # 集群ip配置
  14. server.78=node-78:2888:3888
  15. server.79=node-79:2888:3888
  16. server.80=node-80:2888:3888

注意: 上面配置文件中的数据目录和日志目录需自行去创建对应的文件夹。这里server后的数字,与myid文件中的id是一致的。

  1. zookeeper启动会占用三个端口,分别的作用是:
  1. 2181:对cline端提供服务
  2. 3888:选举leader使用
  3. 2888:集群内机器通讯使用(Leader监听此端口)

记得使用以下命令开启防火墙端口,并重启防火墙:

  1. firewall-cmd --zone=public --add-port=2181/tcp --permanent
  2. firewall-cmd --zone=public --add-port=3888/tcp --permanent
  3. firewall-cmd --zone=public --add-port=2888/tcp --permanent
  4. firewall-cmd --reload
  1. 然后用 zkServer.sh start 分别启动三台机器上的zookeeper,启动后用 zkServer.sh status 查看状态,如下图所以有一个leader两个follower即代表成功:

Kafka 集群搭建

  1. 首先解压缩:
  1. tar -zxvf kafka_2.13-2.4.1.tgz
  1. 改文件夹名称:
  1. mv kafka_2.13-2.4.1.tgz kafka
  1. /etc/profile 配置文件添加以下内容,并执行source /etc/profile命令使配置生效:
  1. export KAFKA_HOME=/home/javateam/kafka
  2. export PATH=$PATH:$KAFKA_HOME/bin
  1. JVM级别参数调优,修改 kafka/bin/kafka-server-start.sh,添加以下内容:
  1. # 调整堆大小,默认1G太小了
  2. export KAFKA_HEAP_OPTS="-Xmx6G -Xms6G"
  3. # 选用G1垃圾收集器
  4. export KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true"
  5. # 指定JMX暴露端口
  6. export JMX_PORT="8999"

添加后,文件内容如下图所示:

  1. 操作系统级别参数调优,增加文件描述符的限制,使用 vim /etc/security/limits.conf 添加以下内容:
  1. * soft nofile 100000
  2. * hard nofile 100000
  3. * soft nproc 65535
  4. * hard nproc 65535
  1. 修改kafka的配置文件 $KAFKA_HOME/conf/server.properties,如下:
  1. ############################# Server Basics #############################
  2. # 每一个broker在集群中的唯一标示,要求是正数。在改变IP地址,不改变broker.id的话不会影响consumers
  3. broker.id=78
  4. ############################# Socket Server Settings #############################
  5. # 提供给客户端响应的地址和端口
  6. listeners=PLAINTEXT://node-78:9092
  7. # broker 处理消息的最大线程数
  8. num.network.threads=3
  9. # broker处理磁盘IO的线程数 ,数值应该大于你的硬盘数
  10. num.io.threads=8
  11. # socket的发送缓冲区大小
  12. socket.send.buffer.bytes=102400
  13. # socket的接收缓冲区,socket的调优参数SO_SNDBUFF
  14. socket.receive.buffer.bytes=102400
  15. # socket请求的最大数值,防止serverOOM,message.max.bytes必然要小于socket.request.max.bytes,会被topic创建时的指定参数覆盖
  16. socket.request.max.bytes=104857600
  17. ############################# Log Basics #############################
  18. # kafka数据的存放地址,多个地址的话用逗号分割
  19. log.dirs=/home/javateam/kafka/logs
  20. # 每个topic的分区个数,若是在topic创建时候没有指定的话会被topic创建时的指定参数覆盖
  21. num.partitions=3
  22. # 每个分区的副本数
  23. replication.factor=2
  24. # 我们知道segment文件默认会被保留7天的时间,超时的话就会被清理,那么清理这件事情就需要有一些线程来做。这里就是用来设置恢复和清理data下数据的线程数量
  25. num.recovery.threads.per.data.dir=1
  26. ############################# Internal Topic Settings #############################
  27. # The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state"
  28. # For anything other than development testing, a value greater than 1 is recommended to ensure availability such as 3.
  29. offsets.topic.replication.factor=1
  30. transaction.state.log.replication.factor=1
  31. transaction.state.log.min.isr=1
  32. ############################# Log Flush Policy #############################
  33. # Messages are immediately written to the filesystem but by default we only fsync() to sync
  34. # the OS cache lazily. The following configurations control the flush of data to disk.
  35. # There are a few important trade-offs here:
  36. # 1. Durability: Unflushed data may be lost if you are not using replication.
  37. # 2. Latency: Very large flush intervals may lead to latency spikes when the flush does occur as there will be a lot of data to flush.
  38. # 3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to excessive seeks.
  39. # The settings below allow one to configure the flush policy to flush data after a period of time or
  40. # every N messages (or both). This can be done globally and overridden on a per-topic basis.
  41. # The number of messages to accept before forcing a flush of data to disk
  42. #log.flush.interval.messages=10000
  43. # The maximum amount of time a message can sit in a log before we force a flush
  44. #log.flush.interval.ms=1000
  45. ############################# Log Retention Policy #############################
  46. # 控制一条消息数据被保存多长时间,默认是7天
  47. log.retention.hours=168
  48. # 指定Broker为消息保存的总磁盘容量大小,-1代表不限制
  49. log.retention.bytes=-1
  50. # Broker能处理的最大消息大小,默认976KB(1000012),此处改为100MB
  51. message.max.bytes=104857600
  52. # 日志文件中每个segment的大小,默认为1G
  53. log.segment.bytes=1073741824
  54. #上面的参数设置了每一个segment文件的大小是1G,那么就需要有一个东西去定期检查segment文件有没有达到1G,多长时间去检查一次,就需要设置一个周期性检查文件大小的时间(单位是毫秒)。
  55. log.retention.check.interval.ms=300000
  56. ############################# Zookeeper #############################
  57. # 消费者集群通过连接Zookeeper来找到broker。zookeeper连接服务器地址
  58. zookeeper.connect=node-78:2181,node-79:2181,node-80:2181
  59. # Timeout in ms for connecting to zookeeper
  60. zookeeper.connection.timeout.ms=6000
  61. ############################# Group Coordinator Settings #############################
  62. # The following configuration specifies the time, in milliseconds, that the GroupCoordinator will delay the initial consumer rebalance.
  63. # The rebalance will be further delayed by the value of group.initial.rebalance.delay.ms as new members join the group, up to a maximum of max.poll.interval.ms.
  64. # The default value for this is 3 seconds.
  65. # We override this to 0 here as it makes for a better out-of-the-box experience for development and testing.
  66. # However, in production environments the default value of 3 seconds is more suitable as this will help to avoid unnecessary, and potentially expensive, rebalances during application startup.
  67. group.initial.rebalance.delay.ms=0
  68. ############################# Broker Settings #############################
  69. # 不让落后太多的副本竞选Leader
  70. unclean.leader.election.enable=false
  71. # 关闭kafka定期对一些topic分区进行Leader重选举
  72. auto.leader.rebalance.enable=false
  1. 编写kafka启动脚本,vim startup.sh 内容如下所示:
  1. # 进程守护模式启动kafka
  2. kafka-server-start.sh -daemon /home/javateam/kafka/config/server.properties
  1. 编写kafka停止脚本,vim shutdown.sh 内容如下所示:
  1. # 停止kafka服务
  2. kafka-server-stop.sh
  1. 用如下命令,分别启动kafka服务:
  1. sh /home/javateam/kafka/startup.sh

注意:后面的路径换成你自己脚本所在的路径。

  1. 启动成功后,连接zookeeper查看节点 ids 信息:
  1. zkCli.sh -server 127.0.0.1:2181
  2. ls /brokers/ids

如下图所示,代表集群搭建成功:

Kafka-manager 搭建

  1. 首先解压缩:
  1. unzip kafka-manager-2.0.0.2.zip
  1. 改文件夹名称
  1. mv kafka-manager-2.0.0.2.zip kafka-manager
  1. 修改配置文件 kafka-manager/conf/application.conf,把里面的 kafka-manager.zkhosts 换成你自己的zookeeper 集群地址就好了,例如:kafka-manager.zkhosts="node-78:2181,node-79:2181,node-80:2181"
  2. 编写 kafka-manager 启动脚本,vim startup.sh 内容如下:
  1. nohup /home/javateam/kafka-manager/bin/kafka-manager -Dhttp.port=9000 > /home/javateam/kafka-manager/nohup.out 2>&1 &
  1. 使用 sh /home/javateam/kafka-manager/startup.sh 启动 kafka-manager,然后访问9000端口,如下图所示代表成功:

不知道怎么使用的话就去 google,这里不再赘述。

CentOS 7搭建Zookeeper和Kafka集群的更多相关文章

  1. 搭建zookeeper和Kafka集群

    搭建zookeeper和Kafka集群: 本实验拥有3个节点,均为CentOS 7系统,分别对应IP为10.211.55.11.10.211.55.13.10.211.55.14,且均有相同用户名 ( ...

  2. Docker快速搭建Zookeeper和kafka集群

    使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...

  3. 使用Docker快速搭建Zookeeper和kafka集群

    使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...

  4. zookeeper及kafka集群搭建

    zookeeper及kafka集群搭建 1.有关zookeeper的介绍可参考:http://www.cnblogs.com/wuxl360/p/5817471.html 2.zookeeper安装 ...

  5. Kafka1 利用虚拟机搭建自己的Kafka集群

    前言:       上周末自己学习了一下Kafka,参考网上的文章,学习过程中还是比较顺利的,遇到的一些问题最终也都解决了,现在将学习的过程记录与此,供以后自己查阅,如果能帮助到其他人,自然是更好的. ...

  6. CentOS中搭建Redis伪分布式集群【转】

    解压redis 先到官网https://redis.io/下载redis安装包,然后在CentOS操作系统中解压该安装包: tar -zxvf redis-3.2.9.tar.gz 编译redis c ...

  7. Zookeeper、Kafka集群与Filebeat+Kafka+ELK架构

    Zookeeper.Kafka集群与Filebeat+Kafka+ELK架构 目录 Zookeeper.Kafka集群与Filebeat+Kafka+ELK架构 一.Zookeeper 1. Zook ...

  8. CentOS 7 Zookeeper 和 Kafka 集群搭建

    环境 CentOS 7.4 Zookeeper-3.6.1 Kafka_2.13-2.4.1 Kafka-manager-2.0.0.2 本次安装的软件全部在 /home/javateam 目录下. ...

  9. zookeeper与Kafka集群搭建及python代码测试

    Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户 ...

随机推荐

  1. Java多台中成员访问特点

    多态中的成员访问特点: A:成员变量 编译看左边,运行看左边 B:构造方法 创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化 C:成员方法 编译看左边,运行看右边.//因为调用对象时,子 ...

  2. tensorflow1.0 构建lstm做图片分类

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #this is data mni ...

  3. Docker 搭建 ELK 集群步骤

    前言 本篇文章主要介绍在两台机器上使用 Docker 搭建 ELK. 正文 环境 CentOS 7.7 系统 Docker version 19.03.8 docker-compose version ...

  4. 在 ubuntu20 上替换原有的源,解决下载软件慢的问题

    处理方式 使用命令查看到所有的下载源 sudo gedit /etc/apt/sources.list 使用163的源替换掉原始的源 163:http://mirrors.163.com/ubuntu ...

  5. 深拷贝、浅拷贝与Cloneable接口

    深拷贝与浅拷贝 浅拷贝 public class Student implements Cloneable{ Integer a; Integer b; @Override protected Obj ...

  6. 【java基础】01 计算机基础知识

    一.计算机基础知识 1. 计算机 1. 什么是计算机? 计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设 ...

  7. 《Microduino实战》——2.3 Microduino STM32核心系列

    本节书摘来自华章出版社<Microduino实战>一 书中的第2章,第2.3节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.3 Mi ...

  8. HDU1873 看病要排队【模拟+优先队列】

    看病要排队 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  9. puppet报告系统Dashboard部署及配置详解

    Puppet Dasshboard是由支持Puppet开发的公司Puppetlabs创建的,是Ruby on Rails程序.可以作为一个ENC(外部节点分类器)以及一个报告工具,并且正在逐渐成为一个 ...

  10. HDU Problem D [ Humble number ]——基础DP丑数序列

    Problem D Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submi ...