kafka搭建到配置borker集群(项目开发-区块链)

(以下分享了搭建kafka需要使用到的命令,差不多齐了,这里没有提到kafka-manager ,同学可以在网上自行查找)

 

最近公司的项目比较紧,先说下使用kafka的用处:

    要替代原来 撮合引擎发数据到交易所中,原来使用api方式,弊端:若一方出现宕机,则会发生数据丢失情况,为避免,这里开始搭建kafka消息分布式系统。

 

顶着小压力~开始研究学习,在一周时间之后,终于我的第一个集群分布式kafka搭建完成。

 

在这其中走了不少坑,在这里我把自己从开始过程到搭建完成的使用命令分享给大家,(欢迎指出错误~)

 

我用的环境是

mac系统 (unix)

php 7.2.1 (虽然没多大关系~)

 

 

------------------------- kafka 安装 -------------------------
安装kafka前需先安装jdk
yum install java

wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/kafka/1.1.0/kafka_2.11-1.1.0.tgz
tar -xzf kafka_2.11-1.1.0.tgz

使用说明具体详见http://kafka.apache.org/quickstart

 

-------------------------编译安装kafka-------------------------
***********注意!!***********
若你是mac系统,请同样使用编译安装,尽量不用brew安装,原因:1,版本旧 2,个别配置与官网配置不一致,导致不能很好进行负载均衡。
*********************************

1 安装kafka
首先从官网获取安装包 (网址 http://kafka.apache.org/downloads)
这里目前选用kafka_2.11-1.1.1.tgz 版本


2 在src目录中解压,打开进入kafka_2.11-1.1.1文件


3 开始启动kafka,首先需要启动zookeeper(安装说明在下面)

tips:为方便快捷,需要将kafka中bin目录加载到环境变量中 打开~/.bash_profile
添加一条 export PATH=/Users/apple/src/kafka-2.11-1.1.1/bin:$PATH
保存退出,source ~/.bash_profile

 

开始命令:(每次开机都要启动)

(以下kafka中conf里面的配置文件都已copy到/usr/local/etc/kafka/目录下,方便管理 )
启动zookeeper系统
zookeeper-server-start.sh /usr/local/etc/kafka/zookeeper.properties
启动kafka系统
kafka-server-start.sh /usr/local/etc/kafka/server.properties

新建topic
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic zzyk
#--zookeeper是集群列表,可以指定所有节点,也可以指定为部分列表
#--replication-factor 为复制数目,数据会自动同步到其他broker上,防止某个broker宕机数据丢失
#--partitions 一个topic可以切分成多个partition,一个消费者可以消费多个partition,但一个partition只能被一个消费者消费


生产消息
kafka-console-producer.sh --broker-list localhost:9092 --topic new_topic

消费消息
kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic new_topic

查看当前全部topic
kafka-topics.sh --list --zookeeper localhost:2181

查看当前主题详细信息
kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe --topic new_topic

查看全部主题信息
kafka-topics.sh --describe --zookeeper localhost:2181

查看consumer group列表(新版命令)
kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9092 --list
查看consumer group列表(老命令)
kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --list

删除主题:
kafka-topics.sh --delete --zookeeper localhost:2181 --topic new_topic

若需要真正删除,去除mark

可以参考该同学博文(https://blog.csdn.net/fengzheku/article/details/50585972)

这里也分享下:

  此时你若想真正删除它,可以如下操作:

     (1)登录zookeeper客户端:命令:./bin/zookeeper-client

     (2)找到topic所在的目录:ls /brokers/topics

     (3)找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。

另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/【topic name】,

    如果你删除了此处的topic,那么marked for deletion 标记消失


删除 消费者组
kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --delete --group <group-name>

查看某个组中的topic信息
kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --group 1 --describe

 


-------------------------搭建Kafka broker集群-------------------------

修改config/server.properties文件 复制此配置文件分别为server-1.properties,server-2.properties,server-3.properties


//准备三份用于启动kafka服务的配置
cp server.properties server-0.properties
cp server.properties server-1.properties
cp server.properties server-2.properties
三份配置中都要修改以下
broker.id=0(三个配置中分别修改为0,1,2)
port=9092(三个配置中分别修改为9092,9093,9094)
log.dirs=/tmp/kafka-logs-0(三个配置中分别修改为/tmp/kafka-logs-0,/tmp/kafka-logs-1,/tmp/kafka-logs-2)
num.partitions=3 (都设置为3,即每个topic默认三个partition)


配置完毕后,令开启三个终端 开启kafka
kafka-server-start.sh /usr/local/etc/kafka/server-1.properties
kafka-server-start.sh /usr/local/etc/kafka/server-2.properties
kafka-server-start.sh /usr/local/etc/kafka/server-3.properties

最后就可以在php中使用kafka了~~


安装zookeeper (若已经安装kafka,则其包内带有zookeeper在 src/kafka2.11-1.1.1/libs目录中 )
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar zxvf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6
cp -rf conf/zoo_sample.cfg conf/zoo.cfg
cd conf
vim zoo.cfg
修改zook.cfg里头的dataDir (数据路径这里配置路径为dataDir=/usr/local/var/lib/zookeeper)


重要kafka配置参数中文说明
http://debugo.com/kafka-params/
https://www.cnblogs.com/weixiuli/p/6413109.html
Kafka集群生产/消费的负载均衡(Rebalance)测试
https://blog.csdn.net/cjf_wei/article/details/57121845

 

--------------- kafka php客户端安装(php-rdkafka) --------------
1.安装 librdkafka
git clone https://github.com/edenhill/librdkafka
cd librdkafka
./configure
make
sudo make install

2.安装php-rdkafka
git clone https://github.com/arnaud-lb/php-rdkafka.git
cd php-rdkafka
phpize
./configure
make all -j 5
sudo make install

vi /usr/local/lib/php.ini
加入 extension=rdkafka.so

 

 

-------------------------为完成此文档,提交到公司手册中,花了不少时间,也希望大家多多指出其中不正确地方,不胜感激~-------------------------

 

 

      人的一切痛苦,本质上都是对自己的无能的愤怒。

 

posted @ 2018-07-20 22:15  Darren_zzy  阅读(525)  评论(1编辑  收藏  举报