zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    git线上操作
    IDEA快捷方式
    Java 四种线程池
    java 获取当前天之后或之前7天日期
    如何理解AWS 网络,如何创建一个多层安全网络架构
    申请 Let's Encrypt 通配符 HTTPS 证书
    GCE 部署 ELK 7.1可视化分析 nginx
    使用 bash 脚本把 AWS EC2 数据备份到 S3
    使用 bash 脚本把 GCE 的数据备份到 GCS
    nginx 配置 https 并强制跳转(lnmp一键安装包)
  • 原文地址:https://www.cnblogs.com/gudi/p/7847334.html
Copyright © 2011-2022 走看看