工欲善其事必先利其器,我们想了解Kafka的话,必须先搭建Kafka的运行环境,启动Kafka
由于Kafka一般都是分布式集群来支持高并发和高可用的,所以我们这里也使用分布式集群的方法来搭建Kafka的运行环境
Ip:Port | Kafka Version | Kafka Port | Zookeeper Version | Zookeeper Port |
---|---|---|---|---|
192.168.56.105 | 2.3.0 | 9092 | 3.5.5 | 2181 |
192.168.56.106 | 2.3.0 | 9092 | 3.5.5 | 2181 |
192.168.56.107 | 2.3.0 | 9092 | 3.5.5 | 2181 |
Zookeeper集群环境搭建
Kafka依赖Zookeeper的环境,我们首先是需要安装zookeeper的集群环境,虽然Kafka内部有整合zookeeper的环境,但是我们还是来手动安装下zookeeper的集群环境,更好的理解Kafka和zookeeper的关系
按照我们上面规划好的ip和port来搭建zookeeper的运行环境,
Zookeeper是依赖Java环境的,这里安装Java环境的步骤省略。。。
## 在usr/local下下载 zookeeper 的安装包
cd /usr/local
## 下载 zookeeper 的安装包 记住下载 bin的安装包 否则启动的时候会缺少lib依赖
wget http://mirror.bit.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz
## 解压
tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz
mv apache-zookeeper-3.5.5-bin apache-zookeeper-3.5.5
## 进入kafka目录下,新增配置文件,名称必须是zoo.cfg
cd /usr/local/apache-zookeeper-3.5.5/conf
cp zoo_sample.cfg zoo.cfg
## 编辑配置文件
vi zoo.cfg
...
## 修改数据文件夹路径
dataDir=/usr/local/apache-zookeeper-3.5.5/data
dataLogDir=/usr/local/apache-zookeeper-3.5.5/logs
## 在文件末尾添加 server.x 其中的x 就是 myid 的值
server.1=192.168.56.105:2888:3888
server.2=192.168.56.106:2888:3888
server.3=192.168.56.107:2888:3888
...
## 创建data文件夹 logs文件夹
mkdir /usr/local/apache-zookeeper-3.5.5/data
mkdir /usr/local/apache-zookeeper-3.5.5/logs
## 创建myid
cd data
echo 1 > myid
## 创建myid文件
## 编辑配置文件 profile 追加如下的配置
vi /etc/profile
...
ZK_HOME=/usr/local/apache-zookeeper-3.5.5
export PATH=$ZK_HOME/bin:$PATH
...
## 配置文件文件生效
source /etc/profile
这样我们就配置好了一台服务上的zookeeper的环境,基于同样的配置,我们来配置106和107上的配置,除了myid不一样,分别是2和3之外,其他的配置都是一样的。
## 在105服务器上执行如下的命令
cd /usr/local
## 将105上面的zookeeper复制到 106和107 上
scp -r apache-zookeeper-3.5.5/ root@192.168.56.106:/usr/local/
scp -r apache-zookeeper-3.5.5/ root@192.168.56.107:/usr/local/
## 进入到 zookeeper的data目录下 然后执行 echo x > myid x在106上是2 在107上是3
cd /usr/apche-zookeeper-3.5.5/data
echo 2 > myid
## 修改 /etc/profile 添加zookeeper的环境变量
vi /etc/profile
....
ZK_HOME=/usr/local/apache-zookeeper-3.5.5
export PATH=$ZK_HOME/bin:$PATH
....
## 环境设置生效
source /etc/profile
设置结束之后,每个节点启动zookeeper
## 启动zookeeper
cd /usr/local/apache-zookeeper-3.5.5
./bin/zkServer.sh start
## 查看启动情况
./bin/zkServer.sh status
所有的节点都需要启动,可以在所有的节点都启动完成之后查看每个节点的启动情况,看看leader和follower的情况
Kafka分布式集群环境搭建
## 下载 kafka
cd /usr/local
wget http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz
## 解压
tar -xzf kafka_2.12-2.3.0.tgz
## 进入kafka目录下
cd /usr/local/kafka_2.12-2.3.0
## 编辑 环境变量配置
vi /etc/profile
...
KAFKA_HOME=/usr/local/kafka_2.12-2.3.0
export PATH=$KAFKA_HOME/bin:$PATH
...
## 环境变量设置生效
source /etc/profile
## 编辑 config下的server.properties 修改如下的配置
vi config/server.properties
...
broker.id=1
listeners=PLAINTEXT://192.168.56.105:9092
zookeeper.connect=192.168.56.105:2181,192.168.56.106:2181,192.168.56.107:2181
log.dirs=/usr/local/kafka_2.12-2.3.0/logs
...
以上我们就配置好了kafka的参数,下面我们需要将kafka的安装包同步到其他的服务上,并且修改其中的参数
broker.id=x (x在192.168.56.106上是2 在192.168.56.107上是3)
listeners=PLAINTEXT://IP:9092 (IP是各个主机的ip地址)
## 将kafka的文件同步到106和107上
scp -r /usr/local/kafka_2.12-2.3.0 root@192.168.56.106:/usr/local/
scp -r /usr/local/kafka_2.12-2.3.0 root@192.168.56.107:/usr/local/
## 修改每个服务上的 broker.id=x 和 listeners
broker.id=x (x 在106上为2 在107上为3)
listeners=PLAINTEXT://IP:9092 (IP 为给个服务的ip)
配置完成之后,启动各个服务节点
## 启动kafka服务
cd /usr/local/kafka_2.12-2.3.0
./bin/kafka-server-start.sh -daemon config/server.properties
创建topic
## 创建 topic
./bin/kafka-topics.sh --create --zookeeper 192.168.56.105:2181 --replication-factor 3 --partitions 1 --topic test-topic
## 查看指定topic的信息
./bin/kafka-topics.sh --describe --zookeeper 192.168.56.105:2181 --topic test-topic
单机版的Kafka环境搭建
我们先搭建好 Broker1上的环境
## 在usr/local下下载kafka的安装包
cd /usr/local
## 下载 kafka的安装包
wget http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz
## 解压
tar -xzf kafka_2.12-2.3.0.tgz
## 进入kafka目录下
cd /usr/local/kafka_2.12-2.3.0
kafka的运行时依赖zookeeper的,所以我们先要启动zookeeper才行,如果本机中没有安装zookeeper,可以使用kafka中打包好的zookeeper
## 在kafka的目录下启动zookeeper(默认端口是2181)
bin/zookeeper-server-start.sh config/zookeeper.properties
## 启动kafka的服务,由于上述zookeeper不是后台启动,所以我们需要另开一个SSH渠道(默认端口9092)
bin/kafka-server-start.sh config/server.properties &