• kafka学习2:kafka集群安装与配置


          在前一篇:kafka学习1:kafka安装 中,我们安装了单机版的Kafka,而在实际应用中,不可能是单机版的应用,必定是以集群的方式出现。本篇介绍Kafka集群的安装过程: 

    一、准备工作   

          1、开通Zookeeper和Kafka需要的端口

          在 zookeeper-端口说明 中,我们可以看到Zookeeper需要用到3个端口,我们都需要开放这个端口。Linux开放端口,可以参考:Linux 开启端口命令 这篇文章。

          否则在启动的时候,会出现如下错误(连接超时错误):

          2、修改主机名称

          在搭建Kafka集群时,默认的主机名localhost.localmain不起作用,需要我们设置一个主机名,Linux下设置主机名可以参考:Linux修改主机名称 这篇文章。

    二、配置Zookeeper集群   

         这里用的是Kafka自带的Zookeeper,修改zookeeper.properties。

          Zookeeper本身有很多配置,我在这里用到的配置有如下几项:

          # the directory where the snapshot is stored.

          #存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能
          dataDir=/usr/data/zookeeper_kafka

          =================================================
          # the port at which the clients will connect

          #客户端连接server的端口,即对外服务端口,一般设置为2181吧。
          clientPort=2181

          ================================================
          # disable the per-ip limit on the number of connections since this is a non-production config

          #单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制。请注意这个限制的使用范围,仅仅是单台客户端机器与单#台ZK服务器之间的连接数限制,不是针对指定客户端IP,也不是ZK集群的连接数限制,也不是单台ZK对所有客户端的连接数限制。指定客户端IP的限制策略,这里有一个#patch,可以尝试一下:  http://rdc.taobao.com/team/jm/archives/1334(No Java system property)

          maxClientCnxns=0

    =================================================

          #Customer->Server通信心跳数

          #ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime。

          tickTime=2000

    ==================================================
          #Leader->Fllower初始通信时限

          #Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在initLimit时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。(No Java system property)

          initLimit=5

    ==================================================
          #Leader->Fllower同步通信时限

          #在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题。(No Java system property)

          syncLimit=2

    ================================================

          #zookeeper的集群所有IP,注意数字1、2、3。

          server.1=192.168.116.129:2888:3888
          server.2=192.168.116.132:2888:3888
          server.3=192.168.116.133:2888:3888

          我们需要对应的Zookeeper服务器上在dataDir的目录下面新建myid文件,同时把对应的1、2、3写进去。

          执行启动zookeeper命令:/bin/zookeeper-server-start.sh config/zookeeper.properties

          可以用zookeeper-shell.sh status来查看zookeeper的启动状态。

     

    三、配置Kafka集群   

          这里修改的是server.properties文件。

          #The id of the broker. This must be set to a unique integer for each broker.

          #broker.id必须全集群惟一
          broker.id=2

          #配置kafka的监听地址

          listeners=PLAINTEXT://192.168.116.129:9092

          port=9092

          #配置kafka的集群信息

          zookeeper.connect=192.168.116.129:2181,192.168.116.132:2181,192.168.116.133:2181

          然后启动Kafka:bin/kafka-server-start.sh config/server.properties

          发送kafka消息如下:

      bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test20171116

          再在其他的Kakfa服务器上检查:

        

        可以看到,我们kafka创建的topic消息已经同步到其他的broker上了。

     

    四、参考文档   

        http://kafka.apache.org/quickstart

        http://blog.csdn.net/gongxinju/article/details/53415051

  • 相关阅读:
    uva 10369 Arctic Network
    uvalive 5834 Genghis Khan The Conqueror
    uvalive 4848 Tour Belt
    uvalive 4960 Sensor Network
    codeforces 798c Mike And Gcd Problem
    codeforces 796c Bank Hacking
    codeforces 768c Jon Snow And His Favourite Number
    hdu 1114 Piggy-Bank
    poj 1276 Cash Machine
    bzoj 2423 最长公共子序列
  • 原文地址:https://www.cnblogs.com/gudi/p/7847334.html
Copyright © 2020-2023  润新知