Kafka集群部署、sasl安全认证

Zookeeper集群部署:

Kafka是依赖于zookeeper,需要先将zooleeper启动起来。首先可以从http://zookeeper.apache.org/releases.html 下载最新版zookeeper(当前版本3.4.13),进入其中的conf文件夹,可以看到一个名为zoo_sample.cfg的文件。我们把它另存为一个zoo.cfg文件,然后打开,可以看到zookeeper的配置项,以下是各配置项的说明:


  • dataDir:Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
  • clientPort:客户端连接Zookeeper服务器的端口号。默认2181。
    以下参数无特殊需要可以使用默认值不必特意修改。
  • tickTime:这个数值是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,单位毫秒,也就是每个tickTime时间就会发送一个心跳。zookeeper的客户端和服务端之间也有和web开发里类似的session的概念,而zookeeper里最小的session过期时间就是tickTime的两倍。默认值2000。
  • initLimit:LF初始通信时限。集群中的follower服务器(F)与leader服务器(L)之间初始化的时候连接时能容忍的最多心跳数(tickTime的倍数)。此配置表示,允许follower(相对于leader而言的“客户端”)连接并同步到leader的初始化连接时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败。默认值10。
  • syncLimit:LF同步通信时限。与initLimit类似,initLimit是初始化的时候,而syncLimit是连接上之后的同步过程follower服务器(F)与leader服务器(L)之间的请求和应答能容忍的最多心跳数,如果 follower 在设置的时间内不能与leader进行通信,那么此follower将被丢弃。默认值5。
  • maxClientCnxns:允许连上的客户端的最大数量,默认60。
  • autopurge.purgeInterval:这个参数指定了清理日志等数据的频率,单位是小时,需要填写一个1或更大的整数,默认是1,0表示不开启自己清理功能。
  • autopurge.snapRetainCount:这个参数和上面的参数搭配使用,这个参数指定了需要保留的日志文件数目。默认是保留3个。

配置好后使用bin/zkServer.sh start启动即可。
以上是zookeeper单节点的安装配置 ,接下来介绍zk的集群部署,以3个zookeeper节点做集群为例(zk集群通常都是奇数个节点组成)。首先把zookeeper目录copy3份出来,可分别命名zookeeper1、zookeeper2、zookeeper3。在各自的zoo.cfg配置文件里加上以下部分:
server.1=172.16.0.217:8880:7770
server.2=172.16.0.218:8880:7770
server.3=172.16.0.219:8880:7770
以上配置的意义是节点1监听8880端口,并通过7770端口来与其它节点做交互,server2和3同理,可以根据实际服务器的情况修改为需要的ip和端口。
修改各自的clientPort为需要的不同端口,dataDir为日志数据文件夹,可以设置为/tmp/zookeeper1、/tmp/zookeeper2、/tmp/zookeeper3。
接下来在各自的dataDir目录里边新建一个名为myid的文件,并在文件里边分别输入1、2、3作为节点id,这个文件用于zk相互之间的识别。
完成配置后分别使用bin/zkServer.sh start启动即可完成zk集群部署。期间启动前两个节点会看到有异常抛出,这是因为另外两个节点还未启动导致连接识别失败的错误,继续启动另2个节点即可。

Kafka集群部署:

从http://kafka.apache.org/downloads 下载kafka(当前版本2.12-2.0.0)。这里同样以3个节点的方式来部署kafka,将下载下来的文件解压出来,进入其中的config文件夹,copy三份其中的server.properties分别命名为server-1.properties、server-2.properties、server-3.properties,并逐一打开修改,以下是部分配置项的说明:


  • broker.id:用于kafka集群中唯一的id值,用于区分各节点的标识。
  • log.dirs:存储kafka数据、日志的文件夹地址。
  • zookeeper.connect:zookeeper服务的连接地址,zk集群的话以“,”分割。
  • listeners:该节点监听的端口,默认值PLAINTEXT://:9092,按需修改各自节点的端口。
    以下参数无特殊需要可以使用默认值不必特意修改。
  • num.network.threads:该broker处理消息的最大线程数,一般情况下数量为cpu核数。默认值3。
  • num.io.threads:处理IO的线程数。默认值8。
  • num.partitions:默认分区数。默认值1,特殊优化时可以考虑修改。
  • zookeeper.connection.timeout.ms:zk连接超时时限。默认值6000。
    更多的配置描述可参考http://kafka.apache.org/documentation/#brokerconfigs 。

在这里broker.id可以分别配置为0、1、2,log.dirs可以分别配置为/tmp/kafka-logs-0、/tmp/kafka-logs-1、/tmp/kafka-logs-2,zookeeper.connect的配置为172.16.0.217:2188,172.16.0.218:2188,172.16.0.219:2188。之后分别加上

  • listeners=PLAINTEXT://172.16.0.217:9092
  • listeners=PLAINTEXT://172.16.0.218:9092
  • listeners=PLAINTEXT://172.16.0.219:9092

表示kafka各服务监听的都是9092端口。
完成配置文件的修改后,可将3个kafka文件夹放入各自的服务器中,使用命令

./bin/kafka-server-start.sh ./config/server-x.properties

来启动即可。

附加:
查看日志文件命令:

bin/kafka-run-class.sh kafka.tools.DumpLogSegments --files /tmp/kafka-logs/test3-0/00000000000000000000.log --print-data-log

其中–print-data-log表示查看消息内容。

添加sasl安全认证:

分别复制config目录里的文件server-0.properties、server-1.properties、server-2.properties为server-0_sasl.properties、server-1_sasl.properties、server-2_sasl.properties,添加以下参数:

  • security.inter.broker.protocol=SASL_PLAINTEXT
  • sasl.enabled.mechanisms=PLAIN
  • sasl.mechanism.inter.broker.protocol=PLAIN
  • authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
  • allow.everyone.if.no.acl.found=true
    将listeners分别改为
  • listeners= SASL_PLAINTEXT://172.16.0.217:9092
  • listeners= SASL_PLAINTEXT://172.16.0.218:9092
  • listeners= SASL_PLAINTEXT://172.16.0.219:9092
    在该目录里添加一个.conf文件,可以命名为kafka_server_jaas.conf,打开并输入内容:
        KafkaServer {
          org.apache.kafka.common.security.plain.PlainLoginModule required
          username="admin"
          password="admin-sec"
          user_admin="admin-sec"
          user_producer="prod-sec"
          user_consumer="cons-sec";
        };

复制bin目录里的kafka-server-start.sh为kafka-server-start_sasl.sh文件,在
export KAFKA_HEAP_OPTS这个参数里添加-Djava.security.auth.login.config=/home/kafka/kafka_2.12-2.0.0/config/kafka_server_jaas.conf
示例:

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/home/kafka/kafka_2.12-2.0.0/config/kafka_server_jaas.conf"

保存后使用命令

./bin/kafka-server-start_sasl.sh ./config/server-x_sasl.properties

来启动即可。

你可能感兴趣的:(kafka)