参考:  kafka中文文档

     快速搭建kafka+zookeeper高可用集群

     kafka+zookeeper集群搭建

   kafka+zookeeper集群部署

   kafka集群部署

     kafka体系架构讲解

   kafka工作原理

一. 环境准备

关闭selinux,关闭防火墙

kafka 版本:  kafka_2.11-2.1.0

zookpeeper版本: 3.4.12

jdk: 1.8

ip 角色 系统
172.10.10.226 zookeeper+kafka redhat7.3
172.10.10.225 zookeeper+kafka redhat7.3
172.10.10.224 zookeeper+kafka redhat7.3

二. zookeeper集群搭建

参考: https://www.cnblogs.com/linuxprobe/p/5851699.html

http://www.cnblogs.com/ahu-lichang/p/6723826.html

2.1 jdk 安装

也可自己下载安装,这里用的yum

JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

rpm -ivh jdk-8u101-linux-x64.rpm
yum install java-1.8.

2.2 zookeeper安装

Zookeeper链接:http://zookeeper.apache.org/

wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz -P /mnt
tar zxvf zookeeper-3.4.12.tar.gz -C /mnt
cd /mnt && mv zookeeper-3.4.12 zookeeper
cd zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg

#把zookeeper加入到环境变量

echo -e "# append zk_env\nexport PATH=$PATH:/opt/zookeeper/bin" >> /etc/profile

2.3  zookeeper集群配置

2.3.1 zookeeper配置文件修改.在zookeeper的conf目录创建

tickTime=
initLimit=
syncLimit=
dataLogDir=/mnt/zookeeper/logs
dataDir=/mnt/zookeeper/data
clientPort=
#autopurge.snapRetainCount=
#autopurge.purgeInterval=
server.= 172.10.10.226:: #server. 中的1表示的该node的id,要和后面myid文件中保持一致
server.= 172.10.10.225::
server.= 172.10.10.224::3888 #######参数说明

tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。


initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。


当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。


syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。


dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;


clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;


server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。

 

#创建相关目录,三台节点都需要

mkdir -p /mnt/zookeeper/{logs,data}

#其余zookeeper节点安装完成之后,同步配置文件zoo.cfg。

2.3.2  创建serverid表识

除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下。

这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。

#在172.10.10.226服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.1保持一致,如下

echo "1" > /mnt/zookeeper/data/myid

其它2台id分别为  2  ,3

2.4. 启动每个服务器上的集群节点

/mnt/zookeeper/bin/zkServer.sh start    #启动

/mnt/zookeeper/bin/zkServer.sh status  #查看

bin/zkCli.sh -server 172.10.10.225:2181  #模拟客户端连接

Zookeeper集群搭建完毕之后,可以通过客户端脚本连接到zookeeper集群上面,对客户端来说,zookeeper集群是一个整体,连接到zookeeper集群实际上感觉在独享整个集群的服务。    

三. kafka集群搭建

1. 每台服务器上下载解压kafka.

下载地址:  http://kafka.apache.org/downloads

2. 配置conf目录下的server.properties

[root@r0 kafka_2.-2.1.]# grep -E  -v "^#|^$" config/server.properties
broker.id=0 ###集群中唯一
listeners=PLAINTEXT://172.10.10.226:9092 ####本地ip:端口
num.network.threads=
num.io.threads=
socket.send.buffer.bytes=
socket.receive.buffer.bytes=
socket.request.max.bytes=
log.dirs=/tmp/kafka-logs
num.partitions=3 #### 一个topic的partition个数
num.recovery.threads.per.data.dir=
offsets.topic.replication.factor=
transaction.state.log.replication.factor=
transaction.state.log.min.isr=
replication.factor=2 ##### 每个partition的副本
log.retention.hours=
log.segment.bytes=
log.retention.check.interval.ms=
zookeeper.connect=172.10.10.226:,172.10.10.225:,172.10.10.224:2181 ####zookeeper集群.
zookeeper.connection.timeout.ms=
group.initial.rebalance.delay.ms=0
delete.topic.enable=true ########可删除topic
 

将上述配置文件复制到另外2台服务器,并修改每个节点对应的 server.properties 文件的 broker.id和listenrs

3. 启动服务

bin/kafka-server-start.sh config/server.properties &

4. kafka+zookeeper测试

创建topic

bin/kafka-topics.sh --create --zookeeper 172.10.10.226:,172.10.10.225:,172.10.10.224: --replication-factor   --partitions  --topic test

显示topic

bin/kafka-topics.sh --describe --zookeeper 172.10.10.226:,172.10.10.225:,172.10.10.224: --topic test
OpenJDK -Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Topic:test PartitionCount: ReplicationFactor: Configs:
Topic: test Partition: Leader: Replicas: , Isr: ,
Topic: test Partition: Leader: Replicas: , Isr: ,
Topic: test Partition: Leader: Replicas: , Isr: ,

创建 producer(生产者):

[root@r0 kafka_2.-2.1.]# bin/kafka-console-producer.sh --broker-list 172.10.10.226: -topic test
OpenJDK -Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
> >>
>
>

创建 consumer(消费者):

[root@r2 kafka_2.-2.1.]# bin/kafka-console-consumer.sh --bootstrap-server 172.10.10.226:,172.10.10.225:,172.10.10.224: --topic test --from-beginning
OpenJDK -Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
message
message #问题,发现为啥顺序不对,生产者的输入顺序和消费者的读取顺序不一致.

5. 关闭集群

# 删除topic
bin/kafka-topics.sh --delete --zookeeper 172.10.10.226:,172.10.10.225:,172.10.10.224: --topic test # 关闭kafka ,3台都执行
[root@worker2 kafka_2.-1.1.]$ bin/kafka-server-stop.sh conf/server.properties [root@worker2 kafka_2.-1.1.]$ bin/kafka-server-stop.sh conf/server.properties [root@worker2 kafka_2.-1.1.]$ bin/kafka-server-stop.sh conf/server.properties # 关闭zookeeper ,3台都执行
[root@master zookeeper-3.4.]$ bin/zkServer.sh stop conf/zoo.cfg [root@worker1 zookeeper-3.4.]$ bin/zkServer.shstop conf/zoo.cfg [root@worker2 zookeeper-3.4.]$ bin/zkServer.shstop conf/zoo.cfg
 

kafka+zookeeper集群的更多相关文章

  1. Kafka+Zookeeper集群搭建

    上次介绍了ES集群搭建的方法,希望能帮助大家,这儿我再接着介绍kafka集群,接着上次搭建的效果. 首先我们来简单了解下什么是kafka和zookeeper? Apache kafka 是一个分布式的 ...

  2. 消息中间件kafka+zookeeper集群部署、测试与应用

    业务系统中,通常会遇到这些场景:A系统向B系统主动推送一个处理请求:A系统向B系统发送一个业务处理请求,因为某些原因(断电.宕机..),B业务系统挂机了,A系统发起的请求处理失败:前端应用并发量过大, ...

  3. Kafka/Zookeeper集群的实现(二)

    [root@kafkazk1 ~]# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12. ...

  4. 安装kafka + zookeeper集群

    系统:centos 7.4 要求:jdk :1.8.x kafka_2.11-1.1.0 1.绑定/etc/hosts 10.10.10.xxx      online-ops-xxx-0110.10 ...

  5. KAFKA && zookeeper 集群安装

    服务器:#vim /etc/hosts10.16.166.90 sh-xxx-xxx-xxx-online-0110.16.168.220 sh-xx-xxx-xxx-online-0210.16.1 ...

  6. docker-搭建 kafka+zookeeper集群

    拉取容器           docker pull wurstmeister/zookeeper           docker pull wurstmeister/kafka     这里演示使 ...

  7. 【转】kafka&zookeeper集群搭建指南

    [转自]:http://www.cnblogs.com/luotianshuai/p/5206662.html 待续...

  8. ELK+zookeeper+kafka+rsyslog集群搭建

    前言 环境困境: 1.开发人员无法登陆服务器 2.各系统都有日志,日志数据分散难以查找 3.日志数据量大,查询忙,不能实时 环境要求: 1.日志需要标准化   集群流程图:   角色:   软件: 以 ...

  9. 【拆分版】Docker-compose构建Zookeeper集群管理Kafka集群

    写在前边 在搭建Logstash多节点之前,想到就算先搭好Logstash启动会因为日志无法连接到Kafka Brokers而无限重试,所以这里先构建下Zookeeper集群管理的Kafka集群. 众 ...

随机推荐

  1. Java IO系列之一:IO

    1. 概述 Java IO一般包含两个部分: 1.java.io包中堵塞型IO: 2.java.nio包中的非堵塞型IO,通常称为New IO. java.io包下,分为四大块近80个类: 1.基于字 ...

  2. python--再看并行之协程线程进程

    1.gevent协程适合I/O密集,不适合CPU密集. 3.gevent协程无法发挥多核优势,事实上,协程只是以单线程的方式在运行. 3.子程序就是协程的一种特例 项目实际应用 from gevent ...

  3. 微信退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道“或”The request was aborted: Could not create SSL/TLS secure channel“的错误

    如题,英文中文表述的是一个意思 退款测试在我本机测试一切都是正常的,但是发布到了服务器就报这样的一个错啦 但是无论百度或者google或者bing,你能够搜索到的结果都很类似,综合起来就是加这样一些代 ...

  4. Studio 5000 指针(间接寻址)编程

    ​前言:自动化控制系统是综合性.复杂性的,处于现场层的PLC控制器虽然进行各种控制,但最终还是对数据进行处理,对数据的处理,包含两种方式,一种是直接使用,第二种就是间接使用.针对第二种处理方式,就要用 ...

  5. Selenium中三种等待的使用方式---规避网络延迟、代码不稳定问题

    在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待, ...

  6. centos7安装mongodb3.4

    先下载安装包,OS选择RHEL 7.0 Linux 64-bit x64,package选择Server. 这里OS选6.2应该也行,没试过,如果linux版本是6.*的话注意选这个,如果选择7.0安 ...

  7. String构造函数

    只简单写了几个函数 class String { public: String(const char* pStr = NULL); String(const String& str); vir ...

  8. C++ 常见面试题目

    const作用 (1)可以定义const常量,具有不可变性. (2)便于进行类型检查.(而宏不会进行类型检查). (3)可以保护被修饰的东西,防止意外的修改. (4) 可以节省空间. static作用 ...

  9. spring.http.multipart.maxFileSize提示无效报错问题处理

    在SpringBoot项目中,配置spring.http.multipart.maxFileSize用于限定最大文件上传大小. 但是,SpringBoot版本不同,关于这一块的配置也不相同. 1.Sp ...

  10. Fiddler之iOS手机抓包实战操作

    准备工作: 1.Fiddler是否安装 2.笔记本的360免费WiFi即可 步骤: 1.官网下载Fiddler并安装 2.打开Fiddler,点击上方Tools,进入Options,选择HTTPS,按 ...