• 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

  • 相关阅读:
    C# 中 Struct 与 Class 的区别,以及两者的适用场合<转转转>
    <转>.NET Framework十年回顾 体积越小功能越强
    一个数组,下标从0到n,元素为从0到n的整数。判断其中是否有重复元素
    在博客园已经一年多时间了,今天开通博客了!
    C#RSA非对称加解密
    无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
    JavaScript判断浏览器类型及版本(转)
    SQL Server 海量导入数据
    数据库管理方面必知语句(问答)(转)
    JS实现的购物车
  • 原文地址:https://www.cnblogs.com/gudi/p/7847334.html
Copyright © 2020-2023  润新知