kafka集群搭建
- 安装java环境
- 搭建zookeeper集群
- 搭建kafka集群
1. 准备工作
1.1 安装包
jdk-8u111-linux-x64.tar.gz
zookeeper-3.5.2-alpha.zip
kafka_2.11-2.4.1 .tgz
1.2 准备至少3台主机
如果没有物理机,也可以弄3台虚拟机。本列用的是虚拟机,下面是3台电脑的配置
主机名 |
IP地址 |
硬件配置 |
server-1 |
192.168.187.130 |
4CPU、4G内存、20G存储 |
server-2 |
192.168.187.132 |
4CPU、4G内存、20G存储 |
server-3 |
192.168.187.137 |
4CPU、4G内存、20G存储 |
2. 安装JAVA环境
准备安装包jdk-8u111-linux-x64.tar.gz
在每台主机下执行下面步骤:
将安装包移到/home/roya/platform/java目录下
mv jdk-8u111-linux-x64.tar.gz /home/roya/platform/java
解压文件
tar -zxvf jdk-8u111-linux-x64.tar.gz
重命名文件夹为jdk
mv jdk-8u111-linux-x64 jdk
配置环境变量
用vim打开/etc/profile文件(Linux下配置系统环境变量的文件)
vim /etc/profile
按i进入编辑模式,在文件末尾添加如下JAVA环境变量
export JAVA_HOME=/home/roya/platform/java/jdk
export JRE_HOME=/home/roya/platform/java/jdk/jre
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
添加环境变量后,结果如下图所示,按 esc 退出编辑模式,然后输入:wq ,按回车保存。
最后,需要让该环境变量生效,执行如下代码:
source /etc/profile
检验JAVA是否安装成功
echo $JAVA_HOME # 检验变量值
java -version
java
javac
如果设置正确的话,java -version 会输出 java 的版本信息,java 和 javac 会输出命令的使用指导。
3. 搭建zookeeper集群
准备安装包zookeeper-3.5.2-alpha.zip
在每台主机上执行下面步骤:
将安装包移到/home/roya/platform/java目录下
mv zookeeper-3.5.2-alpha.zip /home/roya/platform/java
解压文件
unzip zookeeper-3.5.2-alpha.zip
重命名文件夹为zookeeper
mv zookeeper-3.5.2-alpha zookeeper
配置zookeeper环境变量,首先打开profile文件
vim /etc/profile
按i进入编辑模式,在文件末尾添加zookeeper环境变量
#set zookeeper environment
export ZK_HOME=//home/roya/platform/java/zookeeper
export PATH=$PATH:$ZK_HOME/bin
保存文件后,让该环境变量生效
source
/etc/profile
打开zookeeper配置文件
cp /home/roya/platform/java /zookeeper/conf/zoo_sample.cfg
/home/roya/platform/java/zookeeper/conf/zoo.cfg
vim /home/roya/platform/java /zookeeper/conf/zoo.cfg
修改zookeeper配置文件
#修改数据文件夹路径
dataDir=/home/roya/platform/java/zookeeper/ zkdata
#在文件末尾添加
server.1=server-1:2888:3888
server.2=server-2:2888:3888
server.3=server-3:2888:3888
#其它不变
server对应的IP解析,必须设置否则服务器间无法正常通讯,
[roya@server-1
etc]$ 在etc ,hosts下添加对应值
192.168.187.130 server-1
192.168.187.132 server-2
192.168.187.137 server-3
创建数据文件夹,zoo.cfg中的dataDir指向该路径
mkdir /home/roya/platform/java/zookeeper/zkdata
在zkdata文件夹下创建myid文件,在myid文件中添加本机的
server ID,在本例中对应关系如下
主机名 |
IP地址 |
zookeeper |
myid |
server-1 |
192.168.187.130 |
server.1 |
1 |
server-2 |
192.168.187.132 |
server.2 |
2 |
server-3 |
192.168.187.137 |
server.3 |
3 |
所以,在server-1中执行下面命令
echo “1” > /home/roya/platform/java/zookeeper/zkdata/myid #server-1主机myid
在server -2中执行下面命令
echo “2” >
/home/roya/platform/java/zookeeper/ zkdata/myid
#server-2主机myid
在kafka-3中执行下面命令
echo “3” > /home/roya/platform/java/zookeeper/
zkdata /myid #server-3主机myid
在每台电脑上启动zookeeper
/home/roya/platform/java/zookeeper/bin/zkServer.sh
start
全部启动后,查看启动结果
/home/roya/platform/java/zookeeper/bin/zkServer.sh
status
4. 搭建kafka集群
准备安装包kafka_2.11-2.4.1.tgz
在每台主机上执行下面步骤:
将安装包移到/home/roya/platform/java目录下
mv kafka_2.11-2.4.1.tgz /home/roya/platform/java
解压文件
tar -zxvf kafka_2.11-2.4.1 .tgz
重命名文件夹为kafka
mv kafka_2.11-2.4.1 kafka
打开配置文件,分别在三台服务器中操作修改配置
[roya@server-1 config]$ vim server.properties
修改配置如下(IP地址应该根据实际情况填写)
server-1:
broker.id=1
listeners=PLAINTEXT://server-1:9092是kafka真正bind的地址,一般设置外网地址
advertised.listeners=PLAINTEXT://server-1:9092
参数的作用就是将Broker的Listener信息发布到Zookeeper中一般设置内网地址
zookeeper.connect=server-1:2181,
server-2:2181, server-3:2181
server-2:
broker.id=2
listeners=PLAINTEXT://server-2:9092
advertised.listeners=PLAINTEXT://server-2:9092
zookeeper.connect=server-1:2181,
server-2:2181, server-3:2181
server-3:
broker.id=3
listeners=PLAINTEXT://server-3:9092
advertised.listeners=PLAINTEXT://server-3:9092
zookeeper.connect=server-1:2181,
server-2:2181, server-3:2181
启动kafka(要确保zookeeper已启动)
在每台主机上分别启动kafka
[roya@server-1bin]$ ./kafka/bin/kafka-server-start.sh ../config/server.properties&
在其中一台虚拟机(server-1)创建topic
[roya@server-1 bin]$./kafka/bin/kafka-topics.sh –create
–zookeeper server-1:2181 –replication-factor 3 –partitions 3 –topic hotelproduct
查看创建的topic信息
/usr/local/kafka/bin/kafka-topics.sh
–describe –zookeeper server-1:2181 –topic hotelproduct
如图:
查看topic列表:
[roya@server-1 bin]$ ./kafka-topics.sh
–zookeeper server-1:2181 –list
对应的server集群访问,表示搭建成功
结果如下图所示: