ITPub博客

首页 > 云计算 > 开源云工具 > 滴滴云部署 ZooKeeper + Kafka

滴滴云部署 ZooKeeper + Kafka

原创 开源云工具 作者:java06051515 时间:2018-12-04 14:54:55 0 删除 编辑

Kafka 是一种分布式的流处理平台,流处理平台有以下三个特点:
1. 发布和订阅流记录,类似于消息队列和企业消息系统。
2. 流记录的存储具有容错性。
3. 实时处理流记录。

Kafka 广泛应用于以下两方面:
1. 为系统和应用之间的数据可靠传输建立实时的流式数据通道。
2. 为传输或响应数据流建立实时的流式应用。

Kafka 以集群的方式运行在一台或跨机房的多台服务器上,储存在 Kafka 集群上的流记录用不同的 topic 进行分类,每一条记录包含一个 key(键),一个 value(值)和一个 timestamp(时间戳)。

ZooKeeper 是一个针对大型分布式系统的可靠的协调系统,提供的功能包括命名服务、配置维护、分布式同步、组服务等。ZooKeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题。

本文中 Kafka 正是利用了 ZooKeeper 的协调作用,管理、协调 Kafka 实例(broker)。每个 Kafka 实例都通过 ZooKeeper 协调其它 Kafka 实例。

当 Kafka 系统中新增了实例或者某个代理故障失效时,ZooKeeper 服务将通知消息记录的生产者和消费者。生产者和消费者据此开始与其它实例协调工作。

本例集群架构如下:

此处我们使用的是 滴滴云 主机内网 IP,在本文的 Java 示例需要外部访问 Kafka,需要绑定公网 IP 即 EIP。有关 滴滴云  EIP 的使用请参考以下链:

部署 ZooKeeper

以下操作在三台节点进行。
登录 滴滴云 虚拟主机 DC2, 滴滴云 DC2 默认登陆用户 dc2-user,本文部署过程将使用 root,输入 sudo su 命令切换到 root用户,进入 /usr/local 文件夹下载 ZooKeeper 和 JDK。

解压 JDK 并配置 Java 环境变量:

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

在 /etc/profile 文件末尾添加以下内容:

使环境变量生效:

  source   / etc / profile

输入 java -version,如果看到以下输出说明 Java 环境变量配置成功:

安装配置 ZooKeeper:

创建配置文件中的 dataDir 目录和 myid 文件:

将三台节点的主机名与 IP 映射添加到 /etc/hosts 文件中:

分别在三台节点启动 ZooKeeper:

  / usr / local / zookeeper - 3.4.12 / bin / zkServer . sh  start

查看 ZooKeeper 是否启动成功:

在三台节点分别查看 ZooKeeper 角色,一个 leader 两个 follower:

关于 ZooKeeper 的选举机制可以参考以下链接:doc/current/recipes.html#sc_leaderElection

至此 ZooKeeper 启动成功。

部署 Kafka

本例使用两个节点部署 Kafka,在 zk101 和 zk102 解压 Kafka:

编辑 server.properties:

zk102 的配置文件更改相应 IP 即可。

在 zk101 和 zk102 上启动 Kafka:

测试 Kafka

以 zk101 作为 producer,创建 topic:

  / usr / local / kafka_2 . 12 - 0.10.2.1 / bin / kafka - topics . sh   -- create   -- zookeeper  zk101 : 2181   -- replication - factor   2   -- partitions   1   -- topic  test

  Created  topic   "test" .

同样在 zk101 上创建一个生产者:

  / usr / local / kafka_2 . 12 - 0.10.2.1 / bin / kafka - console - producer . sh   -- broker - list  zk101 : 9092   -- topic  test

在 zk102 上创建一个消费者:

  / usr / local / kafka_2 . 12 - 0.10.2.1 / bin / kafka - console - consumer . sh   -- zookeeper  zk102 : 2181   -- topic  test   -- from - beginning 

在 zk101 上输入内容,可以在 zk102 上看到:

Kafka 测试代码(Java)

下面的 Java 测试代码中会用到 zk101 节点的 EIP 和对应的 9092 端口,因此要在安全组中打开 9092 端口,有关安全组的使用请参照以下链接:

创建 mave 项目,编辑 pom.xml,解决依赖:

生产者代码 ProducerTest.java:

消费者代码 Consumer.java:

先运行 Consumer:

运行 ProducerTest,发送消息:

在 Consumer 上可以收到消息:

参考链接:
https://www.cnblogs.com/skying555/p/7873345.html


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559758/viewspace-2222545/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-10-26

  • 博文量
    167
  • 访问量
    150880