基于RHEL7.2搭建kafka集群记录
说明:Kafka是一个分布式、可分区、可复制的消息系统。
Kafka将消息以topic为单位进行归纳;Kafka发布消息的程序称为producer,也叫生产者;Kafka预订topics并消费消息的程序称为consumer,也叫消费者;
当Kafka以集群的方式运行时,可以由一个服务或者多个服务组成,每个服务叫做一个broker,运行过程中producer通过网络将消息发送到Kafka集群,集群向消费者提供消息。
https://kafka.apache.org/
一、安装条件
1.在设置Kafka群集之前,需要一个Zookeeper群集。
2.启动三个实例。 确保您允许安全组中的Zookeeper和Kafka实例之间的流量。
3.使用以下命令设置三个实例的主机名进行识别。
hostnamectl set-hostname (kafka1,kafka2,kafka3)
准备三台测试服务器:
10.1.73.8 kafka1
10.1.73.7 kafka2
10.1.73.6 kafka3
二、安装java
安装jdk
# yum -y install java-1.8.0-openjdk
# java -version
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
# vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
export JRE_HOME=/usr/lib/jvm/jre
:wq 保存、退出
# source /etc/profile
三、安装ZooKeeper集群
# userad kafka
# cd /home/kafka
# wget https://apache.org/dist/zookeeper/current/zookeeper-3.4.10.tar.gz
# mkdir -p /opt/kafka
# mkdir -p /opt/kafka
# mkdir -p /opt/Zookeeper/data
# mkdir -p /opt/Zookeeper/logs
# chown kafka: /opt/* -R
# su - kafka
$ tar zxvf zookeeper-3.4.10.tar.gz -C /opt/Zookeeper/
$ cp /opt/Zookeeper/zookeeper-3.4.10/conf/zoo_sample.cfg /opt/Zookeeper/zookeeper-3.4.10/conf/zoo.cfg
$ vi /opt/Zookeeper/zookeeper-3.4.10/conf/zoo.cfg
tickTime=2000 #Zookeeper服务器心跳时间,单位毫秒
dataDir=/opt/Zookeeper/data # 数据持久化路径
dataLogDir=/opt/Zookeeper/logs # 日志存放目录
clientPort=2181 # 连接端口
initLimit=5 # 投票选举新leader的初始化时间
syncLimit=2 # Leader与Follower之间的最大响应时间单位,响应超过syncLimit*tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer
server.1=kafka1:2888:3888
server.2=kafka2:2888:3888
server.3=kafka3:2888:3888
$ vim /opt/Zookeeper/data/myid
分别在kafka1、kafka2、kafka3的/opt/Zookeeper/data/myid 上创建建,然后myid里分别写入1、2、3
切换到root用户,修改环境变量
su -
# vi /etc/profile
ZOOKEEPER=/opt/Zookeeper/zookeeper-3.4.10/
PATH=$PATH:$ZOOKEEPER/bin
# source /etc/profile
$ /opt/Zookeeper/zookeeper-3.4.10/bin/zkServer.sh start 启动
$ /opt/Zookeeper/zookeeper-3.4.10/bin/zkServer.sh status 查看启动状态
$ ss -ntlup | grep 2181
tcp LISTEN 0 50 :::2181 :::* users:(("java",pid=29113,fd=25))
四、安装kafka集群
wget https://www.apache.org/dyn/closer.cgi?path=/kafka/0.10.2.1/kafka_2.11-0.10.2.1.tgz
$ tar zxvf kafka_2.11-0.10.2.1.tgz -C /opt/kafka/
$ cd /opt/kafka/kafka_2.11-0.10.2.1/
$ mkdir -p /opt/kafka/logs
$ vim config/server.properties
broker.id=0
host.name=kafka1
advertised.host.name=kafka1
zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181
broker.id=1
host.name=kafka2
advertised.host.name=kafka2
zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181
broker.id=2
host.name=kafka3
advertised.host.name=kafka3
zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181
注:kafka1、kafka2、kafka3均需要依次修改如上参数
$ vim config/zookeeper.properties
dataDir=/opt/Zookeeper/data
注:kafka1、kafka2、kafka3均需要依次修改参数同上
启动:
$ nohup ./bin/kafka-server-start.sh config/server.properties > ../logs/kafka.log 2>1 &
五、Kafka集群测试
5.1 创建topic--test
$ cd /opt/kafka/kafka_2.11-0.10.2.1/
$ bin/kafka-topics.sh --create --zookeeper kafka1:2181,kafka2:2181,kafka3:2181 --replication-factor 1 --partitions 1 --topic test
5.2 列出已创建的topic列表
$ bin/kafka-topics.sh --list --zookeeper localhost:2181
5.3 模拟客户端去发送消息
$ bin/kafka-console-producer.sh --broker-list kafka1:2181,kafka2:2181,kafka3:2181 --topic test
5.4 模拟客户端去接受消息
$ bin/kafka-console-consumer.sh --zookeeper kafka1:2181,kafka2:2181,kafka3:2181 --from-beginning --topic test
至此完成基于RHEL7.2的kafka集群搭建。
评论