码迷,mamicode.com
首页 > 其他好文 > 详细

完全分布式ZooKeeper集群和Kafka集群的搭建和使用

时间:2015-12-27 13:26:51      阅读:426      评论:0      收藏:0      [点我收藏+]

标签:

自己使用的版本为zookeeper-3.4.7.tar.gz和kafka_2.10-0.9.0.0.tgz。首先要安装JDK(jdk-7u9-linux-i586.tar.gz)和SSH,IP地址的分配为Kafka1(192.168.56.136),Kafka2(192.168.56.137),Kafka3(192.168.56.138)。下面主要介绍SSH的安装,ZooKeeper和Kafka集群的搭建和使用。

一. SSH的安装

(1)apt-get install ssh

(2)/etc/init.d/ssh start

(3)ssh-keygen –t rsa –P “”(敲三次回车即可)

说明:在/root/.ssh生成2个文件:id_rsa和id_rsa.pub。前者为私钥,后者为公钥。

(4)cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

说明:我们将公钥id_rsa.pub追加到authorized_keys中,因为authorized_keys用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容。

(5)设置Kafka1可以免密码登录Kafka2和Kafka3,如下所示:
       scp root@Kafka2:~/.ssh/id_rsa.pub  ~/.ssh/Kafka2_rsa.pub
       scp root@Kafka3:~/.ssh/id_rsa.pub  ~/.ssh/Kafka3_rsa.pub
       cat Kafka2_rsa.pub >> authorized_keys
       cat Kafka3_rsa.pub >> authorized_keys

说明:我们从Kafka1通过命令远程访问ssh Kafka2和ssh Kafka3就可以成功了。

 

二. ZooKeeper集群的搭建 

1. 将zookeeper复制到/usr/local/zookeeper目录,并且解压

root@Kafka1:~# mkdir /usr/local/zookeeper

root@Kafka1:~# cp ~/Downloads/zookeeper-3.4.7.tar.gz /usr/local/zookeeper/

root@Kafka1:/usr/local/zookeeper# tar -zxvf zookeeper-3.4.7.tar.gz

2. zookeeper环境变量配置
export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.7

export PATH=$ZOOKEEPER_HOME/bin:$PATH

说明:各个节点都需要配置。

3. 集群相关文件配置

(1)vim /conf/zoo.cfg

dataDir=/usr/local/zookeeper/zookeeper-3.4.7/data
clientPort=2181
initLimit=10
syncLimit=5
tickTime=2000
Kafka1=192.168.56.136:2888:3888  
Kafka2=192.168.56.137:2888:3888  
Kafka3=192.168.56.138:2888:3888 

(2)vim /usr/local/zookeeper/zookeeper-3.4.7/data/myid 在Kafka1上,“myid”内容是1,在Kafka2上,内容是2,在Kafka3上,内容是3。

(3)通过scp将Kafka1上的ZooKeeper配置拷贝到Kafka2和Kafka3上

(4)开启和停止,查看状态(所有节点)

./zkServer.sh start/stop/status

说明:在状态中mode显示了所在server在集群中扮演的角色,每个server的角色不是固定的,leader是通过zookeeper的Fast Leader选举算法产生的。至此,ZooKeeper集群搭建完毕,根据实际业务需要,修改相应的配置文件。

 

三. Kafka集群的搭建

技术分享

说明:

消息的发布(publish)称作producer,消息的订阅(subscribe)称作consumer,中间的存储阵列称作broker。

1. 将kafka复制到/usr/local/kafka目录,并且解压

root@Kafka1:~# mkdir /usr/local/kafka

root@Kafka1:~# cp ~/Downloads/kafka_2.10-0.9.0.0.tgz /usr/local/kafka/

root@Kafka1:/usr/local/kafka# tar -zxvf kafka_2.10-0.9.0.0.tgz

2. kafka环境变量配置

export KAFKA_HOME=/usr/local/kafka/kafka_2.10-0.9.0.0

export PATH=$KAFKA_HOME/bin:$PATH

说明:各个节点都需要配置。

3. 集群相关文件配置

(1)vim config/server.properties

需要配置的属性有broker.id,host.name,zookeeper.connect,log.dirs。相关配置如下所示:

broker.id=1 
port=9092 host
.name=Kafka1 log.dirs=${KAFKA_HOME}/kafka-logs zookeeper.connect=192.168.56.136:2181,192.168.56.137:2181,192.168.56.138:2181

(2)vim zookeeper.properties

dataDir=/usr/local/zookeeper/zookeeper-3.4.7/data

(3)vim producer.properties

metadata.broker.list=192.168.56.136:9092,192.168.56.137:9092,192.168.56.138:9092

(4)vim consumer.properties

zookeeper.connect=192.168.56.136:2181,192.168.56.137:2181,192.168.56.138:2181

(5)通过scp将Kafka1上的Kafka配置拷贝到Kafka2和Kafka3上

broker.id从1开始递增,每台server必须唯一。并且修改相应的broker.id和host.name属性。

(6)首先启动ZooKeeper集群,然后再启动Kakfa集群

解析:

./zkServer.sh start/stop/status(各个节点)

nohup ./kafka-server-start.sh ./../config/server.properties &(各个节点)

说明:关闭Kakfa集群的命令为./kafka-server-stop.sh。(各个节点) 

集群启动成功后,首先创建topic,在一台server上创建producer,另外一台server上创建consumer,从producer上发送信息,看consumer是否能接收到,以验证集群是否成功。

创建topic:sudo ./kafka-topics.sh --zookeeper Kafka1:2181,Kafka2:2181,Kafka3:2181 --topic test --replication-factor 2 --partitions 5 --create 
查看topic:sudo ./kafka-topics.sh --zookeeper Kafka1:2181,Kafka2:2181,Kafka3:2181 --list 
创建producer:sudo ./kafka-console-producer.sh --broker-list Kafka1:9092,Kafka2:9092,Kafka3:9092 --topic test 
创建consumer:sudo ./kafka-console-consumer.sh --zookeeper server1:2181,server2:2181,server3:2181 --from-beginning --topic test

说明:至此,Kafka集群搭建完毕,接下来就可以通过调用Kafka的Java API来测试Kafka集群的状态了。

 

参考文献:

[1] ZooKeeper集群环境安装与配置:http://blog.csdn.net/unix21/article/details/18990123

[2] Apache Zookeeper 集群环境搭建:http://bigcat2013.iteye.com/blog/2175538

[3] Zookeeper安装和配置:http://coolxing.iteye.com/blog/1871009

[4] 分布式消息系统Kafka:http://blog.jobbole.com/75328/%20

[5] Apache Kafka集群环境搭建:http://bigcat2013.iteye.com/blog/2175880?utm_source=tuicool&utm_medium=referral

[6] Kafka 2.9.2的分布式集群安装和demo:http://www.aboutyun.com/thread-8919-1-1.html

[7] Kafka集群--3个broker 3个zookeeper创建实战:http://www.cnblogs.com/davidwang456/p/4238536.html

[8] flume+kafka+storm搭建:http://wenku.baidu.com/link?url=hTPgtuZtUob7mZ8nWYgZkGLHK7r71-tVQnJIgPzjpT7dTKnnDggfEeCZuFvXDI575PASNE4QpqzFsNCm7GznINiJAiXxdqf8FfNevlPkHKS

完全分布式ZooKeeper集群和Kafka集群的搭建和使用

标签:

原文地址:http://www.cnblogs.com/shengshengwang/p/5079524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!