kafka、zk集群二

来源:互联网 发布:linux 查看磁盘格式 编辑:程序博客网 时间:2024/05/29 10:02

一、Zookeeper集群安装

要求:

zookeeper的 jdk要 6以上

zookeeper生产环境版本为 3.4.8

1.首先编辑/Etc/Hosts

1.    5台都加入:

2.    10.0.50.10 zk-kafka01

3.    10.0.50.11 zk-kafka02

4.    10.0.50.12 zk-kafka03

5.    10.0.50.13 zk-kafka04

6.    10.0.50.14 zk-kafka05

2.更改Hostname

1.    1.vim/etc/sysconfig/network

2.    2.hostname zk-kafka0*

3.    以下为主机名对应关系

4.    10.0.50.10 zk-kafka01

5.    10.0.50.11 zk-kafka02

6.    10.0.50.12 zk-kafka03

7.    10.0.50.13 zk-kafka04

8.    10.0.50.14 zk-kafka05

3.安装软件包

1.    mkdir-p /app/zpy/3rd/zookeeper

2.    mkdir-p /app/zpy/zookeeper

3.    cd/app/zpy/3rd/zookeeper/

4.    rz(包在svn上)

5.    解压

6.     

7.    cd/app/zpy/3rd/zookeeper/zookeeper-3.4.8

8.    cp-a */app/zpy/zookeeper/


此处注意,按照运维标准化原则来说,此处应该chown 目录权限至zpy,但是担心一组会有较多改动,前期先用root用户,待5台全部部署完毕后,再进行整体权限收回和切换
--------------------------------------

1.    cd/app/zpy/zookeeper/conf

2.    cp zoo_sample.cfg zoo.cfg(拷贝模版配置文件生成新的配置文件)

3.    然后创建zkdata存放目录

4.    mkdir-p /data/zpy/zookeeper

5.    然后我们开始修改配置文件了

1.修改数据和快照存储路径,路径为上方设置的

1.    dataDir=/data/zpy/zookeeper

2.在配置文件最后添加zk集群关系

1.    (2888端口是leader的端口,3888端口是leader挂掉后选举leader用到的通讯渠道端口)

2.    server.1=zk-kafka01:2888:3888

3.    server.2=zk-kafka02:2888:3888

4.    server.3=zk-kafka03:2888:3888

5.    server.4=zk-kafka04:2888:3888

6.    server.5=zk-kafka05:2888:3888

7.    配置文件这就改好了

注意:

1.    tickTime:这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

2.    dataDir:顾名思义就是Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。

3.    clientPort:这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口,接受客户端的访问请求。

4.    initLimit:这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到LeaderFollower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过5个心跳的时间(也就是 tickTime)长度后Zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是5*2000=10

5.    syncLimit:这个配置项标识LeaderFollower之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是2*2000=4

6.    server.A=BCD:其中 A 是一个数字,表示这个是第几号服务器;B是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的Leader服务器交换信息的端口;D表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的Zookeeper实例通信端口号不能一样,所以要给它们分配不同的端口号

3.创建Myid文件,并输入编号

1.    echo"1">/data/zpy/zookeeper/myid

2.    其他四台分别为2345

4.启动Zookeeper集群,5台最好同时启动,间隔时间不要相差太大

1.    cd/app/zpy/zookeeper/bin/

2.    ./zkServer.sh start

5.检查状态,一个Leader,4个Follower

1.    [root@zk-kafka05 bin]#./zkServer.sh status

2.    ZooKeeper JMX enabledbydefault

3.    Using config:/app/zpy/zookeeper/bin/../conf/zoo.cfg

4.    Mode: leader

5.     

6.    [root@zk-kafka04 bin]#./zkServer.sh status

7.    ZooKeeper JMX enabled bydefault

8.    Using config:/app/zpy/zookeeper/bin/../conf/zoo.cfg

9.    Mode: follower

6.测试Zookeeper是否正常工作,在Server1上执行以下命令

1.    # /home/wwb/zookeeper/bin/zkCli.sh -server192.168.0.2:2181,出现类似以下内容

2.    JLine supportis enabled

3.    2013-11-2719:59:40,560-INFO    [main-SendThread(localhost.localdomain:2181):ClientCnxn$SendThread@736]-Session establishmentcomplete onserver localhost.localdomain/127.0.0.1:2181, sessionid=   0x1429cdb49220000, negotiatedtimeout=30000

4.    WATCHER::

5.    WatchedEventstate:SyncConnected type:None path:null

6.    [zk:127.0.0.1:2181(CONNECTED)0]

二、Kafka集群安装

1.下载

1.    wget http://apache.fayea.com/kafka/0.8.2.2/kafka_2.11-0.8.2.2.tgz

版本需要注意,不要选取这个版本之前的版本,有明显bug,但是也不要选最新的,操作命令不一样,研发还需要去学习 解压

2.安装、配置

1.    最后安装在/app/zpy/kafka

2.    修改配置文件 config下的 server.properties

3.    修改项:

4.    broker.id=10--这个id如果部署的是kafka集群,id是不能一样的,可以以节点ip最后一位命名。

5.    port=9092--默认kafka端口,如果一台机器上面部署了多个kafka实例,需要两个实例端口不一样

6.    log.dirs=/data/zpy/kafka10-logs----这个是kafka日志文件存放路径,默认是/tmp下的,重启会消                     失,所以我们更换目录

7.    num.partitions=1---这个需要与研发商议,与数据插入顺序有关。具体有研发的程序决定。如果研发                  程序中设置了3partition,配置文件中设置为1也不生效。配置文件只作为默认                    值。

8.    zookeeper.connect=10.0.50.10:2181,10.0.50.11:2181,10.0.50.12:2181,10.0.50.13:2181,10.0.50.14:2181/kafkagroup kafka实现功能需要zookeeper调度,所以这是与zk单机或者集群的连接,上面是与                  集群连接的方式,也可以去掉/kafkagroup,但是zkznode结构就会比较混乱,所以                  建议加上一个路径。/路径下存放znode相关信息,最好创建一个目录,如                           kafkagroup存放kafka集群的信息

9.    zookeeper.connection.timeout.ms=6000----连接zk超时时间

10. 修改kafka的启动脚本(调节启动内存占用大小) cd kafka/bin

11.  

12. vim kafka-server-start.sh

13. 修改28-29

14. if["x$KAFKA_HEAP_OPTS"="x"];then

1.     export KAFKA_HEAP_OPTS="-Xmx32G -Xms8G"

3.启动

kafka启动(一定后台启动):

1.    ./kafka-server-start.sh ../config/server.properties&

4.启动后验证

查看zk集群的znode节点信息 zk是有客户端工具的,可以下载使用,但是zk程序中也自带了程序监测 进入zk的bin目录下

1.    [root@zk-kafka01 bin]# sh zkCli.sh

2.    Connecting to localhost:2181Welcome to ZooKeeper!JLine supportis enabled WATCHER::WatchedEvent state:SyncConnected type:None path:null

3.    [zk: localhost:2181(CONNECTED)0] ls /

4.    [kafkagroup, zookeeper]

5.    可以看到我们在kafka里设置的kafkagroup

5.创建Topic(包含3个分区,2个备份副本)

1.    ## ./kafka-topics.sh --create --zookeeper 10.0.140.26:2181/kafka--replication-factor 2 --partition 3 --topic zxytest

2.    Created topic"zxytest".

6.查看Topic情况

1.    # cd /app/zpy/zookeeper/bin

2.    # sh zkCli.sh

3.    [zk: localhost:2181(CONNECTED)1] ls /

4.    [zk, consumers, brokers, zk01, zookeeper, kafka]

5.    [zk: localhost:2181(CONNECTED)2] ls /kafka/brokers/topics/

6.    zxytest

7.模拟Topic生产数据信息

1.    # ./kafka-console-producer.sh --broker-list 10.0.50.10:9092--topic zxytest

2.    模拟输入内容

3.    hello

4.    world

8.模拟消费者接收数据

1.    # ./kafka-console-consumer.sh --zookeeper 10.0.50.10:2181/kafka--topic zxytest --from-beginning

2.    会接收到生产的数据信息

3.    hello

4.    world