一、安装环境:
- 安装软件:jdk-8u212-linux-x64.tar.gz、zookeeper- 3.4.12.tar.gz、kafka_2.10-0.10.1.1.tgz
- 安装目录:/opt/jdk1.8.0_212、/opt/zookeeper- 3.4.12、/opt/kafka_2.10-0.10.1.1
- Linux OS:CentOS release 6.5 (Final)
- 安装机器:集群有3台机器,主机名分别为:node01(主)、node02(从)、node03(从)
二、安装步骤
1. jdk安装与配置
1.1. 从官网下载jdk-8u212-linux-x64.tar.gz之后,将其拷贝到/opt目录下解压,并获取其安装目录:
[root@node01 opt]$ tar zxf jdk-8u212-linux-x64.tar.gz
[root@node01 opt]$ cd jdk1.8.0_212/
[root@node01 jdk1.8.0_212]$ pwd
/opt/jdk1.8.0_212
1.2. 配置环境变量:
修改/etc/profile文件,添加修改内容:
export JAVA_HOME=/opt/jdk1.8.0_212
export PATH=$JAVA_HOME/bin:$PATH
修改完保存退出,并执行如下命令使其生效:
source /etc/profile 或 . /etc/profile
1.3. 验证jdk环境变量是否配置成功,提示如下则配置成功:
[root@node01 jdk1.8.0_212]$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
集群中其他节点也同样方式配置JDK。
2. Zookeeper集群安装与配置
ZooKeeper用来Kafka元数据信息管理,包括:集群、broker、topic、partition等内容。
ZooKeeper是个开源的分布式的协调服务。分布式应用程序开源基于ZooKeeper实现诸如:数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、配置维护功能。
在ZooKeeper中有3个角色,分别是:leader、follower、observer,同一时刻ZooKeeper集群中只会有一个leader,其他都是follower和observer。observer不参与投票,默认情况下只有leader和follower两个角色。
2.1. 同样将zookeeper- 3.4.12.tar.gz 拷贝到 /opt 目录下解压:
[root@node01 opt]$ tar zxf zookeeper-3.4.12.tar.gz
[root@node01 opt]$ cd zookeeper-3.4.12
[root@node01 zookeeper-3.4.12]$ pwd
/opt/zookeeper-3.4.12
2.2. 修改配置文件:
进入conf目录,拷贝 zoo_sample.cfg 并重命名为 zoo.cfg :
[root@node01 zookeeper-3.4.12]$ cd conf/
[root@node01 conf]$ cp zoo_sample.cfg zoo.cfg
修改zoo.conf文件主要几项参数,供参考:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper-3.4.12/data
dataLogDir=/opt/zookeeper-3.4.12/logs
clientPort=2181
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
默认情况下,没有快照日志文件目录dataDir和事务日志文件目录dataLogDir需要手动创建:
[root@node01 zookeeper-3.4.12]$ mkdir data logs
并在data目录下创建文件myid,写入一个数值:
[root@node01 zookeeper-3.4.12]$ echo 1 > data/myid
2.3. 将node01上配置完的zookeeper-3.4.12/文件夹,拷贝到集群其他节点上,本例中有node02和node03:
[root@node01 opt]$ for i in `seq 2 3` ; do scp -r zookeeper-3.4.12/ root@node0$i:/opt
拷贝完之后,分别修改myid文件值即可。本例中node02的myid为2、node03的myid为3;zoo.cfg中的2181(监听客户端)、2888(leader与follower之间的通讯)、3888(leader选举使用)等端口不冲突则默认即可。
2.4. 启动ZooKeeper集群,各节点下执行命令:
[root@node01 zookeeper-3.4.12]$ sh bin/zkServer.sh start conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
status命令输出如上信息即启动成功,jps命令输出QuorumPeerMain:
[root@node01 zookeeper-3.4.12]$ sh bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader
(从节点则为:Mode: follower )
[root@node01 zookeeper-3.4.12]$ jps
18813 QuorumPeerMain
Zookeeper安装和配置参考:
参考链接1
参考链接2
参考链接3
参考链接4
参考链接5
启动报错问题参考:
zookeeper的Will not attempt to authenticate using SASL (无法定位登录配置)
其他参考:
Zookeeper 在 Kafka 中的作用(1)
Zookeeper 在 Kafka 中的作用(2)
命令行zkCli.sh使用指南
3. Kafka的安装与配置
3.1. 下载安装包kafka_2.10-0.10.1.1.tgz并解压:
[root@node01 opt]$ tar zxf kafka_2.10-0.10.1.1.tgz
3.2. 修改config目录下的server.properties,主要几项参数修改:
# 集群中全局唯一的id
broker.id=0
# socket监听的地址,端口默认为9092,建议进行显式配置,避免多网卡时解析有误
listeners=PLAINTEXT://node01:9092
# 各个topic消息数据目录
log.dirs=/opt/kafka_2.10-0.10.1.1/kafka-logs
# zookeeper连接地址,默认端口2181
zookeeper.connect=node01:2181,node02:2181,node03:2181
其中log.dirs目录需要手动创建:
[root@node01 kafka_2.10-0.10.1.1]$ mkdir kafka-logs
3.3. 将node01节点上修改好的kafka_2.10-0.10.1.1/文件夹,拷贝到集群其他节点:
[root@node01 opt]$ for i in `seq 2 3` ; do scp -r kafka_2.10-0.10.1.1/ root@node0$i:/opt
并修改broker.id和listers2个参数,9092(broker监听客户端)端口不冲突则默认即可,本例中修改:
node02:
broker.id=1
listers=PLAINTEXT://node02:9092
node03:
broker.id=2
listers=PLAINTEXT://node03:9092
3.4. 启动Kafka集群,分别到各节点执行命令,以下命令为kafka后台方式启动:
[root@node01 kafka_2.10-0.10.1.1]$ sh bin/kafka-server-start -daemon config/server.properties
jps命令输出Kafka即启动成功:
[root@node01 kafka_2.10-0.10.1.1]$ jps
18681 Kafka
Kafka安装和配置参考:
参考链接1
参考链接2
参考链接3
参考链接4
其他参考:
kafka listeners 和 advertised.listeners 的应用
B站-极客时间-如何高效阅读源码-kafka