安装部署kafka
2016-11-28 16:31
190 查看
说明:本博客是对学习安装部署kafka的总结,某些资源来自互联网,如有雷同,纯属引用参考。
1 zookeeper集群安装部署
由于zookeeper集群的投票选举机制,集群机器数量必须是单数,这里以三台机器作为一个集群为例。假设这三台机器的IP分别是:172.30.1.20、172.30.1.21、172.30.1.22。用域名代替IP访问,修改/etc/hosts文件,新增内容:
|
1.1 安装
这里安装在/opt目录下,执行以下命令:cp/usr/local/src/zookeeper-3.4.6.tar.gz /opt
cd /opt
tar -zxvfzookeeper-3.4.6.tar.gz
ln -s /opt/zookeeper-3.4.6 /opt/zookeeper
1.2 配置
●配置zookeeper的配置文件cp/opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
需要分配两个目录,一个为zookeeper的数据目录,一个用于日志目录。这里创建两个新的目录:
mkdir /opt/zookeeper/data
mkdir /opt/zookeeper/logs
cd/opt/zookeeper
vim./conf/zoo.cfg,修改配置项如下:
|
配置项解释
dataDir:数据目录,即数据持久化的目录
dataLogDir:日志目录
clientPort:客户端连接端口
tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳,单位毫秒。
initLimit:Zookeeper的Leader 接受客户端(Follower)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10个心跳的时间(也就是tickTime)长度后 Zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒
syncLimit:表示 Leader 与 Follower 之间发送消息时请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是 5*2000=10秒。
server.A=B:C:D
其中A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
(如果部署在同一台机器上,可以采用伪集群的配置方式,即 B 都是一样,不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。)
●新增myid文件
# cd /opt/zookeeper/data
#vim myid
在data目录下创建文件,文件名为“myid”,编辑该“myid”文件,输入对应的编号,这个代表着该节点机器的编号。如在172.30.1.20上,“myid”文件内容就是1,在172.30.1.21上,内容就是2,在172.30.1.22,内容就是3。 若有更多依此类推。
1.3 启动与停止
启动:/opt/zookeeper/bin/zkServer.shstart
停止:
/opt/zookeeper/bin/zkServer.shstop
重启:
/opt/zookeeper/bin/zkServer.sh restart
检查启动后状态
# /opt/zookeeper/bin/zkServer.sh status
( 可能需要安装nc包 # yum install nc )
若启动成功,节点的状态是leader或者follower。
修改防火墙
如果是用iptable的话,在/etc/sysconfig/iptables中加入ZooKeeper的端口:
|
执行防火墙重启命令:
# service iptables restart
客户端登陆
#/opt/zookeeper/bin/zkCli.sh-server 127.0.0.1:2181
1.4 zookeeper c client install
cd /opt/zookeeper/src/c( 非必需项,若没安装以下就需要安装:
yum install -ycppunit-devel
ACLOCAL="aclocal-I /usr/share/aclocal" autoreconf -if
/usr/share/aclocal是cppunit.m4所在的路径
)
./configure
make
make install
2 kafka集群安装部署
以三台机器作为一个集群为例。假设这三台机器的IP分别是:172.30.1.20、172.30.1.21、172.30.1.22。假设这三台机器的主机名分别为kafka01,kafka02,kafka03,注意:主机名只能用英文字母、数字、“-”,不能使用下划线“_”,会出现问题。用域名代替IP访问,修改/etc/hosts文件,新增内容:
|
2.1 安装
这里安装在/opt目录,执行以下命令:tar -zxvfkafka_2.11-0.10.0.0.gz -C /opt
2.2 配置
分配一个目录作为kafka的日志目录,这里新建目录mkdir /opt/kafka_2.11-0.10.0.0/logs
cd /opt/kafka_2.11-0.10.0.0
vim config/server.properties
|
配置项解释
broker.id kafkabroker节点的 编号,如在kafka01,broker.id=0,在kafka02,broker.id=1,在kafka03,broker.id=2。
listeners kafkabroker监听的主机和端口。
log.dirs 日志目录。
zookeeper.connect zookeeper集群列表,多个的话用逗号隔开。
2.3 启动与停止
启动/opt/kafka_2.11-0.10.0.0/bin/kafka-server-start.sh /opt/kafka_2.11-0.10.0.0/config/server.properties&
停止
/opt/kafka_2.11-0.10.0.0/bin/kafka-server-stop.sh
查看进程,端口
# ps -ef | grepkafka
# netstat-tunpl | grep java
zookeeper默认监听的端口:2181,3888 (3888 端口是zookeeper集群内部使用,还有 2888端口也作为内部使用)。
kafka默认监听端口:9092
2.4 安装kafka c/c++ client
下载地址:https://github.com/edenhill/librdkafka下载源码包,执行以下命令
tar -zxvflibrdkafka-0.9.1.tar.gz -C /opt
cd /opt/librdkafka-0.9.1
./configure
make
make install
默认安装信息:
/usr/local/include/librdkafka/rdkafka.h
/usr/local/lib/librdkafka.so
/usr/local/include/librdkafka/rdkafkacpp.h
/usr/local/lib/librdkafka++.so
2.5 安装kafka php 客户端
php client使用源码:https://github.com/arnaud-lb/php-rdkafka下载源码包,执行以下命令
tar -zxvfphp-rdkafka-0.9.1-php5.tar.gz -C /opt
cd/opt/php-rdkafka-0.9.1-php5/
/usr/bin/phpize
./configure
make
make install
echoextension=rdkafka.so | sudo tee -a /etc/php.ini
查看是否安装成功
/usr/bin/php-m | grep rdkafka
重启php-fpm
若php-fpm已经启动,则重启php-fpm
service php-fpm reload
或者
killall php-fpm
php-fpm
若安装时出现的错误:
ERROR:
/usr/include/php/ext/pcre/php_pcre.h:29:18:error: pcre.h: No such file or directory
解决方法:安装pcre库
2.6 简单测试kafka
2.6.1创建topic
连接zookeeper, 创建一个名为testtopic001的topic, replication-factor 和 partitions 都设置为3参数信息:Zookeeper的信息,复制因子,Topic的Partition数,Topic的名字。(注意:一个broker可以有一个topic的多个partition,但是一个topic的replication-factor复制因子必须小于等于集群的Broker数目)
[root@localhost~]# /opt/kafka_2.11-0.10.0.0/bin/kafka-topics.sh --create --zookeeperzookeeper01:2181 --replication-factor 3 --partitions 3 --topic testtopic001
Created topic "testtopic001".
[root@localhost~]#
查看已经创建的topic列表
在172.30.1.20查看
[root@localhostkafka_2.11-0.10.0.0]# /opt/kafka_2.11-0.10.0.0/bin/kafka-topics.sh --list--zookeeper zookeeper01:2181
查看指定topic属性
[root@localhost~]# /opt/kafka_2.11-0.10.0.0/bin/kafka-topics.sh --describe --zookeeperzookeeper01:2181 --topic testtopic001
显示如下:
Topic:testtopic001 PartitionCount:3 ReplicationFactor:3 Configs:
Topic: testtopic001 Partition: 0 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2
Topic: testtopic001 Partition: 1 Leader: 2 Replicas: 2,1,0 Isr: 2,1,0
Topic: testtopic001 Partition: 2 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1
2.6.2生产消息
生产者连接Kafka Broker发布一个消息下面可以直接输入生产的数据(生产消息时不需要指定Partition,Kafka自动做Partition路由,每个Partition都是有Lead Partition和Follower Partitions组成,Lead Partition负责读写,而Follower Partitions只做复制,在Lead Partition挂了之后,自动做Failover)
[root@localhostkafka_2.11-0.10.0.0]# /opt/kafka_2.11-0.10.0.0/bin/kafka-console-producer.sh--broker-list zookeeper01:9092 --topic testtopic001
hello,kafka!
^C[root@localhostkafka_2.11-0.10.0.0]#
2.6.3消费消息
消费者连接Zookeeper获取消息[root@localhost~]# /opt/kafka_2.11-0.10.0.0/bin/kafka-console-consumer.sh --zookeeperzookeeper01:2181 --topic testtopic001 --from-beginning
hello,kafka!
^C
[root@localhost ~]#
Consumers之间的负载均衡使用Zookeeper来实现
相关文章推荐
- Kafka学习笔记-基本概念与安装部署
- kafka管理器kafka-manager部署安装
- kafka本地单机安装部署
- KafKa(0.10)安装部署和测试
- 从无到有系列之kafka安装部署01
- 【Apache KafKa系列之一】KafKa安装部署
- Kafka安装及部署
- Kafka安装部署
- kafka架构原理和安装部署
- kafka集群安装部署
- kafka管理器kafka-manager部署安装
- kafka及zookeeper安装部署
- Linux下部署Kafka分布式集群,安装与测试
- KafKa(0.10)安装部署和测试
- Kafka安装部署
- kafka管理器kafka-manager部署安装
- 【Apache KafKa系列之一】KafKa安装部署
- kafka管理器kafka-manager部署安装
- Centos6.5下kafka部署安装
- kafka 安装部署