kafka集群搭建
1.安装JDK
因为kafka是java编写的,运行需要依赖jdk环境
# yum安装,不需要自己配置环境变量
yum install -y java-1.8.0-openjdk-devel.x86_64
2.搭建zookeeper集群
由于kafka的服务协调是基于zookeeper实现的,所以要先下载安装zookeeper
# zookeeper集群环境搭建
# 先建好相应的文件夹
mkdir /usr/local/zk-cluster
# 下载zookeeper,放到zk-cluster下
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
# 解压
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
# 复制解压后的文件夹并重命名
cp -R apache-zookeeper-3.5.7-bin zk1
# 在zk1中创建两个文件夹data和logs,在data中创建myid文件,并写入1,作为服务编号
mkdir data
vi myid
mkdir logs
# 先修改conf中配置文件名称
cp zoo.sample.cfg zoo.cfg
# 修改文件路径
dataDir=/usr/local/zk-cluster/zk1/data
dataLogDir=/usr/local/zk-cluster/zk1/logs
# 如果是一台机器不能一样
clientPort=2181
# 增加通信内容三台机器一样:server.服务编号=服务地址:LF通信端口:选举端口
# 服务id就是data中myid文件的内容
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
# zk1 zk2创建
# 复制zk1
cp -R zk1 zk2
cp -R zk1 zk3
# 修改myid文件的内容分别为2和3
# 修改配置配置文件中的端口以及data和logs的路径
# 然后到bin路径下分别启动zk1 zk2 zk3
./zkServer.sh start
3.搭建kafka集群
# 创建集群文件夹
mkdir /usr/local/kafka-cluster
# 下载kafka到集群文件夹
wget http://mirror.bit.edu.cn/apache/kafka/2.4.0/kafka_2.13-2.4.0.tgz
# 解压
tar -zxvf kafka_2.13-2.4.0.tgz
# 重命名
cp kafka_2.13-2.4.0.tgz kafka1
# kafka1中创建保存消息日志的文件data
mkdir data
# 修改配置文件
vi kafka1/config/server.properties
# kafka的broker编号,在集群中不能一样
broker.id=1
# 端口号
port=9092
# 保存消息日志的文件目录
log.dirs=/usr/local/kafka-cluste/kafka1/data
# zookeeper的集群地址
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
# 其他使用默认即可
# kafka2 kafka3搭建
# 复制kafka1
cp -R kafka1 kafka2
cp -R kafka1 kafka3
# 修改配置文件中的broker.id分别为2和3
# 修改log.dirs和端口号
# 分别到kafka的bin下启动kafka1、kafka2、kafka3,也可以做成脚本一起启动,启动时要指定配置文件
./kafka-server-start.sh -daemon /usr/local/kafka-cluster/kafka1/config/server.properties
4.遇到的问题
因为我三个kafka是装在一台机器上的,机器上还有大量其他进程,剩余内存较少,而kafka启动时需要1G的内存,导致我三个kafka只能启动其中的两个。关闭其他进程或者修改启动命令可以解决。
查看kafkaServer.out日志:
查看kafka-server-start.sh脚本内容: