1、准备工作

1.1、机器准备

server1:10.40.33.11
server2:10.40.33.12
server3:10.40.33.13

1.2、端口占用情况

zookeeper:2181,3888,4888
kafka:9092

1.3、软件准备

jdk1.7.0_51(最新版本的kafka-0.8.2.1建议使用1.7及以上版本的jdk)
zookeeper3.4.5(及以上版本)
kafka_2.11-0.8.2.1(最新版本)

2、安装

2.1、安装zookeeper

1.下载zookeeper
    下载地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
2.安装zookeeper
    server1,server2,server3分别执行a,b,c步骤。
    假设安装目录为:$ZOOKEEPER_HOME=/home/sinova/zookeeper-3.4.6
    a.解压
        tar -zxvf zookeeper-3.4.6.tar.gz
    b.配置
        将conf/zoo_sample.cfg拷贝一份命名为zoo.cfg,也放在conf目录下。然后按照如下值修改其中的配置:
            tickTime=2000
            initLimit=10
            syncLimit=5
            dataDir=/disk0/var/zookeeper/datas
            dataLogDir=/disk0/var/zookeeper/logs
            clientPort=2181
            server.1=10.40.33.11:3888:4888
            server.2=10.40.33.12:3888:4888
            server.3=10.40.33.13:3888:4888
    c.创建myid文件
    命令:
        cd dataDir(/disk0/var/zookeeper/datas)
        echo 1 > myid
    注:1为zookeeper实例的id,serverX中的X为myid的值。
3.依次启动server1,server2,server3的zookeeper实例
启动命令:       
    $ZOOKEEPER_HOME/bin/zkServer.sh start
停止命令:
    $ZOOKEEPER_HOME/bin/zkServer.sh stop
4.测试zookeeper是否正常工作,在server1上执行以下命令
    a.jps查看是否有QuorumPeerMain进程
    b.$ZOOKEEPER_HOME/bin/zkCli.sh -server 192.168.0.2:2181

安装kafka

1.下载kafka
    下载地址:http://mirror.bit.edu.cn/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
2.安装kafka
    server1,server2,server3分别执行a,b步骤。
    假设安装目录为:$KAFKA_HOME=/home/sinova/kafka_2.11-0.8.2.1
    a.解压
        tar -zxvf kafka_2.11-0.8.2.1.tgz
    b.配置
        修改$KAFKA_HOME/conf/server.properties文件,按照如下配置进行修改。
            broker.id=0#保证该id在集群唯一
            port=9092
            num.network.threads=2
            num.io.threads=8
            socket.send.buffer.bytes=1048576
            socket.receive.buffer.bytes=1048576
            socket.request.max.bytes=104857600
            log.dirs=/disk0/var/kafka/logs#保证该目录存在
            num.partitions=2
            log.retention.hours=168
            log.segment.bytes=536870912
            log.retention.check.interval.ms=60000
        zookeeper.connect=10.40.33.11:2181,10.40.33.12:2181,10.40.33.13:2181/kafka
            log.cleaner.enable=false
            zookeeper.connection.timeout.ms=1000000
            delete.topic.enable=true
            queue.buffering.max.ms=5000ms
            queue.buffering.max.message=5000
    注:broker.id为serverX中的X值即可,保证集群中唯一即可。
3.依次启动server1,server2,server3的kafka实例
    启动命令:
        cd $KAFKA_HOME
        nohup bin/kafka-server-start.sh config/server.properties &
    停止命令:
        cd $KAFKA_HOME
        bin/kafka-server-stop.sh
4.测试zookeeper是否正常工作,在server1上执行以下命令
    a.jps查看是否有kafka的进程
    b.测试创建topic
    命令:
        cd $KAFKA_HOME
        bin/kafka-topics.sh --create --zookeeper 10.40.33.11:2181,10.40.33.12:2181,10.40.33.13:2181/kafka --replication-factor 1 --partitions 1 --topic test