KafKa集群配置

一、Kafka使用背景
在大量使用分布式数据库、分布式计算集群的时候,会遇到这样的一些问题:
需要分析用户行为(pageviews);
对用户的搜索关键词进行统计,分析出当前的流行趋势
有些数据,存储数据库浪费,直接存储硬盘效率又低 
这些场景都有一个共同点:
数据是由上游模块产生,上游模块,使用上游模块的数据计算、统计、分析,这个时候就可以使用消息系统,尤其是分布式消息系统!

二、Kafka的定义
What is Kafka:它是一个分布式消息系统,由linkedin使用scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。具有高水平扩展和高吞吐量。

三、KafKa集群配置

Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群。


1、zookeeper集群安装
a)、软件环境
(3台服务器-测试用)
192.168.1.110 server1
192.168.1.111 server2
192.168.1.112 server3

b)、Java jdk安装,zookeeper是用java写的所以他的需要JAVA环境,java是运行在java虚拟机上的
配置jdk环境变量,然后创建目录,
3台服务器统一操作
mkdir zkdata #存放快照日志
mkdir #存放事物日志
如:
/usr/software/zookeeper/zkdata
/usr/software/zookeeper/zkdatalog

c)、修改配置文件
$ tar -zxvf zookeeper.tar.gz
进入到zookeeper解压好的目录里面的conf目录中,查看
#进入zookeeper的conf目录
$ cd /usr/software/zookeeper/conf

#zoo_sample.cfg  这个文件是官方给我们的zookeeper的样板文件,给他复制一份命名为zoo.cfg,zoo.cfg是官方指定的文件命名规则。
# cp zoo_sample.cfg zoo.cfg

3台服务器的配置文件
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/software/zookeeper/zkdata
dataLogDir=/usr/software/zookeeper/zkdatalog
clientPort=2181
server.1=192.168.1.110:2888:3888
server.2=192.168.1.111:2888:3888
server.3=192.168.1.112:2888:3888
#server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里
#192.168.1.110为集群里的IP地址,
端口说明:
第一个端口是master和slave之间的通信端口,默认是2888,
第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888

配置文件解释:
#tickTime:
这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
#initLimit:
这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
#syncLimit:
这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒
#dataDir:
快照日志的存储路径
#dataLogDir:
事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
#clientPort:
这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点

创建myid文件,分别为server1到3台机各自配置一个myid
#server1
echo "1" > /usr/software/zookeeper/zkdata/myid
#server2
echo "2" > /usr/software/zookeeper/zkdata/myid
#server3
echo "3" > /usr/software/zookeeper/zkdata/myid

d)、重要配置说明
1、myid文件和server.myid  在快照目录下存放的标识本台服务器的文件,他是整个zk集群用来发现彼此的一个重要标识。
2、zoo.cfg 文件是zookeeper配置文件 在conf目录里。
3、log4j.properties文件是zk的日志输出文件 在conf目录里用java写的程序基本上有个共同点日志都用log4j,来进行管理。
4、zkEnv.sh和zkServer.sh文件
zkServer.sh 主的管理程序文件
zkEnv.sh 是主要配置,zookeeper集群启动时配置环境变量的文件

e)、启动服务并查看
1、启动服务
#进入到zookeeper的bin目录下
cd /usr/software/zookeeper/bin
#启动服务(3台都需要操作)
./zkServer.sh start

f)、检查服务状态
#检查服务器状态
# ./zkServer.sh status
JMX enabled by default
Using config: /usr/software/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181
Mode: leader

在另外一台zk机器上查看
# ./zkServer.sh status
JMX enabled by default
Using config: /usr/software/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181
Mode: follower

可以看到zookeeper集群之后有主从之分,
同时也可以查看启动日志打印
# cat /usr/software/zookeeper/bin/zookeeper.out

测试:

可以对三台机器进行关闭和重启测试,可以看到他们进行leader和follower切换。



四、Kafka集群搭建
1、软件环境
1、2台以上机器
2、已经搭建好的zookeeper集群
3、kafka安装包

2、创建目录并下载安装软件
#创建目录
# mkdir kafkalogs #创建kafka消息目录,主要存放kafka消息

#解压软件
# tar -zxvf kafka_2.11-1.0.0.tgz

3、修改配置文件
进入到config目录
# cd /user/kafka/config/
主要关注:server.properties 这个文件即可,我们可以发现在目录下:
[root@centos1 config]# ll
总用量 64
-rw-r--r--. 1 root root  906 10月 27 23:56 connect-console-sink.properties
-rw-r--r--. 1 root root  909 10月 27 23:56 connect-console-source.properties
-rw-r--r--. 1 root root 5807 10月 27 23:56 connect-distributed.properties
-rw-r--r--. 1 root root  883 10月 27 23:56 connect-file-sink.properties
-rw-r--r--. 1 root root  881 10月 27 23:56 connect-file-source.properties
-rw-r--r--. 1 root root 1111 10月 27 23:56 connect-log4j.properties
-rw-r--r--. 1 root root 2730 10月 27 23:56 connect-standalone.properties
-rw-r--r--. 1 root root 1221 10月 27 23:56 consumer.properties
-rw-r--r--. 1 root root 4727 10月 27 23:56 log4j.properties
-rw-r--r--. 1 root root 1919 10月 27 23:56 producer.properties
-rw-r--r--. 1 root root 6852 10月 27 23:56 server.properties
-rw-r--r--. 1 root root 1032 10月 27 23:56 tools-log4j.properties
-rw-r--r--. 1 root root 1023 10月 27 23:56 zookeeper.properties

修改server.properties配置文件:
#在log.retention.hours=168 下面新增下面三项
#hostname
host.name=192.168.1.110
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880
同时设置zookeeper连接参数:
#设置zookeeper的连接端口
zookeeper.connect=192.168.1.110:2181,192.168.1.111:2181,192.168.1.112:2181


4、启动Kafka集群并测试

1、启动服务
#从后台启动Kafka集群(3台都需要启动)
#进入到kafka的bin目录 
# ./kafka-server-start.sh -daemon ../config/server.properties

2、检查服务是否启动
[root@centos1 config]# jps
1800 Kafka
1873 Jps
1515 QuorumPeerMain

3、创建Topic来验证是否创建成功
#创建Topic
# ./kafka-topics.sh --create --zookeeper 192.168.1.110:2181 --replication-factor 2 --partitions 1 --topic test
#解释
--replication-factor 2   #复制两份
--partitions 1 #创建1个分区
--topic #主题为shuaige

#在一台服务器上创建一个发布者
#创建一个broker,发布者
./kafka-console-producer.sh --broker-list 192.168.1.111:9092 --topic test

>可以进行消息发送

#在一台服务器上创建一个订阅者
# ./kafka-console-consumer.sh --zookeeper 192.168.1.112:2181 --topic test --from-beginning
>接收到消息
>
>

集群配置完成;



五、其他说明标注
1、日志说明
默认kafka的日志是保存在/user/software/kafka/logs目录下的,这里说几个需要注意的日志

server.log #kafka的运行日志
state-change.log  #kafka他是用zookeeper来保存状态,所以他可能会进行切换,切换的日志就保存在这里

controller.log #kafka选择一个节点作为“controller”,当发现有节点down掉的时候它负责在游泳分区的所有节点中选择新的leader,这使得Kafka可以批量的高效的管理所有分区节点的主从关系。如果controller down掉了,活着的节点中的一个会备切换为新的controller.







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值