kafka_2.9.2-0.8.1.1分布式集群搭建

准备3台虚拟机, 系统是RHEL64服务版.
1) 每台机器配置如下:

$ cat /etc/hosts

    # zookeeper hostnames: 
    192.168.8.182       zk1 
    192.168.8.183       zk2 
    192.168.8.184       zk3 


2) 每台机器上安装jdk, zookeeper, kafka, 配置如下:

$ vi /etc/profile
     
    # jdk, zookeeper, kafka 
    export KAFKA_HOME=/usr/local/lib/kafka/kafka_2.9.2-0.8.11 
    export ZK_HOME=/usr/local/lib/zookeeper/zookeeper-3.4.6 
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar 
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$KAFKA_HOME/bin:$ZK_HOME/bin:$PATH 

3) 每台机器上运行:

$ source /etc/profile

$ mkdir -p /var/lib/zookeeper

$ cd $ZK_HOME/conf

$ cp zoo_sample.cfg zoo.cfg

$ vi zoo.cfg
     
    dataDir=/var/lib/zookeeper 
     
    # the port at which the clients will connect 
    clientPort=2181 
     
    # zookeeper cluster 
    server.1=zk1:2888:3888 
    server.2=zk2:2888:3888 
    server.3=zk3:2888:3888 

4) 每台机器上生成myid:

zk1:

$ echo "1" > /var/lib/zookeeper/myid

zk2:

$ echo "2" > /var/lib/zookeeper/myid

zk3:

$ echo "3" > /var/lib/zookeeper/myid
5) 每台机器上运行setup关闭防火墙

Firewall:

[   ] enabled
6) 每台机器上启动zookeeper:

$ zkServer.sh start

查看状态:

$ zkServer.sh status


1)下载KAFKA

    $ wget http://apache.fayea.com/apache-mirror/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz

安装和配置参考上一篇文章:

http://blog.csdn.net/ubuntu64fan/article/details/26678877

2)配置$KAFKA_HOME/config/server.properties

我们安装3个broker,分别在3个vm上:zk1,zk2,zk3:

zk1:

$ vi /etc/sysconfig/network

    NETWORKING=yes 
    HOSTNAME=zk1 


$ vi $KAFKA_HOME/config/server.properties

    broker.id=0 
    port=9092 
    host.name=zk1 
    advertised.host.name=zk1 
    ... 
    num.partitions=2 
    ... 
    zookeeper.contact=zk1:2181,zk2:2181,zk3:2181 

zk2:

$ vi /etc/sysconfig/network

    NETWORKING=yes 
    HOSTNAME=zk2 


$ vi $KAFKA_HOME/config/server.properties

    broker.id=1 
    port=9092 
    host.name=zk2 
    advertised.host.name=zk2 
    ... 
    num.partitions=2 
    ... 
    zookeeper.contact=zk1:2181,zk2:2181,zk3:2181 


zk3:

$ vi /etc/sysconfig/network

    NETWORKING=yes 
    HOSTNAME=zk3 


$ vi $KAFKA_HOME/config/server.properties

    broker.id=2 
    port=9092 
    host.name=zk3 
    advertised.host.name=zk3 
    ... 
    num.partitions=2 
    ... 
    zookeeper.contact=zk1:2181,zk2:2181,zk3:2181 


3)启动zookeeper服务, 在zk1,zk2,zk3上分别运行:

$ zkServer.sh start
4)启动kafka服务, 在zk1,zk2,zk3上分别运行:

$ kafka-server-start.sh $KAFKA_HOME/config/server.properties
5) 新建一个TOPIC(replication-factor=num of brokers)

$ kafka-topics.sh --create --topic test --replication-factor 3 --partitions 2 --zookeeper zk1:2181
6)假设我们在zk2上,开一个终端,发送消息至kafka(zk2模拟producer)

$ kafka-console-producer.sh --broker-list zk1:9092 --sync --topic test

在发送消息的终端输入:Hello Kafka

7)假设我们在zk3上,开一个终端,显示消息的消费(zk3模拟consumer)

$ kafka-console-consumer.sh --zookeeper zk1:2181 --topic test --from-beginning
在消费消息的终端显示:Hello Kafka

 查看topic

bin/kafka-topics.sh --list --zookeeper localhost:2181

相关推荐