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

自己使用的版本为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集群的搭建

完全分布式ZooKeeper集群和Kafka集群的搭建和使用_第1张图片

说明:

消息的发布(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 192.168.56.136:9092,192.168.56.137:9092,192.168.56.138:9092 --topic test 
创建consumer:sudo ./kafka-console-consumer.sh --zookeeper server1:2181,server2:2181,server3:2181 --from-beginning --topic test

说明:执行命令kafka-console-producer.sh的时候,KafkaX必须写成对应的IP才不会报错,否则Caused by: org.apache.kafka.common.config.ConfigException: DNS resolution failed for url in bootstrap.servers: KafkaX:9092。可能是自己文件配置的问题,这个问题现在还没有解决。

至此,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集群的搭建和使用)