实践(一)主要是跟着教程大体上了解了一下kafka的基本内容,并在自己的虚拟机上简单测试了一下,本章内容重要是实践进行分布式部署。
一、部署模式分类
kafka的部署,主要是有三种:(部署原理图,取自网络)
1、单节点部署单broker
此方式是最简单的一种,可以用kafka自带的zookeeper启动后,在单物理节点上,启动kafka的server( broker )。
2、单节点部署多个broker
此方式,也是在单物理节点上启动一个zookeeper,多个kafka的broker, 采用多个broker的目的是为了在单个broker无法负载大量的消息收发要求后,必然采用的扩展方式。
3、多节点部署多个broker
此方式,broker 分别部署到不同的物理节点上,可以进行横向扩展,满足高负载的分担。这种方式的配置和第二种比较类似。
二、本次实践规划
1) 采用单节点多broker方式
2) 在linux虚拟机centos6.5 环境,
3) jdk 1.7
三、部署步骤
1、zookeeper部署
kafka自带了zookeeper,如果使用自带的,需要拷贝三个zookeeper.properties 为 zookeeper1.properties, zookeeper2.properties, zookeeper3.properties。 具体以zookeeper1.properties为例,配置为
dataDir 属性,需要每个properties文件都设定自己的数据目录, 并且 使用echo命令,在myid文件填入每个zookeeper id。以zookeeper1.properties为例: echo 1 >/tmp/zookeeper1/myid。上图中标红色的内容,都是需要配置好,否则会报错。
这种方式启动的时候,要带入具体的配置文件路径作为启动参数。
本次实践,建议以自己独立的zookeeper版本进行伪分布式部署,具体见系列博客中的zookeeper分布式部署。这样的好处是可以充分应用独立zookeeper版本中的带的各种工具脚本,使用起来更顺手。
下图为独立版本中的配置文件内容:
需要保证每个zookeeper的数据目录和日志目录,端口都是不同的。
2、kafka部署
由于要生成三个broker,所以需要有不同的配置,将kafka_2.11-0.10.0.1/config目录下的 server.properties 分别拷贝为server1.properties , server2.properties server3.properties , 以server1.properties为例,修改如下内容
broker id 在每个配置文件里面分别配置为1, 2,3, id需要保证不同。在2.11版的kafka中,port参数已经变化为listeners, 默认是被注释的,确保放开注释,并保障每个broker的端口不同(如果部署在不同物理节点,端口可以一样)。
还需要修改同一文件的下面内容:
这里是配置kafka连接的zookeeper,确保每个broker这里的配置都一样,正确。
3、启动kafka
确保zookeeper已经启动正确情况下,分别启动kafka server,启动脚本为:
bin/kafka-server-start.sh config/server1.properties >/dev/null 2>&1 &
bin/kafka-server-start.sh config/server2.properties >/dev/null 2>&1 &
bin/kafka-server-start.sh config/server3.properties >/dev/null 2>&1 &
这样就完成3个kafka broker的分布式部署和启动。