1 准备工作

  • 为方便配置,此处使用主机名来代替IP,实际环境中还是IP较好
1
2
3
4
5
6
7
[root@h2 ~]$ cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.131 h1
192.168.1.132 h2
192.168.1.133 h3
  • java环境
1
2
3
4
5
[root@h2 ~]$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
[root@h2 installer]#

2 搭建集群

2.1 单节点配置

  • 下载解压
1
2
$ wget http://mirrors.hust.edu.cn/apache/kafka/0.10.2.0/kafka_2.10-0.10.2.0.tgz
$ tar -zxvf kafka_2.10-0.10.2.0.tgz
  • 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 个人习惯将软件放在这里
$ mkdir /data/kafka-logs
$ mv kafka_2.10-0.10.2.0 /data/
# 编辑kafka配置文件
$ vim /soft/kafka_2.10-0.10.2.0/config/server.properties
# 按需更改以下内容
broker.id=1 # 相当于zookeeper中的myid
port=9092
host.name=h1
log.dirs=/data/kafka-logs
zookeeper.connect=h1:2181,h2:2181,h3:2181
default.replication.factor=2
replica.fetch.max.bytes=5048576

2.2 配置其他节点

  • 复制到主机h2和h3
1
2
3
4
5
6
7
8
9
10
# 递归复制整个目录到h2
$ scp -r /soft/kafka_2.10-0.10.2.0/ root@h2:/soft/
# 在h2上建立kafka所需的数据目录
$ ssh root@h2 mkdir /data/kafka-logs
# 递归复制整个目录到h3
$ scp -r /soft/kafka_2.10-0.10.2.0/ root@h3:/soft/
# 在h3上建立kafka所需的数据目录
$ ssh root@h3 mkdir /data/kafka-logs
  • 按需修改h2和h3上的配置文件server.properties内容即可

2.3 启动

  • 分别启动三台机器上的kafka,以主机h1为例:
1
2
3
4
5
6
[root@h1 ~]$ cd /soft/kafka_2.10-0.10.2.0/
[root@h1 kafka_2.10-0.10.2.0]$ bin/kafka-server-start.sh -daemon config/server.properties
[root@h1 kafka_2.10-0.10.2.0]$ jps
7190 QuorumPeerMain # zk进程
8588 Jps
8558 Kafka # kafka的服务进程

2.4 测试

1
2
3
4
5
6
7
8
9
10
# 创建一个topic(主机h1)
$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 1 --topic tp-test
Created topic "tp-test".
# 查看topic列表
$ bin/kafka-topics.sh --list --zookeeper localhost:2181
tp-test
$ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic tp-test
Topic:tp-test PartitionCount:1 ReplicationFactor:2 Configs:
Topic: tp-test Partition: 0 Leader: 3 Replicas: 3,1 Isr: 3,1

此时在主机h2和h3上分别查看,结果是一致的。

参考资料