KafKa集群部署手册

1 简介

1.1 简介

Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。

官网: http://kafka.apache.org/
中文网: https://www.orchome.com/5

在其中我们知道如果要kafka正常运行,必须配置zookeeper,否则无论是kafka集群还是客户端的生存者和消费者都无法正常的工作的,使用需要先安装zookeeper集群:

Zookeeper下载地址:http://zookeeper.apache.org/r...

1.2 参考资料

http://kafka.apache.org/intro...
https://www.cnblogs.com/likeh...

2 集群规划

2.1 机器规划

192.168.90.225 : zookeeper + kafka
192.168.90.226 : zookeeper + kafka
192.168.90.227 : zookeeper + kafka

2.2 目录规划

mkdir /usr/local/tmp    #临时目录,用于上传压缩包
mkdir  /topinfo  # 安装目录

3 zookeeper集群

3.1 部署环境

操作系统:CentOS7 +
三台服务器:192.168.90.225/226/227
安装包: zookeeper-3.4.14.tar.gz

前置条件: jdk1.8+

3.2 安装zookeeper

3.2.1 上传zookeeper安装包

在其中一台服务器上,上传安装包:

cd  /usr/local/tmp/   # 跳转到临时目录
rz   #通过rz 上传zookeeper-3.4.14.tar.gz

3.2.2 安装

1、解压

tar  -zxvf  zookeeper-3.4.14.tar.gz  # 解压
mv  zookeeper-3.4.14  zookeeper  #重命名
mv  zookeeper/  /topinfo/  # 将解压包拷贝到指定目录

2、进入zookeeper的目录

cd  /topinfo/zookeeper/  #进入目录
ll  # 列出目录的文件列表

如图:

3、修改配置文件
进入conf目录,复制zoo_sample.cfg,并重命名为zoo.cfg

cp  zoo_sample.cfg   zoo.cfg

4、打开并修改zoo.cfg

vi  zoo.cfg

修改dataDir的存放目录, clientPort 默认保持不变,添加zookeeper的节点信息。

# dataDir 数据存放目录
dataDir= /topinfo/zookeeper/data
# the port at which the clients will connect
clientPort=2181
# zookeeper 集群的ip:lead和folw的通信端口:选举端口
# server.index 为服务的myid
server.0=192.168.90.225:2888:3888
server.1=192.168.90.226:2888:3888
server.2=192.168.90.227:2888:3888

wq!退出保存后, 创建数据的保持目录

mkdir -p /topinfo/zookeeper/data

在目录中创建myid文件(内容为0)

touch /topinfo/zookeeper/data/myid
echo 0 > /topinfo/zookeeper/data/myid 

5、把 zookeeper文件夹复制到另外两个服务器上,并创建相同的dataDir目录和myid文件。

scp -r /topinfo/zookeeper  [email protected]:/topinfo/

scp -r /topinfo/zookeeper  [email protected]:/topinfo/

注意:192.168.90.226的 myid 文件内容为 1,192.168.90.227的 myid 文件内容为 2,需要与zoo.cfg中的保持一致。

# 192.168.90.226执行
mkdir -p /topinfo/zookeeper/data
touch /topinfo/zookeeper/data/myid
echo 1 > /topinfo/zookeeper/data/myid  

# 192.168.90.227执行
mkdir -p /topinfo/zookeeper/data
touch /topinfo/zookeeper/data/myid
echo 2 > /topinfo/zookeeper/data/myid  

6、关闭防火墙

# 关闭防火墙
service iptables stop 
# 启动防火墙
service iptables start 
# 重启防火墙
service iptables restart 
# 查看防火墙状态
service iptables status

3.2.3 设置环境变量

设置环境变量

# 打开profile
vim /etc/profile
#加入以下内容
export ZK_HOME=/topinfo/zookeeper
export PATH=$ZK_HOME/bin:$PATH
#保持退出后,执行以下命令,立即生效
source /etc/profile

3.2.4 启动

进入bin目录,分别在三台机器上启动zookeeper:

zkServer.sh  start

启动成功后:
ZooKeeper JMX enabled by default
Using config: /topinfo/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

在三台服务器上执行命令,查看启动状态:

zkServer.sh status

可以查看服务器的角色:leader / follower
如:
ZooKeeper JMX enabled by default
Using config: /topinfo/zookeeper/bin/../conf/zoo.cfg
Mode: follower

3.2.5 验证

查看zookeeper的状态

4 kafka集群

4.1 部署环境

操作系统:CentOS7 +
三台服务器:192.168.90.225/226/227
安装包: kafka_2.11-2.3.0.tgz

4.2 安装kafka

4.2.1 上传kafka安装包

在其中一台服务器上,上传安装包:

cd  /usr/local/tmp/   # 跳转到临时目录
rz   #通过rz 上传

4.2.2 安装
1、解压

tar  -zxvf  kafka_2.11-2.3.0.tgz  # 解压
mv  kafka_2.11-2.3.0  kafka  #重命名
mv  kafka/  /topinfo/  # 将解压包拷贝到指定目录

2、修改server.properties
进入kafka的config目录

cd  /topinfo/kafka/config
vi  server.properties  #修改配置

修改内容如下:

# broker的id
broker.id=0
# 修改监听的地址, ip 为本机的ip
listeners=PLAINTEXT://192.168.90.225:9092
# 修改日志目录
log.dirs=/topinfo/kafka/data/kafka-logs
# 连接zookeeper集群
zookeeper.connect=192.168.90.225:2181,192.168.90.226:2181,192.168.90.227:2181
# 可删除topic
delete.topic.enable=true

3、创建对应的日志目录

mkdir  -p  /topinfo/kafka/data/kafka-logs

4、将kafka文件夹复制到另外的两个节点上

scp  -r  /topinfo/kafka/ [email protected]:/topinfo/  # 远程复制

scp  -r  /topinfo/kafka/ [email protected]:/topinfo/  # 远程复制
mkdir  -p  /topinfo/kafka/data/kafka-logs  # 另外两台上创建目录

5、创建相同的logDir目录,且修改每个节点对应的server.properties文件的broker.id:
192.168.90.225 为 1
192.168.90.227 为 2

vi  /topinfo/kafka/config/server.properties  #打开文件修改对应的broker.id

4.2.3 设置环境变量

设置环境变量

# 打开profile
vim /etc/profile
#加入以下内容
export KAFKA_HOME=/topinfo/kafka
export PATH=$KAFKA_HOME/bin:$PATH
#保持退出后,执行以下命令,立即生效
source /etc/profile

4.2.4 启动kafka

注:启动时:先启动 zookeeper,后启动 kafka;关闭时:先关闭 kafka,后关闭zookeeper

1、分别在每个节点上执行命令,启动zookeeper,如果已经启动或,则跳过

zkServer.sh  start

2、启动kafka

kafka-server-start.sh  /topinfo/kafka/config/server.properties &

4.3 测试

4.3.1 创建topic

kafka-topics.sh --create --zookeeper 192.168.90.225:2181,192.168.90.226:2181,192.168.90.227:2181 --replication-factor 3 --partitions 3 --topic test

4.3.2 显示topic信息

kafka-topics.sh --describe --zookeeper 192.168.90.225:2181,192.168.90.226:2181,192.168.90.227:2181 --topic test
 

4.3.3 列出topic

kafka-topics.sh --list --zookeeper 192.168.90.225:2181,192.168.90.226:2181,192.168.90.227:2181

4.3.4 创建生产者

在master节点上 测试生产消息

kafka-console-producer.sh  --broker-list  192.168.90.225:9092  -topic  test

4.3.5 创建消费者

在worker节点上 测试消费

kafka-console-consumer.sh --bootstrap-server 192.168.90.225:9092 -topic test --from-beginning

4.3.6 删除topic和关闭服务

删除topic

kafka-topics.sh --delete --zookeeper 192.168.90.225:2181,192.168.90.226:2181,192.168.90.227:2181 --topic test

关闭kafka服务,在三台机器上执行kafka-server-stop.sh命令:

kafka-server-stop.sh

关闭zookeeper:

zkServer.sh  stop

你可能感兴趣的:(kafka)