图片
kafka1(192.168.150.111)
kafka2(192.168.150.112)
kafka3(192.168.150.113)
hostnamectl set-hostname kafka1
hostnamectl set-hostname kafka2
hostnamectl set-hostname kafka3
在Windows系统中修改hosts文件,填入如下内容:
192.168.150.111 kafka1 192.168.150.112 kafka2 192.168.150.113 kafka3
图片
图片
在3台Linux的/etc/hosts文件中,填入如下内容(3台都要添加)。
192.168.150.111 kafka1 192.168.150.112 kafka2 192.168.150.113 kafka3
后续安装的集群化软件,多数需要远程登录以及远程执行命令,我们可以简单起见,配置三台Linux服务器之间的免密码互相SSH登陆。
在每一台机器都执行:
ssh-keygen -t rsa -b 4096
一路回车到底即可 2. 在每一台机器都执行:
ssh-copy-id kafka1 ssh-copy-id kafka2 ssh-copy-id kafka3
执行完毕后,kafka1、kafka2、kafka3之间将完成root用户之间的免密互通。
测试免密登录 完成以上步骤后,你应该能够使用SSH免密登录到目标服务器了。只需执行以下命令:ssh 用户名@remote_host。
ssh rootmkafka1 ssh root@kafka2 ssh root@kafka3
#1. 安装ntp软件 yum install -y ntp #2. 更新时区 rm -f /etc/localtime;sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #3. 同步时间 ntpdate -u ntp.aliyun.com #4. 开启ntp服务并设置开机自启 systemctl start ntpd systemctl enable ntpd
当前使用发行版:3.8.4版。
可以在https://downloads.apache.org/zookeeper/选择对应版本下载:
图片
注意:以下操作,kafka1节点执行,以root身份登陆。
1.上传zookeeper安装包到kafka1节点中。
2.创建/export/server/。
mkdir -p /export/server/
解压缩安装包到/export/server/中。
tar -zxvf apache-zookeeper-3.8.4.tar.gz -C /export/server/
3.在 cd /export/server/apache-zookeeper-3.8.4-bin/conf/创建zoo.cfg。
# 复制zoo_sample.cfg命名为zoo.cfg cp zoo_sample.cfg zoo.cfg
4.修改Zookeeper保存数据的目录。
mkdir -p /export/server/apache-zookeeper-3.8.4-bin/data
5.编辑zoo.cfg文件。
vim zoo.cfg
内容如下:
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/export/server/apache-zookeeper-3.8.4-bin/data # the port at which the clients will connect clientPort=2181 server.1=192.168.150.111:2888:3888 server.2=192.168.150.112:2888:3888 server.3=192.168.150.113:2888:3888
图片
创建myid文件,配置服务器编号 服务器zookeeper的dataDir对应目录下创建 myid 文件,内容为对应ip的zookeeper服务器编号。
mkdir -p /export/server/apache-zookeeper-3.8.4-bin/data echo 1 > /export/server/apache-zookeeper-3.8.4-bin/data/myid
7.分发zookeeper文件夹
# 在kafka1执行如下命令 cd /export/server scp -r /export/server/apache-zookeeper-3.8.4-bin kafka2:`pwd`/ scp -r /export/server/apache-zookeeper-3.8.4-bin kafka3:`pwd`/
8.在kafka2上修改myid
echo 2 > /export/server/apache-zookeeper-3.8.4-bin/data/myid
9.在kafka3上修改myid
echo 3 > /export/server/apache-zookeeper-3.8.4-bin/data/myid
本次使用的Kafka版本为2.4.1,是2020年3月12日发布的版本。 可以注意到Kafka的版本号为:kafka_2.12-2.4.1,因为kafka主要是使用scala语言开发的,2.12为scala的版本号。http://kafka.apache.org/downloads可以查看到每个版本的发布时间。
图片
1.将Kafka的安装包上传到虚拟机。
tar -zxvf kafka_2.12-2.4.1.tgz -C /export/server/ cd /export/server/kafka_2.12-2.4.1/
2.修改 server.properties。
cd /export/server/kafka_2.12-2.4.1/config vim server.properties
内容如下:
# 指定broker的id broker.id=0 # 指定Kafka数据的位置 log.dirs=/export/server/kafka_2.12-2.4.1/data # 配置zk的三个节点 zookeeper.cnotallow=kafka1:2181,kafka2:2181,kafka3:2181
3.将安装好的kafka复制到另外两台服务器。
cd /export/server scp -r apache-zookeeper-3.8.4 kafka2:`pwd`/ scp -r apache-zookeeper-3.8.4 kafka3:`pwd`/
4.修改另外两个节点的broker.id分别为1和2。
---------kafka1-------------- cd /export/server/kafka_2.12-2.4.1/config vim erver.properties broker.id=1
---------kafka2-------------- cd /export/server/kafka_2.12-2.4.1/config vim erver.properties broker.id=2
vim /etc/profile JAVA_HOME=/export/server/jdk1.8.0_361 KAFKA_HOME=/export/server/kafka_2.12-2.4.1 ZOKEEPER_HOME=/export/server/apache-zookeeper-3.8.4-bin/ PATH=$PATH:$JAVA_HOME/bin:$KAFKA_HOME/bin:$ZOKEEPER_HOME/bin export PATH 分发到各个节点 scp /etc/profile kafka2:$PWD scp /etc/profile kafka2:$PWD 每个节点加载环境变量 source /etc/profile
1.在三台机器上启动Zookeeper。
zkServer.sh start
图片
2.在三台机器上查看Zookeeper状态。
zkServer.sh status
图片
图片
[root@kafka1 ~]# kafka-server-start.sh /export/server/kafka_2.12-2.4.1/config/server.properties [root@kafka2 ~]# kafka-server-start.sh /export/server/kafka_2.12-2.4.1/config/server.properties [root@kafka3 ~]# kafka-server-start.sh /export/server/kafka_2.12-2.4.1/config/server.properties
kafka1节点的Cluster Id:
图片
kafka2节点的Cluster Id:
图片
kafka3节点的Cluster Id:
图片
1.创建主题(名字叫test):
kafka-topics.sh --create --bootstrap-server kafka1:9092 --topic test
2.查询当前kafka的所有主题:
kafka-topics.sh --bootstrap-server kafka3:9092 --list